我希望我的应用程序在不活动/暂停时每 5 分钟收到一次通知。有什么办法吗?
有一种方法可以在后台运行代码,尽管我不建议每 5 分钟这样做一次:
如果您的应用程序的基于服务器的内容很少更改或经常更改 不定期间隔,可以使用后台通知来通知 当新内容可用时您的应用程序。后台通知 是一种远程通知,不显示警报、播放声音, 或标记您的应用程序图标。它会在后台唤醒您的应用程序并 给它时间从您的服务器启动下载并更新其 内容。
本质上,您可以发送类似于此处示例的推送通知:
{
"aps" : {
"content-available" : 1
},
"acme1" : "bar",
"acme2" : 42
}
content-available
标志可让推送通知在后台唤醒应用程序。
您不能包含任何警报字段或任何表明它应该是可见通知的内容,否则根据我的经验,该标志基本上会被忽略。
然后您可以在这里处理这个问题:
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
基本上直接从这里的文档中得到了整个答案:https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app
如果出现以下情况,系统可能会限制后台通知的传送: 总数变得过多
上面的引述就是为什么我不建议每 5 分钟执行一次。
我不知道你到底想实现什么,所以我不知道这是否适合你的需求,或者在没有更多细节的情况下这是否是你的最佳答案。
一句话,不。
Apple 对于允许应用程序在后台运行的时间和地点非常严格。通常,当您被切换到不活动状态时,您会收到通知,并且可以请求后台时间来完成您正在做的事情。如果没记错的话,你的时间最多是 3 分钟。之后,您将被挂起(在内存中,但不接收处理器时间),并且一旦被挂起,您可以随时终止而不发出警告。
Apple 确实允许一小部分应用程序无限期地在后台运行,但对哪些应用程序符合资格非常严格。我记得的唯一类别是路线导航应用程序、音乐应用程序和 VOIP 风格的通信应用程序。