swift - 在iOS后台接收本地通知,Swift 如何运行服务?

  显示原文与译文双语对照的内容
109 5

在应用程序中有一个MQTT连接,服务器和服务器正在发送一些与设备和UI更改相关的值。但是当应用程序在后台用户应该得到本地通知,某些值已经更改。我知道后台服务不允许在iOS中,但我想确保这是没有办法实现这一点。

我成功地在后台添加了本地通知,方法是UIApplication.shared.beginBackgroundTask但只有在苹果终止应用后才能达到 3分钟的精确工作。

 func registerBackgroundTask() {
 backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in
 self?.endBackgroundTask()
 }
 assert(backgroundTask!= UIBackgroundTaskInvalid)
 }
 func endBackgroundTask() {
 print("Background task ended.")
 UIApplication.shared.endBackgroundTask(backgroundTask)
 backgroundTask = UIBackgroundTaskInvalid
 }

调用 self.registerBackgroundTask() 使应用程序在后台运行3 分钟。

接下来我要尝试运行of和小部件,这里我只想提出一些可以能的建议。

时间:原作者:0个回答

131 0

听起来"与外部附件通信"将是适合你应用的背景模式。请参阅 Apple文档参考。你必须为项目激活Backround模式,并将值设置为"外部附件"。然后你可以在后台进行小型下载。Apple提到心率监视器是一个例子。

请注意,连续后台轮询是浪费能源,会耗尽电池。检查这是否真的需要你的应用程序。如果用户只需要很少的通知/警报,远程notifictions将是更好的解决方案。我在自己的项目中使用远程通知,它工作非常流畅可靠。另外,即使用户已经关闭了应用程序,它也会唤醒应用程序。

原作者:
125 4

超过 3分钟。你将启用任何模式。否则,应用程序将进入后台应用程序。3 min.App 将不执行任何操作。enter image description here

原作者:
...