【问题标题】:Can an ios app fetch data from a server even if it is terminatedios应用程序是否可以从服务器获取数据,即使它被终止
【发布时间】:2015-11-13 05:28:01
【问题描述】:

我需要我的应用提醒用户某些更新。我知道我可以做远程通知服务,但我想要得到的只是一个小的计数变量,我想知道我是否可以用一些简单的方法来做到这一点,比如每 30 分钟 ping 一次服务器,即使应用程序没有运行.我相信Android存在这样的规定

【问题讨论】:

  • 在 iOS 中,当应用处于后台或未运行时,在给定时间段后无法调用服务。如果您使用任何后台服务(例如位置、网络电话等),那么您可以在后台运行应用程序。
  • 基本上,它是不是?如果用户退出应用程序,那么我不能让应用程序做任何其他事情吗? APNS 是唯一的选择吗?
  • Apple 允许在后台模式下运行任何应用程序仅 10 分钟。之后,该应用程序将被操作系统终止。如果您尝试从服务器下载,那么您可以使用 NSURLSession 但它不适用于您的情况。您可以按照以下链接在后台运行应用程序,但我尚未在 iOS 8 和 iOS 9 中对其进行测试。stackoverflow.com/questions/5323634/…

标签: ios apple-push-notifications


【解决方案1】:

我认为iOS后台模式“background fetch”正是你所描述的。

来自App Programming Guide for iOS - Background Execution

机会性地获取少量内容

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

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

下载任何内容时,建议您使用 NSURLSession 类来启动和管理您的下载。为了 有关如何使用此类管理上传和下载的信息 任务,见URL Session Programming Guide

【讨论】:

  • 你好,应用程序终止时它真的有效吗?至于我,它仅在应用程序处于后台时才有效。
猜你喜欢
  • 1970-01-01
  • 2016-08-19
  • 2015-12-21
  • 2011-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
相关资源
最近更新 更多