在我的应用程序中,我使用每日静音推送来触发我的应用程序内的一些计算,并根据计算结果触发本地通知。
比如说:每日目标。
一旦无声通知到达我的应用程序,我会触发一个后台方法来计算用户数据并比较他/她的数据是否达到目标,如果是,我会触发本地通知,以便用户可以打开应用程序并检查。 / p>
它不能始终如一地工作,有时我会得到它,有时却不能。当我调试时,我看到的是执行在两者之间暂停,只有当用户再次打开应用程序或我再次触发静默推送时,执行才会恢复。不确定为什么后台执行(计算)被暂停,如果我触发推送或者如果我手动尝试打开应用程序,我可以看到断点出现并且它从暂停的位置继续。
我想知道是不是因为时间限制了?
更新
我正在使用UrbanAirshipSDK并且他们已经覆盖了一些处理程序,我使用以下方法来处理通知。这是在appdelegate中编写的,当app在后台时收到通知时会被调用。
https://api.github.com/repos/myUser/myRepo/releases?access_token=dasdasdsfdsffsdfdsfs23131
我首先检查有效负载中可用的内容,并将其视为无声并进行计算。这可以间歇性地工作但不一致。我正在接近发布日期,我真的很担心。
答案 0 :(得分:0)
我假设您使用:
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
在这种情况下,您不应忘记调用完成处理程序,根据Apple docs,您只有30秒的时间来执行此操作:
完成处理通知后,您必须立即拨打电话 处理程序参数中的块或您的应用程序将被终止。您的 应用程序有超过30秒的挂钟时间来处理 通知并调用指定的完成处理程序块。在 练习,你应该在完成后立即调用处理程序块 处理通知。系统跟踪经过的时间,功率 应用程序后台下载的使用情况和数据费用。应用程序 处理远程通知时使用大量电量 可能并不总是提前被唤醒以处理未来的通知。