即使应用程序已关闭,我也可以运行后台线程吗?



我有一个应用程序,它会在特定时间向用户发出提醒。现在,我想每 60 分钟(或其他持续时间:1 天、1 周,...从服务器同步数据将来)。即使应用程序已经关闭,它也必须运行。

我也听到了很多不同的答案,但大多数是"iOS不允许开发者制作后台线程"。有人可以帮助我确认这一点吗?

如果我们不能制作后台线程,它还有其他解决方案来解决问题吗?

我期待听到任何人的任何答案!

谢谢莱恩

如果您只需要定期提醒用户,则确实可以安排本地通知并且相当容易实现。如果您需要实际更新内容,请查看后台提取:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

这不是你要找的,但请参阅适用于 iOS 的应用编程指南:后台执行,特别是机会获取少量内容部分:

机会性地获取少量内容

需要定期检查新内容的应用可以要求系统唤醒它们,以便它们可以启动该内容的提取操作。要支持此模式,请从 Xcode 项目的"功能"选项卡的"背景模式"部分中启用"后台fetch"选项。(您还可以通过在应用的Info.plist文件中将 UIBackgroundModes 键与提取值一起包含来启用此支持。启用此模式并不能保证系统会为您的应用提供任何时间来执行后台提取。系统必须在应用获取内容的需求与其他应用和系统本身的需求之间取得平衡。在评估该信息后,系统会在有充分机会时为应用程序提供时间。

当出现好机会时,系统会在后台唤醒或启动应用,并调用应用委托的 application:performFetchWithCompletionHandler: 方法。使用该方法检查新内容,并在内容可用时启动下载操作。下载完新内容后,必须执行提供的完成处理程序块,并传递指示内容是否可用的结果。执行此块会告知系统,它可以将应用移回挂起状态并评估其电源使用情况。与需要很长时间下载内容或声称内容可用但随后未下载任何内容的应用相比,快速下载少量内容并准确反映何时有可供下载内容的应用更有可能在未来获得执行时间。

下载任何内容时,建议您使用 NSURLSession 类来启动和管理下载。有关如何使用此类管理上载和下载任务的信息,请参阅 URL 加载系统编程指南。

您可以安排本地通知以提醒用户,但就像在Android中一样,您无法运行后台服务。

你把它倒过来了。如果应用程序未运行,则无法唤醒以检查服务器。但是服务器可以将数据推送到应用程序并将其唤醒 - 这就是推送通知(远程通知)的全部内容:

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/WhatAreRemoteNotif.html#//apple_ref/doc/uid/TP40008194-CH102-SW1

因此,当您要同步到该应用程序时,请推送该应用程序。

相关内容

最新更新