如果我的应用程序在前台或后台运行,则此工作正常。我收到通知并将其保存在本地数据库中。但是如果应用程序从后台杀死它会收到远程通知,但不会调用以下方法。问题是如果我点击任何一个通知,只有该通知将保存在本地数据库中。
if(canPerformSegueWithIdentifier("segueFoo")) {
self.performSegueWithIdentifier("segueFoo", sender: nil)
}
else {
self.performSegueWithIdentifier("segueBar", sender: nil)
}
func canPerformSegueWithIdentifier(identifier: NSString) -> Bool {
let templates:NSArray = self.valueForKey("storyboardSegueTemplates") as! NSArray
let predicate:NSPredicate = NSPredicate(format: "identifier=%@", identifier)
let filteredtemplates = templates.filteredArrayUsingPredicate(predicate)
return (filteredtemplates.count>0)
}
答案 0 :(得分:1)
从Apple文档中,如果用户硬关闭应用程序,则不会调用该方法。
此外,如果您启用了远程通知后台模式, 系统启动您的应用程序(或从暂停状态唤醒它) 并在远程通知时将其置于后台状态 到达。 但是,系统不会自动启动您的应用 用户强行退出。在这种情况下,用户必须重新启动 您的应用程序或在系统尝试启动之前重新启动设备 你的应用程序会再次自动。
答案 1 :(得分:0)
如果要从viewDidLoad
启动特定的有效负载字典,则只需调用以下内容:
UILocalNotification *localNotif =
[launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
你以这种方式得到userInfo
:
NSString *msgType = [localNotif objectForKey:@"messageType"];
现在你可以采取相应的行动。这仅适用于您在标题中说明的情况。当应用未运行时#39; (终止)