我已使用
方法为Remote Notifications
正确设置了我的应用
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void)
并且每次应用收到Apple Push Notification
时都会正确处理。
但我的问题是现在所有情况都会调用此方法。
didFinishLaunchingWithOptions
似乎不再被召唤了?或者launchOptions
是空的?
基本上我使用didReceiveRemoteNotification
作为catch all来处理任何传入的通知,这是我的预期目的,但是当我点击通知本身时,它再次触发didReceiveRemoteNotification
。因此处理通知两次,这是我不想要的。
所以这就是我希望我的应用处理通知的方式:
didReceiveRemoteNotification
答案 0 :(得分:2)
Apple不允许你想要的东西。推送通知按以下方式工作
1)当应用程序未运行且用户单击通知时,将启动应用程序,并在函数 didFinishLaunchingWithOptions 中加载通知的有效负载。
2)当应用程序在后台运行,并且用户单击通知时,应用程序将变为活动状态并调用函数 didReceiveRemoteNotification 。现在,此函数包含通知的有效负载。
3)当应用程序运行并调用推送通知时,将调用函数 didReceiveRemoteNotification ,并且此函数包含通知的有效负载。
4)当应用程序在后台运行或处于非活动状态且收到通知时,在用户单击通知之前无法对通知执行任何操作