后台提取执行时间与iOS 10 UserNotifications没有用户交互

在iOS 10之前的推送通知API中,我可以轻松地运行由收到推送通知触发的后台作业。 刚刚收到 – 用户根本不需要进行交互。 现在看来,为了使用这个新框架来执行相同的后台工作,用户必须以某种方式与通知进行交互。 当这个新的框架只是在客户端设备接收到某个推送而不是用户交互的情况下运行后台作业的时候,有没有办法呢? 我可以在推送的用户信息字典中传递一个方法吗?

我发现一个解决scheme,不直接与UserNotifications框架,但仍然允许您通过推送通知在iOS 10中执行后台作业。

我发现通过使用UIApplicationDelegate ,事实上可以通过推送通知通过与以前的iOS版本中使用的相同的function执行后台作业:

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))handler{ //execute the background job here } 

您只需在发送之前将content-available标志添加到推送中,并将其设置为1。

像js一样:

 data: { alert: "Some alert", type: someType, "content-available": 1, id: someId }