2013-07-11 6 views
15

ユーザーがいつ到着するか、特定の場所から離れるかどうかを知りたいと思います。私は無線ネットワーク(モバイルデバイスをチェックする)を使ってこれをやろうとしていましたが、いくつかの理由からそうではありませんでした。Phonegapを使用してデバイスの場所(iOSおよびAndroid)デバイスを追跡する方法

1)どのデバイスが接続されていて、どのデバイスが今すぐ切断されたかに関する情報をリアルタイムで更新するか、1〜5分ごとに必要としました。

2)私は同じネットワーク上の自分のPCから私のiPhoneに非常に高いpingを持っていました(それでもまだ分かりません)。

ここでは、iOS上で中断されたPhonegapアプリケーション(バックグラウンドで実行中)からのジオロケーションを使用するか、Androidのバックグラウンドで実行します。

ご協力いただければ幸いです。

答えて

24

最初に言うことは、バックグラウンドで実行中に位置更新を受信するPhonegapアプリを作成することは完全に可能ですが、簡単なことではないということです。私はそれを自分で行い、AndroidとiOSの両方のプラットフォームでアプリをリリースしました。

正確で定期的な位置更新が必要な場合は、ターゲットデバイスでGPS受信機を使用することをおすすめします。 Phonegapでは、位置の更新を要求するときに、この設定を「highAccuracy」フラグで行うことができます。

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

が(詳細はPhonegap geolocation API documentationを参照してください。必要なアクセス許可のことに注意してください。デバイスは、GPS受信機から更新を受信するとしたときに、それをこのようなものを使用するようwatchPosition()関数は、新しい位置情報をお届けします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で開いて、 "Required Background Mode"キーに値 " Appは位置更新のために登録する "。これにより、ロケーション更新が受信されるたびにiOSがwatchPosition()で登録したJSコールバック関数をトリガします。 iOSプロジェクトのキーについてはSee herebackground modesについては、

希望すると便利です。

+0

あなたの答えをありがとう、私は5分ごとに場所を更新する必要があるだろう、私はそれを制御することができますか?デバイスがインターネットに接続されている限り動作するはずです。 – amarruffo

+1

固定間隔で位置を更新する場合は、タイムアウトを使用してgetCurrentPosition()を呼び出すことができます。 'setTimeout(function(){navigator.geolocation.getCurrentPosition(successCallback、errorCallback、{enableHighAccuracy:true})}、5 * 60 * 1000)'デバイスにGPS受信機がある場合、位置を受け取るためにインターネット接続は必要ありません更新。 – DaveAlden

+2

どうしたらWebサービス経由でデータベースに挿入する必要があるのでしょうか?それはバックグラウンドで動作するのでしょうか?私はどこかで、Webサービスが呼び出されることはありません、これについての任意のアイデアを読みましたか?ご協力いただきありがとうございます。 – amarruffo

関連する問題