【问题标题】:Does iOS start app in background after reboot if remote-notification defined in UIBackgroundModes and new push notification comes?如果 UIBackgroundModes 中定义的远程通知和新的推送通知出现,iOS 是否会在重启后在后台启动应用程序?
【发布时间】:2014-01-08 02:14:04
【问题描述】:

我有一个注册后台模式远程通知的 iOS7 应用程序:

<key>UIBackgroundModes</key>
<array>
    <string>remote-notification</string>
</array>

它在重新启动之前工作正常,并且应用程序在后台收到此事件:

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

但看起来重启后我不再收到此事件,直到我手动启动应用程序。

所以,问题是:当 iOS7 收到我的应用程序的静默推送通知时,我可以让 iOS7 在重新启动后在后台运行我的应用程序吗? 我的推送通知没有“alert”字段,只有“contentAvailable”——这可能是一个原因吗? 我已经看到像 whatsapp 这样的应用程序能够在重启后立即接收和显示推送通知,因此它看起来至少对于“警报”类型的通知是可行的。

我知道我可以在重启后的某个时候使用重要的位置监控来重启应用程序,但我想避免一直在工具栏上显示位置图标。后台获取模式可以帮助解决这个问题吗? 有没有统计数据,后台获取模式的应用重启后执行速度有多快?

【问题讨论】:

    标签: ios push-notification apple-push-notifications reboot


    【解决方案1】:

    不,它不会工作。因为当您重新启动设备时,您的应用将处于未运行状态。

    根据苹果文档,新的多任务 API(获取和远程通知)仅在应用程序处于 suspended/background/foreground 状态时才能工作。如果应用程序处于 background/foreground 状态,则application:didReceiveRemoteNotification:fetchCompletionHandler 将被触发。如果应用处于 suspended 状态,则-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 将被触发。 在您的情况下,应用程序处于 Not Running 状态,因为 application:didReceiveRemoteNotification:fetchCompletionHandler 永远不会被触发。

    有关应用状态的更多信息,请参阅apple doc

    【讨论】:

    • 我在测试中看到了这种行为。但问题是“当 iOS7 收到我的应用程序的静默推送通知时,我可以让 iOS7 在重新启动后将我的应用程序运行到后台吗?”。那么,有没有什么方法可以在重启后重新开始接收远程通知,这样用户就不需要手动启动应用程序了?
    • 重启设备后无法在后台启动应用。用户需要在重启后至少打开一次应用程序。那么只有远程通知会起作用。
    • 我已经接受了这个作为答案。我们决定添加视觉通知,以防用户长时间未报告 - 它允许在设备重启后提醒用户重启应用程序。
    • 您的理由..“因为您的应用程序将处于未运行状态”是错误的。这完全取决于a)后台获取(在您的应用程序的代码配置设置中)和b)依赖于最终用户没有从设置->常规->后台应用程序刷新中禁用“后台应用程序刷新”的事实.如果两者都实现,则应用将从未运行状态进入暂停模式或背景状态,具体取决于您选择的更新类型(例如位置、VOIP、音频等)
    • 谢谢南达!有什么办法可以联系到你吗? :-)
    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    相关资源
    最近更新 更多