最新的iOS Google Map应用程序(目前版本为4.9.0)有一个非常好的功能,但到目前为止我无法弄清楚这是如何实现的。
这个功能是:每当我进入我的车,尝试开车到某个地方时,Google地图会向我发送通知给我,猜猜我要去哪里,给我一个估计的流量,即使手机在锁定状态,谷歌地图应用程序已经使用了好几天。截图提供如下:
作为iOS开发人员,这对我来说非常了不起。它怎么能在后台生活并发现我正准确地进入一辆汽车?
我的一个猜测是,Google地图正在使用重要的位置更改API。通过这种方式,应用程序可以在后台模式中唤醒,但是,当我进入我的车时仍然无法保证它被唤醒。我已经使用这种机制编写了一个测试应用程序,虽然它可以在后台唤醒,但时机不正确,未能检测到我正在进入汽车。
CLLocationManager Class Reference
如果您启动此服务并且您的应用随后终止,则系统会在新事件到来时自动将应用重新启动到后台。在这种情况下,传递给应用程序的选项字典:willFinishLaunchingWithOptions:和application:didFinishLaunchingWithOptions:应用程序委托的方法包含密钥UIApplicationLaunchOptionsLocationKey,以指示您的应用程序是由于位置事件而启动的。重新启动后,您仍必须配置位置管理器对象并调用此方法以继续接收位置事件。重新启动位置服务时,会立即将当前事件传递给您的代理。此外,即使在启动位置服务之前,也会使用最新的位置对象填充位置管理器对象的位置属性。
任何建议和帮助表示赞赏。
答案 0 :(得分:2)
@alexkent的一条评论指出了我的错误。这是Apple的Maps.app,而不是Google Maps。所有学分都属于@alexkent。
该通知来自Apple的Maps.app而非谷歌地图。一个新的 iOS9中的功能(必须运行)才能检测到 当你在车里。我想这是通过检测来完成的 来自汽车收音机的蓝牙信号(我没有检查过这个)。我做 不相信有这个功能的开发人员API。
答案 1 :(得分:1)
@alexkent是对的。它使用蓝牙工作,没有公共API。如果你关闭你的蓝牙,就会停止发生。
地理围栏和一般地理位置准确性不是那么精细。