在拨打电话号码时,我需要在后台获取确切的位置(尽可能准确)(呼叫将通过应用程序进行)。据我从文档中了解到,我可以听到背景位置的重大变化。我想知道重大更新的准确性如何,何时触发。
我需要拨打电话的位置,因为这将是紧急电话。并且在前台收听位置然后拨打电话不是一个好主意,因为这将是紧急情况 - 将立即拨打电话。
是否有解决方案可以在后台获取用户的准确位置?你有什么建议吗?
编辑:位置将立即发送到服务器。
在拨打电话号码时,我需要在后台获取确切的位置(尽可能准确)(呼叫将通过应用程序进行)。据我从文档中了解到,我可以听到背景位置的重大变化。我想知道重大更新的准确性如何,何时触发。
我需要拨打电话的位置,因为这将是紧急电话。并且在前台收听位置然后拨打电话不是一个好主意,因为这将是紧急情况 - 将立即拨打电话。
是否有解决方案可以在后台获取用户的准确位置?你有什么建议吗?
编辑:位置将立即发送到服务器。
难道你不想在你的应用 plist 文件中添加那个标志来请求位置服务在后台模式下运行。
然后在您的应用程序中,当用户按下“呼叫”按钮时,您可以在执行呼叫之前执行正常的 CLLocationManager didUpdateToLocation。
在您的 didUpdateToLocation 方法中,您可以在写入应用程序沙箱库/缓存文件夹的 TXT 文件中记录用户的位置,也可以使用 NSUserDefaults。
注意:我编写了一个应用程序,即使用户按下锁定屏幕,它也会在用户开车时记录他们的 GPS 位置,所以我相信即使应用程序被最小化,您的应用程序也可以将 GPS 坐标写入 TXT 文件,只要当您启动您的位置管理器时。
至于准确性,您可以在这些条件下在后台获得准确的位置:
在后台获取位置事件
如果您的应用程序需要在前台或后台提供位置更新,则有多种选择。首选选项是使用显着位置更改服务在适当的时间唤醒您的应用程序以处理新事件。但是,如果您的应用程序需要使用标准位置服务,您可以将您的应用程序声明为需要后台位置服务。
只有当缺少这些服务会损害其运行能力时,应用程序才应请求后台定位服务。此外,任何请求后台定位服务的应用程序都应该使用这些服务为用户提供切实的好处。例如,逐向导航应用程序可能是后台定位服务的候选者,因为它需要跟踪用户的位置并报告下一次转弯的时间。
至于在通话过程中获取位置,我自己并没有使用它,但是像“ waze ”这样的导航应用程序确实会在通话过程中通知转弯和导航事件,所以我猜你问的是可能的。
如果我了解您的需求,您有两种选择:
如果您认为用户将是静态的,那么只需在调用之前获取用户位置即可。或者当您的应用程序在午餐时间拨打紧急电话时更好。
如果用户正在移动,那么您可以“询问”以获取背景位置事件。即使这样,您也应该考虑使用“显着更改位置服务”,因为您不需要比用户位置更多的信息。标准的“定位服务”用于导航“转弯”服务。
*最后评论 *
如果您的应用程序是紧急应用程序,您应该阅读上一个链接中的“节省电池电量的提示”。您不希望您的用户电池在跟踪他的位置时耗尽。