gpt4 book ai didi

ios - 如果 UIBackgroundModes 中定义的远程通知和新的推送通知出现,iOS 是否会在重启后在后台启动应用程序?

转载 作者:可可西里 更新时间:2023-11-01 05:09:05 26 4
gpt4 key购买 nike

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

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

它在重启之前工作正常,应用程序在后台获取此事件:

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

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

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

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

最佳答案

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

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

请引用apple doc有关应用程序状态的更多信息。

关于ios - 如果 UIBackgroundModes 中定义的远程通知和新的推送通知出现,iOS 是否会在重启后在后台启动应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20682909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com