iOS 应用程序有没有办法在不活动时定期运行代码?

问题描述 投票:0回答:2

我希望我的应用程序在不活动/暂停时每 5 分钟收到一次通知。有什么办法吗?

ios swift background-process
2个回答
2
投票

有一种方法可以在后台运行代码,尽管我不建议每 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 分钟执行一次。

我不知道你到底想实现什么,所以我不知道这是否适合你的需求,或者在没有更多细节的情况下这是否是你的最佳答案。


1
投票

一句话,不。

Apple 对于允许应用程序在后台运行的时间和地点非常严格。通常,当您被切换到不活动状态时,您会收到通知,并且可以请求后台时间来完成您正在做的事情。如果没记错的话,你的时间最多是 3 分钟。之后,您将被挂起(在内存中,但不接收处理器时间),并且一旦被挂起,您可以随时终止而不发出警告。

Apple 确实允许一小部分应用程序无限期地在后台运行,但对哪些应用程序符合资格非常严格。我记得的唯一类别是路线导航应用程序、音乐应用程序和 VOIP 风格的通信应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.