我找不到任何关于此的文档。如果我的应用程序能够使用后台定位服务,那么在设备停止任务之前它真的可以做多少处理,因为它使用了太多资源?
例如,当位置发生变化时,我想用新位置 ping 我的服务器。
问候:
约翰
我找不到任何关于此的文档。如果我的应用程序能够使用后台定位服务,那么在设备停止任务之前它真的可以做多少处理,因为它使用了太多资源?
例如,当位置发生变化时,我想用新位置 ping 我的服务器。
问候:
约翰
如果一个应用程序有在后台获取位置更新的权限,那么你就不受限制执行任何任务,所以你可以运行任何代码,因为应用程序被允许在暂停时执行代码(这是由提供的应用程序使用的)导航)。但是,请注意,Apple 不会批准具有后台位置更新权限的应用程序,除非它是可以证明此要求的应用程序(运动跟踪应用程序、导航应用程序等)
您可以从区域监控或重大位置更改中获取位置更新,而无需使用位置更新后台模式。
所以现在是棘手的部分。当我的应用程序通过区域监控或重要位置服务从后台模式启动时,我是否有足够的时间来执行用户位置的服务器更新?
正如本文所建议的,答案似乎是肯定的
我还没有尝试过,但是从代码来看,我找不到这不起作用的原因!
您必须在 info.plist 中声明 App 支持的后台任务
在信息属性列表下添加数组给定格式如下:
信息属性列表(字典)-> 所需背景模式(数组)(1 项)-> 项 0(字符串)- 应用程序注册位置更新
在 info.plist 中的这些设置之后,您可以在 AppDelegate 的后台进程中执行您想要执行的代码:
- (void)applicationDidBecomeActive:(UIApplication *)application
{ /* 重新启动任何在应用程序处于非活动状态时暂停(或尚未启动)的任务。如果应用程序之前在后台,可选择刷新用户界面。*/ self.locationManager = [[CLLocationManager alloc] init]; _locationManager.delegate = self;
[_locationManager stopMonitoringSignificantLocationChanges];
[_locationManager startUpdatingLocation];
}
欲了解更多信息,您可以访问: