如何使用Phonegap跟踪设备位置(iOS和Android)设备

我想知道用户何时到达或离开某个位置。 我正在尝试使用无线networking(检查移动设备)来做到这一点,但由于以下原因我无法完成此任务。

1)我需要实时更新或每隔1 – 5分钟的有关哪些设备连接以及哪些设备已断开连接的信息。

2)我在同一个networking上从PC到我的iPhone有很高的ping(仍然不知道为什么)。

现在我想使用iOS中暂停的Android应用程序(在后台运行)中使用地理位置或在Android中的后台运行。

任何帮助,将不胜感激。

Solutions Collecting From Web of "如何使用Phonegap跟踪设备位置(iOS和Android)设备"

首先要说的是,创build一个在后台运行时接收位置更新的Phonegap应用程序是完全有可能的,但并不是微不足道的。 我自己做了,并在Android和iOS平台上发布了应用程序。

如果你需要准确和定期的位置更新,我build议在目标设备上使用GPS接收器。 在Phonegap中,您可以在请求位置更新时设置“highAccuracy”标志。 当设备从GPS接收器接收到更新时,watchPosition()函数将提供新的位置信息,因此您使用如下所示:

navigator.geolocation.watchPosition(successCallback, errorCallback, { enableHighAccuracy: true, timeout: 10000, maximumAge: 0 }); 

有关更多详细信息,请参阅Phonegap地理定位API文档 (请注意在Android和iOS上使其工作所需的权限)。

为了让您的应用在Android或iOS上的后台运行,您需要设置各自的本地开发环境:适用于Android的Eclipse,适用于iOS的XCode。 您将无法使用Phonegap Build,因为在这两种情况下都需要自定义设置才能使其工作。 请参阅Phonegap平台指南了解如何执行此操作。

为了让你的应用程序在Android的后台运行,你需要编写一个自定义的Android服务,或者你可以做我做的,使用一个PhoneGap插件来获得一个“部分唤醒锁”( 见这里 ),让你的应用程序运行在屏幕closures时背景和接收位置更新。 请注意,此插件的原始版本已过期,不适用于更新版本的Phonegap,也不支持部分唤醒locking。 不过,我已经更新并扩展了自己的用法:在我对这个问题的回答中可以find它的源代码。

为了使您的应用程序在iOS上的后台运行,您需要稍微改变一些方法; 你不需要插件,只需要一个项目设置。

您可以手动编辑项目.plist并添加键值为“location”的键“UIBackgroundModes”键,或者在XCode中打开项目,添加“所需的背景模式”键值为“用于位置的应用程序寄存器更新”。 这将导致iOS在每次收到位置更新时触发您使用watchPosition()注册的JScallback函数。 有关iOS项目键和背景模式的更多信息, 请参阅此处 。

希望这可以帮助!