我正在尝试构建一个iPhone应用程序,需要使用Core Location跟踪用户的位置。我使用startMonitoringSignificantLocationChanges以便在后台更新位置,并且准确度不那么重要,只要在有重大变化时进行更新即可。
当前,我通过向Web服务发出HTTP请求来更新位置。当我运行应用程序时,这样做完全正常,我的位置会在存储位置数据的MySQL数据库中更新。但是,当应用程序进入后台时——我可以看到手机右上角仍在运行位置服务图标,但当我返回并查看数据库时,它根本没有更新我的位置。我通过驾车横穿城镇进行了测试,一次是运行应用程序,一次是应用程序在后台运行。
从苹果公司的文档中得知:
当前,我通过向Web服务发出HTTP请求来更新位置。当我运行应用程序时,这样做完全正常,我的位置会在存储位置数据的MySQL数据库中更新。但是,当应用程序进入后台时——我可以看到手机右上角仍在运行位置服务图标,但当我返回并查看数据库时,它根本没有更新我的位置。我通过驾车横穿城镇进行了测试,一次是运行应用程序,一次是应用程序在后台运行。
从苹果公司的文档中得知:
“少量时间来处理位置数据”到底有多长?只是不建议查询网络,还是在那段时间内无法查询网络?是否有更好的方法来跟踪多个用户的位置,即使应用程序在后台运行?如果您让此服务保持运行,并且随后暂停或终止您的应用程序,则该服务将在新的位置数据到达时自动唤醒您的应用程序。在唤醒时间,您的应用程序被置于后台,并被给予少量时间来处理位置数据。因为您的应用程序在后台运行,所以应最小化工作并避免任何可能防止其在分配的时间到期之前返回的任务(如查询网络)。如果不这样做,您的应用程序可能会被终止。