3

问题

为发布应用程序版本发送静默通知会显示下一个日志: SpringBoard[48] <Warning>: High Priority Push: [Bundle ID] - BAR Disabled

任何想法?酒吧禁用??看起来当“BAR Disabled”日志出现时,方法(didReceiveRemoteNotification - fetchCompletionHandler)没有被调用。

更多信息

  • BAR Disabled Log 出现在经过测试的 iphone 4s 和 iphone6 的生产应用程序中
  • BAR Disabled Log 未出现在测试的 iPhone5 中,调用了 fetchCompletionHandler。
  • 调试时不显示 BAR 禁用日志。
  • BAR Disabled Log 出现参数“content-available”:1
  • 用swift和objective-c测试
  • 使用分发配置文件(testflight)和临时配置文件(iTunes)进行测试
  • iOS 版本 9.3.1

通知

{"aps":{"alert":"Test","sound":"default","content-available":1}, "data" : 345}

结果

显示带有文本“Test”的通知并播放默认声音,但未调用 fetchCompletionHandler,只是一个日志: SpringBoard[48] <Warning>: High Priority Push: [Bundle ID] - BAR Disabled

4

1 回答 1

3

BAR Disabled 意味着后台应用刷新未启用,因此应用无法执行 fetchCompletionHandler。

从设备转到“设置”>“常规”>“后台应用刷新”并打开“后台应用刷新”。 如果您从应用切换器退出某个应用,它可能无法在您再次打开之前运行或检查新内容。

有关后台应用程序刷新 (BAR) 的更多信息:

这是在 10 分钟宽限期内有效的另一回事。启用了 BAR 的应用程序可以不时唤醒,直到它从应用程序切换器退出或手机重新启动/重启。这里没有 10 分钟的限制,重要的是要了解 BAR 与背景不同。“醒来”是指“睁开一只困倦的眼睛并下载一些东西,然后直接回去睡觉”。如果您从应用切换器中终止该应用,它的 BAR 权限也会消失。

启用 BAR 的应用程序通常安排在适当的时候唤醒以更新自身。这些时刻包括:

  • 当设备正在积极使用时
  • 当设备连接到 wifi 和/或电源时
  • 当收到应用程序的推送通知时
  • 当位置改变时

来自 Apple 自己:iOS 会根据您对设备的使用情况来学习模式,并尝试预测应用程序何时应该在后台进行 BAR 更新。它还会了解设备何时通常处于非活动状态,例如在夜间,以在设备不使用时降低更新频率。

由于 /u/Niruga 共享的信息,还有所谓的“静默”推送通知,应用程序可以利用它来唤醒他们的应用程序以进行 BAR 更新。用户看不到静默推送通知。

例如,Dropbox 利用 BAR 和位置来保持其照片上传工作超过 10 分钟,直到完成上传为止。它不会不断上传,因为这不是 BAR 所做的。因此,Dropbox 中发生的情况是,它使用位置更改使应用程序唤醒并上传 10 分钟,然后再进入睡眠状态,然后等待下一次位置更改以使应用程序再次唤醒并从中断处继续,并重复直到所有上传完成,所有这些都无需用户保持应用程序在前台打开。

要决定是否启用 BAR,请考虑您是否相信应用程序开发人员不会滥用该功能。

希望能帮助到你。

参考:https ://www.reddit.com/r/jailbreak/comments/3eao32/discussion_write_up_ios_backgrounding_and/

于 2016-04-13T11:55:47.903 回答