iOS:无声推送触发本地通知的问题

时间:2016-04-06 12:26:55

标签: ios localnotification silentpush

在我的应用程序中,我使用每日静音推送来触发我的应用程序内的一些计算,并根据计算结果触发本地通知。

比如说:每日目标。

一旦无声通知到达我的应用程序,我会触发一个后台方法来计算用户数据并比较他/她的数据是否达到目标,如果是,我会触发本地通知,以便用户可以打开应用程序并检查。 / p>

它不能始终如一地工作,有时我会得到它,有时却不能。当我调试时,我看到的是执行在两者之间暂停,只有当用户再次打开应用程序或我再次触发静默推送时,执行才会恢复。不确定为什么后台执行(计算)被暂停,如果我触发推送或者如果我手动尝试打开应用程序,我可以看到断点出现并且它从暂停的位置继续。

我想知道是不是因为时间限制了?

更新

我正在使用UrbanAirshipSDK并且他们已经覆盖了一些处理程序,我使用以下方法来处理通知。这是在appdelegate中编写的,当app在后台时收到通知时会被调用。

https://api.github.com/repos/myUser/myRepo/releases?access_token=dasdasdsfdsffsdfdsfs23131

我首先检查有效负载中可用的内容,并将其视为无声并进行计算。这可以间歇性地工作但不一致。我正在接近发布日期,我真的很担心。

1 个答案:

答案 0 :(得分:0)

我假设您使用:

- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler

在这种情况下,您不应忘记调用完成处理程序,根据Apple docs,您只有30秒的时间来执行此操作:

  

完成处理通知后,您必须立即拨打电话   处理程序参数中的块或您的应用程序将被终止。您的   应用程序有超过30秒的挂钟时间来处理   通知并调用指定的完成处理程序块。在   练习,你应该在完成后立即调用处理程序块   处理通知。系统跟踪经过的时间,功率   应用程序后台下载的使用情况和数据费用。应用程序   处理远程通知时使用大量电量   可能并不总是提前被唤醒以处理未来的通知。