Apple の脅威の通知と金銭目当てのスパイウェアへの対策について

しばらく返答が寄せられていないようです。 再度ディスカッションを開始するには、新たに質問してください。

iOS6でGeolocation APIが動かない?

iOS上で動くWebアプリでHTML5のGeolocation APIを利用し、現在位置を定期的に捕捉しています。

このアプリがiOS5.1.1では問題ないのですが、iOS6以降で正しく動作しません。何か解決策はありますか?


watchPosition()を使用すると定期的に位置情報をチェックし、変化が起これば指定された処理(when_gps_is_updated)をコールします。初回起動時には問題なく動きます。しかし同じ処理を記述した別ページに画面遷移した場合、あるいは本体を一度サスペンドした後は動きが止まります。なお、GPSを使用した別のネイティブアプリ(Google Maps等)を起動すると再び動き出したりすることもあり、非常に動作が不安定(使い物になりません)です。



外国サイトの情報では、ホーム画面から起動したWebアプリでGeoLocation APIが動作しなくなる点が指摘されていますが、ブラウザを起動してからブックマーク経由で呼び出しても症状が再現してしまいます。


参考: https://discussions.apple.com/thread/4313850?start=0&tstart=0



iPad2 + iOS5.1.1 では問題なく、iPad3 + iOS6.1.2(6.0以降すべて)では正しく動きません。

Safali特有の問題かと疑いましたが、Chrome、あるいは Firefoxでも同様の症状が発生します。



ソースの一部を以下に公開します。表記中に出現するGPS_**** はグローバル変数です。
when_gps_is_updated() が成功時に起動する筈なのですが、これが呼び出されません。
この時、当然ですが、when_gps_is_error() も呼び出されていません。(成功している筈)



=== ここから ===


function ExecGPS() {


// GPSによる現在位置が利用可能な場合

if (window.navigator.geolocation) {

GPS_HANDLER = window.navigator.geolocation.watchPosition(

when_gps_is_updated,

when_gps_is_error,
{

enableHighAccuracy: GPS_HIGH_LV,

timeout: GPS_TIMEOUT,

maximunAge: GPS_MAX_AGE

}

);

return GPS_HANDLER;



// GPSによる現在位置が利用できない場合
} else {
return 0;
}


}


=== ここまで ===

iPad, iOS 6

投稿日 2013/02/22 16:10

返信

返信はありません。

iOS6でGeolocation APIが動かない?

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple ID を使ってご参加ください。