注册 Xamarin.iOS 应用以在后台运行

为后台特权注册单个任务适用于某些应用程序,但如果不断调用应用程序来执行重要的长期运行任务(例如通过 GPS 获取用户的方向),会发生什么情况? 此类应用程序应改为注册为已知的后台必要应用程序。

向 iOS 注册应用信号,即应向应用程序提供在后台执行任务所需的特殊特权。

应用程序注册类别

已注册的应用可以分为多个类别:

  • 音频 - 使用音频内容的音乐播放器和其他应用程序可能会注册为即使该应用已不在前台,但仍会继续播放音频。 如果此类别中的应用尝试在后台执行播放音频或下载以外的任何操作,iOS 将会终止它。
  • VoIP - IP 语音通话 (VoIP) 获得向音频应用程序授予的相同权限,以在后台继续处理音频。 同时,还允许它们根据需要响应支持它们的 VoIP 服务,以使其连接保持活动状态。
  • 外部配件和蓝牙 - 保留给需要与蓝牙设备和其他外部硬件配件通信的应用程序,注册为这些类别将支持应用程序与硬件保持连接。
  • Newsstand - Newsstand 应用程序可以继续在后台同步内容。
  • 位置 - 使用 GPS 或网络位置数据的应用程序可以在后台发送和接收位置更新。
  • Fetch (iOS 7+) - 注册了后台提取权限的应用程序可以定期检查提供程序是否提供了新内容,并在用户返回应用程序时向用户显示更新后的内容。
  • 远程通知 (iOS 7+) - 应用程序可以注册以接收来自提供程序的通知,并在用户打开应用程序之前使用通知启动更新。 通知可以采用推送通知的形式传入,或者选择以无提示方式唤醒应用程序。

可以通过在应用程序的 Info.plist 中设置“所需的后台模式”属性来注册应用程序。 应用程序可以根据需要在任意多个类别中注册:

Setting the background modes

有关注册应用程序以进行后台位置更新的分步指南,请参阅后台位置演练

应用程序不在后台运行属性

可以在 Info.plist 中设置的另一个属性是“应用程序不在后台运行”,或 属性:UIApplicationExitsOnSuspend

Disabling Background Running

除了只能在开发人员端进行更改以外,这与在 iOS 7+ 中将“后台应用刷新设置”设置为关闭完全相同,并且适用于 iOS 4 及更高版本。 进入后台后,应用程序将立即暂停,并且无法执行任何处理。

如果应用程序未设计为处理后台处理任务,请使用此属性,因为它有助于避免意外行为。

后台提取和远程通知

后台提取和远程通知是在 iOS 7 中引入的特殊注册类别。 这些类别允许应用程序从提供程序接收新内容,并在后台更新。 下一部分将更详细地探讨提取和远程通知,并将介绍如何使用位置感知在 iOS 6 的后台中更新应用程序。