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

ama*_*ffo 16 android geolocation ios cordova

我想知道用户何时到达或离开某个位置.我试图使用无线网络(检查移动设备)这样做,但我不能出于几个原因.

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

2)我在同一个网络上从我的电脑到我的iPhone有很高的ping(仍然不知道为什么).

现在我想使用在iOS上暂停或在Android后台运行的Phonegap应用程序(在后台运行)中使用地理定位来实现它.

任何帮助,将不胜感激.

Dav*_*den 25

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

如果您需要准确和定期更新位置,我建议您在目标设备上使用GPS接收器.在Phonegap中,您可以在请求位置更新时设置"highAccuracy"标志.watchPosition()函数将在设备从GPS接收器接收更新时提供新的位置信息,因此您可以使用以下内容:

navigator.geolocation.watchPosition(successCallback, errorCallback, {
  enableHighAccuracy: true,
  timeout: 10000,
  maximumAge: 0
});
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Phonegap geolocation API文档(请注意在Android和iOS上使其工作所需的权限).

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

要让您的应用在Android上保持在后台运行,您需要编写自定义Android服务,或者您可以执行我所做的操作并使用Phonegap插件获取"部分唤醒锁定"(请参阅此处)以保持您的应用在屏幕关闭时,背景和接收位置更新.请注意,此插件的原始版本已过时,不适用于更新版本的Phonegap,也不支持部分唤醒锁.但是,我已经更新并扩展它供我自己使用:你可以在我对这个问题的回答中找到它的源代码.

要让您的应用在iOS上的后台运行,您需要做的事情略有不同; 你不需要一个插件,只需要一个项目设置.

您可以手动编辑项目.plist并添加键"UIBackgroundModes"键,其值为"location",或者在XCode中打开项目,添加"Required Background Modes"键,其值为"App register for location"更新".这将导致iOS在每次收到位置更新时触发您使用watchPosition()注册的JS回调函数.有关iOS项目键和背景模式的更多信息,请参见此处.

希望这可以帮助!

  • 发生了什么我需要通过Web服务插入数据库的位置,是否可以从后台运行?我在某个地方认为Web服务不会被调用,有关于此的任何想法吗?谢谢你的帮助. (2认同)