"/var/mobile/Applications/*/MyApp.app/www//index.html" Would Like To Use Your Current Location"みたいな警告が毎回出た時の対処

YAPC::AsiaのときにオライリーブースでiPhoneアプリケーション開発ガイド ―HTML+CSS+JavaScript による開発手法を買いました。
ちょこちょこ読もうかなぁと思っていたのだけど、
薄いし、面白いし、1冊まるまる使って少しずつサンプルアプリの機能追加していくというパターンで読みやすかったのでサクッと読みました。
# localStorageやopenDatabaseにSQL文発行するサンプルもあったりすのが楽しかった。



さて本題。
本の中にはPhoneGapという、JavaScriptをネイティブアプリ化するツールについて書いてあり、
それを使った位置情報取得のサンプルなどがあったんですが、
このnavigator.geolocation.getCurrentPositionのコードでハマりました。



アプリを起動するたびに、

"/var/mobile/Applications/*/MyApp.app/www//index.html" Would Like To Use Your Current Location"
Don't Allow OK

みたいな警告が出てしまって毎回うざい感じ。
設定の「一般 > 位置情報サービス」はオンになっているし、どこがおかしいんだろうとググりました。



で、ありがたいことにドンピシャな内容があったので解決。
結局PhoneGap API Documentationのサンプルにもある通り、

        document.addEventListener("deviceready", onDeviceReady, false);

というようにdevicereadyというイベントが発生したらonDeviceReadyを呼ぶようにしておいて、
その中でgetCurrentPositionすれば良かったようです。
jQuery使った場合なら

	$(document).bind("deviceready", onDeviceReady)

みたいな感じですね。



ただ、本来PhoneGapを新規プロジェクトから使う場合にはwww/index.htmlに既にこのコードが書いてあるので気にしなくてよさそう。
今回はそういうことを見ずに上書きしてしまったのでハマったのでした。
サンプルは見ないとダメだといういい例ですね。



ということで、もうちょっと本を読み直しながらPhoneGap+HTMLで遊ぼうと思います。
iPhoneアプリケーション開発ガイドの原書はネットに公開されているようなのでサンプルコード見て勉強するのもいいかも。