iOS:关闭应用程序时如何在后台运行代码?

Posted

技术标签:

【中文标题】iOS:关闭应用程序时如何在后台运行代码?【英文标题】:iOS: how to run code in background when app is closed? 【发布时间】:2020-08-31 17:11:28 【问题描述】:

使用 Swift5.2、ios13.4,

我尝试在特定日期在后台运行代码(当应用程序完全关闭时)。

如果应用程序在前台(或者如果用户交互也在后台),本地通知非常有用。

有些人说(here 或 here,您将不得不使用“后台计时器”或“数据包隧道 ***”技巧,以使您的应用程序在后台保持活动状态并有机会运行一些回调方法最终。

但是没有更简单的方法吗?

我的目标是在未来的特定日期执行代码(应用关闭时完全从后台执行)。你会如何使用 Swift5 和 >iOS12 来做到这一点?

【问题讨论】:

hackingwithswift.com/example-code/system/… 感谢 Alfi,但是您的链接仅显示了一个示例以获取适当的未来日期(操作系统决定何时执行)。如果您想使用特定的触发日期(精确!),那么我发现的唯一方法是使用 iOS9 时代的旧 UILocalNotification API... @iKK 你找到解决方案了吗? 【参考方案1】:

简短的回答,没有简单的方法可以做到这一点。如果应用程序在后台运行(未完全关闭),您可以使用 Background Fetch 执行一些操作。我发现在应用完全关闭时执行操作的最简单方法是连接到 Google Firebase 并使用云功能(但这些是用 javascript 编写的?我相信它相当复杂)。

【讨论】:

那么使用 Google Firebase 可以在完全关闭的应用程序中执行操作吗?如果是,如何? 正如我上面提到的,你绝对可以做到。它只是不在您的 Xcode 项目中,也没有您希望的那么容易实现。去年我遇到了同样的问题,得出了这个不幸的结论。 不同之处在于,当您连接到 Google Firebase 并使用 Cloud Functions 时,它们会自行运行并通过互联网/与您应用中的代码分开运行。而您的 Xcode 项目中的代码仅在应用打开时运行。

以上是关于iOS:关闭应用程序时如何在后台运行代码?的主要内容,如果未能解决你的问题,请参考以下文章

即使我的应用程序关闭,也会在后台运行 dart 代码

应用程序进入后台时如何保持 Swift Socket IO 运行?

React Native:关闭应用程序时在 iOS 上运行后台任务的最佳方法?

如何使用libGDX在iOS / Android后台运行应用程序

iOS 如何在后台录制音频?

应用程序未运行时的iOS后台模式?