ios - 我可以运行后台线程甚至应用程序已关闭

时间:2014-12-30 04:15:27

标签: ios background background-thread background-task

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

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

如果我们无法建立后台线程,是否有任何其他解决方案来解决问题?

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

谢谢, 莱恩

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

它并不完全是您正在寻找的内容,但请参阅App Programming Guide for iOS: Background Execution,特别是获取少量内容机会部分:

  

有机会获取少量内容

     

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

     

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

     

下载任何内容时,建议您使用NSURLSession课程来启动和管理下载。有关如何使用此类管理上载和下载任务的信息,请参阅URL Loading System Programming Guide

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

当您要与其同步时,请按此应用程序。