Apple Push Notification 设置 Remote Notifications 方法覆盖其他方法

Apple Push Notification setting up Remote Notifications method overrides other methods

我已经使用

方法为 Remote Notifications 正确设置了我的应用程序

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void)

现在每次应用收到 Apple Push Notification.

时它都会正确处理它

但我的问题是现在所有实例都在调用此方法。

didFinishLaunchingWithOptions好像不叫了?或者 launchOptions 是空的?

基本上我使用 didReceiveRemoteNotification 作为一个捕获所有来处理任何传入的通知,这是我的预期目的,但是当我点击通知本身时,它再次触发 didReceiveRemoteNotification。因此处理通知两次,这是我不想要的。

这就是我希望我的应用程序处理通知的方式:

苹果不允许你想要的。推送通知按以下方式工作

1) 当应用程序不是运行,并且用户点击通知时,应用程序被启动并且通知的有效载荷被加载到函数didFinishLaunchingWithOptions.

2) 当应用程序在后台 运行 并且用户单击通知时,应用程序变为活动状态并调用函数 didReceiveRemoteNotification。现在此函数包含通知的有效负载。

3) 当应用程序 运行 并调用推送通知时,函数 didReceiveRemoteNotification 被调用,该函数包含通知的有效负载。

4) 当应用程序 运行 在后台或处于非活动状态并且收到通知时,在用户单击通知之前无法对通知执行任何操作