gpt4 book ai didi

ios - 应用程序 :didReceiveLocalNotification: performs segue, 并在 segue 被解雇后再次被调用

转载 作者:行者123 更新时间:2023-12-01 16:41:52 33 4
gpt4 key购买 nike

我的 iOS 应用程序正在安排本地通知,当用户被点击时,它会将用户带到我的应用程序中的指定 View 。当我点击通知时,应用程序打开(它在后台)和方法

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
application.applicationIconBadgeNumber = 0;
[self handleNotification:notification];
}

-(void) handleNotification:(UILocalNotification *)notification
{
NSString *type = [notification.userInfo objectForKey:NOTIFICATION_TYPE_KEY];
if([type isEqualToString:TYPE_MESSAGE])
{
[self.window.rootViewController performSegueWithIdentifier:@"SeeMessagesSegue" sender:self];
}
}

被称为,因为他们应该。 segue 也按预期执行,并将我带到正确的屏幕。在这个屏幕上,我有一个按钮,可以通过调用将我带回到应用程序的 Root View Controller (主菜单)
[self dismissViewControllerAnimated:YES completion:nil];

View 消失了,我回到主菜单,但随后立即再次调用 application:didReceiveLocalNotification: 方法,并再次执行 segue。

为什么再次调用该方法(我永远不会在没有再次调用它的情况下关闭 View Controller ),以及如何处理这个问题?

编辑:这是创建通知的代码:
- (void)scheduleNotificationWithMessage:(Message *) msg
{
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
return;
localNotif.fireDate = msg.fireDate;
localNotif.timeZone = [NSTimeZone defaultTimeZone];

localNotif.alertBody = msg.text;
localNotif.alertAction = NSLocalizedString(@"notification_open_text", nil);

localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber = 1;

NSDictionary *infoDict = [NSDictionary dictionaryWithObject:msg.type forKey: NOTIFICATION_TYPE_KEY];
localNotif.userInfo = infoDict;

[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
}

最佳答案

问题是我在 Root View Controller 的 viewDidAppear 中创建了一个新通知,并且由于该通知及时返回,它立即出现。

关于ios - 应用程序 :didReceiveLocalNotification: performs segue, 并在 segue 被解雇后再次被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23612977/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com