web-dev-qa-db-ja.com

PhoneGapを使用したiPhoneでのロケーション許可アラート

警告の文字列をどのように変更しますか:

(アプリ名/それが何であれ)現在の場所を使用したい

もちろん、appname部分のみを変更したいです。 PhoneGapフレームワークを使用する場合、文字列はvery uglyであるため、次のようになります。

/var/mobile/Applications/157EB70D-4AA7-826E-690F0CBE0F/appname.app/www/index.html

誰かがアイデアを持っている?

52
bolmaster2

デバイスの準備ができたら、ジオロケーションを行う必要があります。たとえば、次のJqueryコードは、その厄介なアラートなしで位置を特定します。

$(function(){
  document.addEventListener("deviceready", onDeviceReady, false);
})

function onDeviceReady() {
  navigator.geolocation.getCurrentPosition(onSuccess, onError);     
}

function onSuccess(position) {
  // your callback here 
}

function onError(error) { 
  // your callback here
}
92
Pius Uzamere

Phonegap 3.0では、Pius Uzamereによる回答とプラグインがインストールされている必要があります。

cordova plugin add https://git-wip-us.Apache.org/repos/asf/cordova-plugin-geolocation.git

それ以外の場合は、二重の許可リクエストを取得します。

17
Robert Verge

私はちょうどドキュメントに従ってそれを解決しました。ターミナルを開き、プロジェクトにcdして、次のコマンドを入力します。 $ cordova plugin add https://git-wip-us.Apache.org/repos/asf/cordova-plugin-geolocation.git

また、これをconfig.xmlに追加します

<feature name="Geolocation">
    <param name="ios-package" value="CDVLocation" />
</feature>

この問題を解決します。 :)

ソース: http://docs.phonegap.com/en/3.0.0/cordova_geolocation_geolocation.md.html#The%20Command-line%0AInterface

13
Shozab Hasan

この質問はずっと古いものですが、同様の質問 here および here が見つかりました。

解決のために、NSLocationWhenInUseUsageDescriptionを.plistファイルに追加する必要がありました。ただし、ジオロケーションプラグインが古くなったため、最初に更新する必要がありました。次に、Cordova iOSプラットフォームを削除/追加する必要がありました。最後に、NSLocationWhenInUseUsageDescriptionを.plistファイルに追加しました。

まず、位置情報プラグインを削除/追加します。

cordova plugin rm org.Apache.cordova.geolocation
cordova plugin add org.Apache.cordova.geolocation

次に、iOSプラットフォームを削除/追加します。

cordova platform rm ios
cordova platform add ios

最後に、NSLocationWhenInUseUsageDescriptionを.plistに追加します。開いた /platforms/ios/{project}/{project}-Info.plistそして次を追加します。

<key>NSLocationWhenInUseUsageDescription</key>
<string>[App Name] would like to access your location when running and displayed.</string>

NSLocationWhenInUseUsageDescriptionNSLocationAlwaysUsageDescriptionNSLocationUsageDescriptionに関する詳細情報については、こちらをご覧ください iOS Developer Library link .

8
trailing slash

最後に問題を修正しました。

Index.htmlでcordova.jsを上に移動します

<script src = "cordova.js"> </ script>

最初に含まれるjsファイルとして(特に、地図の上にjsが含まれていることを確認してください)。これにより、プロンプトが1回だけ表示されるようになります。

他のcodejsやondevicereadyは必要ありません。

7
ToughPal

私が設立したソリューションを探した後、この行のようなプラグインの場所を追加するときに変数を追加するだけです

cordova plugin add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION="your usage message"
2
fsalazar_sch

上記の答えはどれも私にとってはうまくいきませんでした。位置情報リクエストは、既にデバイスで起動されていました。 config.xmlに次を追加すると、問題が修正されました。

<gap:plugin name="org.Apache.cordova.core.geolocation" />
2
Kyle Suss

この問題を解決するには、cordova plugin add https://git-wip-us.Apache.org/repos/asf/cordova-plugin-geolocation.gitを実行して、次をconfig.xmlに(自動的に)追加する必要があります。

<feature name="Geolocation">
     <param name="ios-package" value="CDVLocation" />
</feature>

動作させるには、config.xmlにも次の行を追加する必要があります。

<plugins>
        <plugin name="Device" value="CDVDevice" />
        <plugin name="Logger" value="CDVLogger" />
        <plugin name="Compass" value="CDVLocation" />
        <plugin name="NetworkStatus" value="CDVConnection" />
        <plugin name="Debug Console" value="CDVDebugConsole" />
        <plugin name="Geolocation" value="CDVLocation" />
        <plugin name="SplashScreen" value="CDVSplashScreen" />
        <plugin name="Battery" value="CDVBattery" />
        <plugin name="Globalization" value="CDVGlobalization" />
    </plugins>

それが役に立てば幸いです。

2
halbano

デバイスの準備ができた後にgeolocationリクエストが呼び出され、ジオロケーションプラグインが正しくインストールおよび設定されていることを確認した後、見苦しいポップアップが表示されました。

cordova.jsファイルとcordova_plugins.jsファイルをアプリケーションのルートディレクトリに移動して参照することで解決しました(元はサブフォルダーにありました)。したがって、cordova.jsへのパスは次のようになります。

<script src="cordova.js"></script>  

私はこれをドキュメントに含めるべきだと思います(おそらくそうですが、私はそれを見つけることができませんでした)

1
Brett Gregson
  • この場所にアクセスしているhtmlファイルに「cordova.js」ファイルを含めるだけで、この問題は解決します。何も必要ないファンシー。
1
mahipalz

私はすべての指示に従ったが、それでも失敗した。最後に、PhoneGapデモをいじってみて、最終的な解決策を見つけました。

  1. すべてのjsファイルとhtmlファイルを同じフォルダーに移動します(サブフォルダーも含めない)。おめでとうございます!問題は解決し、許可の警告はもうありません:)

  2. ところで、 "setTimeout(function(){utility.getGeoData();}、1000);"を使用した方が良いでしょう。 「document.addEventListener( "deviceready"、utility.getGeoData()、false);」が見つかりました私のために働かない。

上記の解決策が見つからない場合に役立つことを願っています:)

がんばろう!

0
Bingo

1)PhoneGapLibプロジェクトでLocation.mを変更します。 navigator.geolocationのすべての参照をnavigator_geoに置き換えます

2)phonegap.jsをphonegap2.jsにコピーし、アプリのルートに配置します。これで、アプリケーションをビルドしてデバイスまたはシミュレーターに読み込むたびに、phonegap.jsファイルが再生成されることがわかりました。 OK。それを修正する必要があるので、別のものを使用して、将来のアップグレードの手間を処理しましょう。

3)626のnavigator.geolocationのコンストラクターを作成する行(phonegap2.js)を... if(typeof navigator._geo == "undefined")navigator._geo = new Geolocation();に変更します。

4)PHONEGAP GPSを使用したいときはいつでもHTMLでnavigator._geo.getCurrentPositionまたは同様のもので参照できます。 HTML/JSを使用してアプリを構築します。

*注意してください、助けてください! *

WatchPosition関数を実行すると、あらゆる種類の統計情報を含む最初の場所の更新が取得されます。その後、常にエラーを報告します。これらの事柄で正確なGPSを取得するこの30秒の時間はこれで最悪だと思いますか?

http://groups.google.com/group/phonegap/browse_thread/thread/8067c2037816a9ad

0
Luke Ollett

私はここでパーティーに遅れていますが、参考のために質問に答えます。答えは、Phonegapに含まれているphonegap.jsにあるジオロケーション機能を使用することです。 http://www.phonegap.com のPhonegapサイトでそのような指示を見つけることができます。

navigator.geolocationを使用する場合、デフォルトのSafariジオロケーションシステムを使用しています。これは、Safariインスタンスでページを効果的に実行することでPhoneGapが機能するために発生します。 phonegap.jsをサイトに含める場合、PhoneGapのObjective-Cコードで公開された別の位置情報メソッドを使用できます。これにより、[アプリ名]から許可を求める他のアプリで見られる動作が示されます。

0
Tim Rogers

私は何日も同じ問題に苦しんでいて、最終的に解決策を見つけたので、それをまだ修正できない人と共有することにしました。

解決策は簡単です。phonegapコマンドラインインターフェース経由でプラグインを追加し、プラグインファイルが/ Pluginsディレクトリにあったとしても、wwwディレクトリ内のpluginsディレクトリに位置情報プラグインがありませんでした。したがって、不足しているファイルを/ www/pluginsにコピーするだけで完了です。そのように単純です。

不足しているファイルが必要な場合: http://d.pr/f/xqhq

btw:cordova 3.2.0を使用しています。

これがあなたにも役立つことを願っています!

0
Manuel

Phoengap/Cordovaバージョン3.5はこちら。

上記のManuelの回答に似ていますが、今回はプラグインがplatforms/ios/[appname]/Pluginsフォルダーにインストールされません。

私の修正は、../platforms/ios/[appname]/Pluginsフォルダーにプラグイン用の新しいフォルダーを手動で作成し、それをorg.Apache.cordova.geolocationに名前を変更してから.hと。プラグインのm個のファイル。

[Location] /plugins/org.Apache.cordova.geolocation/src/iosディレクトリにgeoLocationプラグインの.mおよび.hファイルがあります。

0
Chris Lambrou

私の場合、Cordova/Ionicを使用していますが、同じ問題が発生しています。これは、デバイスの準備が整う前のコードが原因です。 「deviceready」のdocument.addEventListenerでコードをラップしました。例えば:

document.addEventListener("deviceready", function () {
  $cordovaGeolocation.getCurrentPosition(options).then(function(position){
      ...your code here...
    });
});

その後、追加のメッセージは表示されません。

0
Jongsoo Choi

Cordovaを3.6から4.3にアップグレードした後、このエラー(および他の多くのエラー)が発生しました。

アップグレードプロセスにいくつかの失敗があり、私にとって唯一有効な解決策はcordova platform rm iosその後cordova platform add ios

/!\ iosプロジェクトの設定はすべて失われるため、スプラッシュとアイコンを再アップロードする必要があります。

0
Tib