Phonegap/Cordovaでアプリを構築しています。現在のところアプリはかなりシンプルですが、機能するにはネットワークステータスと位置情報プラグインが必要です。
私はこれまでにアプリを開発しました(現時点ではいくつかの基本的なHTMLページと少しのJSで構成されています)Android=)で問題なく動作しています。
今朝、私はすべてがiOSで問題ないことを確認することにしました。まったく驚くことではありませんが、そうではありません。
だから...それはプラグインに問題があるようです。 XCodeは以下を出力します:
CDVPlugin class CDVLocation (pluginName: Geolocation) does not exist.
2013-10-18 11:24:29.437 Eye Cab[589:907] ERROR: Plugin 'Geolocation' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
2013-10-18 11:24:29.438 Eye Cab[589:907] -[CDVCommandQueue executePending] [Line 117] FAILED pluginJSON = [
"Geolocation1841912763",
"Geolocation",
"getLocation",
[
false,
0
]
]
これは、Geolocationプラグインをロードできないことを意味していると思います。ネットワーク接続プラグインについても同様です。
以下は、Phonegapプロジェクトからの切り詰められたconfig.xmlです。
<feature name="http://api.phonegap.com/1.0/device" />
<feature name="Geolocation">
<param name="ios-package" value="CDVLocation" />
</feature>
<feature name="NetworkStatus">
<param name="ios-package" value="CDVConnection" />
</feature>
また、IDを機能名として使用してみました(例:org.Apache.cordova.geolocation)。同じ問題が発生します。実際にはまったく同じエラー。
Androidではすべてが完璧に機能します。シミュレータでは、Chrome=私のMacとデバイスで。
次のバージョンを使用しています。
正しいファイルはプロジェクトの/ www/plugins /フォルダーにあります。
これを手伝ってくれる人なら誰でも喜ぶハグ。他の質問を調べましたが、うまくいきませんでした。
iOSにはプラグインファイル自体(.mおよび.hファイル)がありませんでしたが、cordova prepare
またはphonegap prepare
を呼び出してコピーする必要があります。あまりよく文書化されていないようです。
Markのソリューションは機能しますが、不要であり、XCodeプロジェクトのカスタマイズを失う原因になります。
私にとってそれを修正したのは:
XCodeで[ビルドフェーズ]に移動し、[コンパイルされたソース]ドロップダウンを開きます。 +をクリックして、プラグインディレクトリにあるはずのプラグイン.mファイルを追加します(ただし、コンパイルされたソースにはありません)。
今後のサーチャーのために-私のために働いた解決策は別のスタックオーバーフロー応答から来ました、ここ: https://stackoverflow.com/a/19501579/1245276
つまり、1。/plugins/ios.jsonを削除し、2。次に./platforms/iosを削除し、3。cordova platform add ios
を実行します。4。次にcordova build
を実行します。 ios.jsonを削除すると、プラグインを強制的に再コンパイルするのに役立ちます。少なくともそれは私が理解していることであり、私にとってはうまくいきました。
私の場合、プラグインディレクトリでもPlugin_name.mファイルを見つけることができなかったため、ビルド段階でPlugin_name.mファイルを手動で追加しました(Plugin_name.mファイルはplugin-> src-> iosフォルダにあります)。次に、プラグインの機能名をios.jsonファイル(cordova-buildsフォルダーにあります)からコピーし、config.xmlファイルに追加します(バックスラッシュを削除します)。プラグインは正常に動作します。
注:-plugin_name.mファイルに含まれているビルドフェーズですべてのファイルを追加する必要がある場合があります。