繁体   English   中英

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

[英]iOS:Issue with Silent Push triggering Local Notification

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

比如说:每日目标。

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

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

我想知道是否是因为一些时间限制?

更新:

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

/**
 * Called when a push notification is received while the app is running in the background
 * for applications with the "remote-notification" background mode.  
 * Overridden by receivedBackgroundNotification:fetchCompletionHandler.
 *
 * @param notification The notification dictionary.
 */
- (void)receivedBackgroundNotification:(NSDictionary *)notification;

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

我假设您使用:

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

在这种情况下,你不应该忘记调用完成处理程序,根据Apple文档,你只有30秒这样做:

处理完通知后,必须立即调用处理程序参数中的块,否则您的应用程序将被终止。 您的应用程序有最多30秒的挂钟时间来处理通知并调用指定的完成处理程序块。 实际上,您应该在处理完通知后立即调用处理程序块。 系统会跟踪应用程序后台下载的已用时间,功耗和数据成本。 处理远程通知时使用大量电源的应用可能无法提前唤醒以处理将来的通知。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM