1)我需要实时更新或每1 – 5分钟的连接哪些设备和哪些设备已断开连接的信息.
2)我在同一个网络上我的电脑很高的ping到我的iPhone(仍然不知道为什么).
现在我想使用在iOS上挂起或在Android背景下运行的Phonegap应用程序(在后台运行)中的地理位置来执行此操作.
任何帮助将不胜感激.
解决方法
如果您需要准确定位更新,建议您在目标设备上使用GPS接收器.在Phonegap中,您可以在请求位置更新时设置“highAccuracy”标志.当设备从GPS接收器接收到更新时,watchPosition()功能将提供新的位置信息,因此您可以使用它:
navigator.geolocation.watchPosition(successCallback,errorCallback,{ enableHighAccuracy: true,timeout: 10000,maximumAge: 0 });
有关详细信息,请参阅Phonegap geolocation API documentation(请注意,在Android和iOS上进行此工作所需的权限).
为了让您的应用程序在Android或iOS的后台运行,您需要设置各自的本地开发环境:适用于Android的Eclipse,适用于iOS的XCode.您将无法使用Phonegap Build,因为在这两种情况下需要自定义设置才能使其工作.请参阅Phonegap platform guides如何做到这一点.
要使您的应用程序在Android的后台运行,您需要编写一个自定义的Android服务,或者您可以做我所做的,并使用Phonegap插件获取“部分唤醒”(see here),以使您的应用程序在背景和屏幕关闭时接收位置更新.请注意,此插件的original version已过时,不适用于更新版本的Phonegap,也不支持部分唤醒.但是,我已经更新并扩展了自己的使用:您可以在this question的答案中找到源代码.
为了让您的应用程序在iOS后台运行,您需要稍微不同的做些事情;你不需要一个插件,只是一个项目设置.
您可以手动编辑项目.plist,并使用“location”值添加“UIBackgroundModes”键,或者您的项目在XCode中打开,添加“必需的背景模式”键,值为“App register for location更新”.这将导致iOS在每次收到位置更新时触发您已经在watchPosition()中注册的JS回调函数. See here有关iOS项目键和background modes的更多信息.
希望这可以帮助!