我的iOS应用正在安排本地通知,当点按时,该应用会将用户带入我的应用中的指定视图。当我点击通知应用程序打开(它在后台)和方法
- (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也按预期执行,并带我到正确的屏幕。在这个屏幕上,我有一个按钮,通过调用
将我带回应用程序的根视图控制器(主菜单)[self dismissViewControllerAnimated:YES completion:nil];
视图消失,我回到主菜单,但随后立即再次调用应用程序:didReceiveLocalNotification:方法,并再次执行segue。
为什么再次调用该方法(如果不再调用它,我永远不会解除视图控制器),以及如何处理它?</ p>
编辑:以下是创建通知的代码:
- (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];
}
答案 0 :(得分:0)
问题是我在根视图控制器viewDidAppear中创建了一个新通知,并且由于此通知已及时返回,因此立即显示。