3

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

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

如果我们不能制作后台线程,是否有其他解决方案可以解决问题?

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

谢谢,瑞安

4

4 回答 4

1

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

于 2014-12-30T04:52:27.420 回答
1

这不是您要寻找的内容,但请参阅iOS 应用程序编程指南:后台执行,尤其是机会主义地获取少量内容部分:

机会主义地获取少量内容

需要定期检查新内容的应用程序可以要求系统唤醒它们,以便它们可以启动对该内容的获取操作。要支持此模式,请fetch从 Xcode 项目的 Capabilities 选项卡的 Background mode 部分启用 Background 选项。(您也可以通过UIBackgroundModes在您的应用文件中包含带有 fetch 值的键来启用此支持Info.plist。)启用此模式并不能保证系统会随时为您的应用提供执行后台提取的时间。系统必须平衡您的应用程序获取内容的需求与其他应用程序和系统本身的需求。在评估了这些信息后,系统会在有好的机会时为应用程序留出时间。

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

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

于 2014-12-30T04:57:02.220 回答
0

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

于 2014-12-30T04:47:02.417 回答
0

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

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

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

于 2014-12-30T04:57:37.250 回答