Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS谷歌地图如何检测我正在进入汽车?_Ios_Iphone_Google Maps - Fatal编程技术网

iOS谷歌地图如何检测我正在进入汽车?

iOS谷歌地图如何检测我正在进入汽车?,ios,iphone,google-maps,Ios,Iphone,Google Maps,最新的iOS谷歌地图应用程序(目前版本为4.9.0)有一个非常好的功能,但到目前为止,我还不知道这是如何实现的 该功能是:每当我进入我的车,试图驾驶某处,谷歌地图将向我的手机发送通知,猜测我要去哪里,给我一个流量估计,即使手机处于锁定状态,谷歌地图应用程序已经好几天没用了。屏幕截图如下所示: 作为一名iOS开发人员,这对我来说非常令人惊讶。它怎么能生活在背景中,如此准确地检测到我正在进入一辆汽车 我的猜测之一是,谷歌地图正在使用显著的位置变化API。通过这种方式,应用程序可以在后台模式下被唤醒

最新的iOS谷歌地图应用程序(目前版本为4.9.0)有一个非常好的功能,但到目前为止,我还不知道这是如何实现的

该功能是:每当我进入我的车,试图驾驶某处,谷歌地图将向我的手机发送通知,猜测我要去哪里,给我一个流量估计,即使手机处于锁定状态,谷歌地图应用程序已经好几天没用了。屏幕截图如下所示:

作为一名iOS开发人员,这对我来说非常令人惊讶。它怎么能生活在背景中,如此准确地检测到我正在进入一辆汽车

我的猜测之一是,谷歌地图正在使用显著的位置变化API。通过这种方式,应用程序可以在后台模式下被唤醒,但是,当我进入我的车时,仍然不能保证它被唤醒。我已经用这个机制写了一个测试应用程序,虽然它可以在后台唤醒,但是时间不正确,没有检测到我是否进入了一辆车

如果您启动此服务,并且您的应用程序随后被终止,则如果出现新事件,系统会自动将应用程序重新启动到后台。在这种情况下,传递给应用程序委托的应用程序:willFinishLaunchingWithOptions:和应用程序:didFinishLaunchingWithOptions:方法的选项字典包含UIApplicationLaunchActionsLocationKey键,以指示您的应用程序是因位置事件而启动的。重新启动后,您仍然必须配置location manager对象并调用此方法以继续接收位置事件。重新启动location services时,当前事件将立即传递给您的代理。此外,即使在启动location services之前,location manager对象的location属性也会填充最新的location对象


感谢您的建议和帮助。

来自@alexkent的一条评论指出了我的错误。这是苹果的Maps.app,不是谷歌地图。所有学分都属于@alexkent


该通知来自苹果的Maps.app,而非谷歌地图。一个新的 iOS9中的特性(您必须正在运行)是检测 当你在车里的时候。我想这是通过检测 来自车载收音机的蓝牙信号(我没有检查)。我愿意 不相信有开发人员API可用于此功能


@阿列克斯肯特是对的。它使用蓝牙技术工作,并且没有公共API。如果您关闭蓝牙,这种情况将停止


地理围栏和一般的地理定位精度没有那么精确。

通知来自苹果的Maps.app,而不是谷歌地图。iOS9中的一个新功能(您必须运行它)是检测您何时在车内的能力。我想这是通过检测车载收音机的蓝牙信号来实现的(我还没有检查)。我不相信有开发人员API可用于此功能。@alexkent你说得对,我怎么能忽略此图标。但是,苹果怎么知道蓝牙属于汽车音响?它可以是任何设备。也许他们已经过滤掉了所有汽车上常见的立体声设备。随便猜测一下,蓝牙设备都有自己的硬件设备id,可以从中编译数据库,也就是说,谁制造了这个设备,用于什么目的。