小编Jef*_*ith的帖子

在应用程序以应用程序为前提之前,异步代码不会执行:didReceiveRemoteNotification:fetchCompletionHandler:

在我们的应用程序中,我们希望下载少量数据以响应推送通知.到目前为止,推送通知工作正常,在后台启动应用程序并导致调用didReceiveRemoteNotification.

问题是,在此方法返回之后,应用程序不再获得CPU时间,直到它再次被预先考虑,因此没有机会在后台异步获取该数据.

将此减少到最简单的情况,我仍然无法运行异步代码.

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    [application setApplicationIconBadgeNumber:1];

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [application setApplicationIconBadgeNumber:9];

        completionHandler(UIBackgroundFetchResultNewData);
    });
}
Run Code Online (Sandbox Code Playgroud)

响应推送,应用程序在后台启动,徽章计数设置为1,但在从主屏幕启动应用程序之前,徽章编号不会设置为9.

在调用完成处理程序之前,iOS是否应该继续运行应用程序,最多30秒?

Info.plist指定了远程通知后台模式,推送有效负载包含'content-available':'1',并且我没有通过在应用切换器中向上滑动来退出应用.

要添加,我们使用Parse使用以下Javascript发送此推送通知:

Parse.Push.send({
    where: installationQuery,
    data: {
        "content-available": 1,
    }
}, { success: function() {},
    error: function(error) {}
});
Run Code Online (Sandbox Code Playgroud)

asynchronous objective-c push-notification apple-push-notifications ios

11
推荐指数
1
解决办法
915
查看次数