application:didReceiveLocalNotification:执行segue,并在segue被解除后再次调用

时间:2014-05-12 15:24:03

标签: ios uilocalnotification

我的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];
}

1 个答案:

答案 0 :(得分:0)

问题是我在根视图控制器viewDidAppear中创建了一个新通知,并且由于此通知已及时返回,因此立即显示。