最近の変更後Appleは、アプリがプライバシーに敏感なデータにアクセスしようとする場合、特定のキーを必要とします。そのため、config.xmlにNSCameraUsageDescriptionキーを追加しました。
<platform name="ios">
<config-file parent="NSCameraUsageDescription" target="*-Info.plist">
<string>We are using a camera to </string>
</config-file>
</platform>
それから
cordova build ios --release --device
info.plistに適切な情報がないように見えるipaを生成します。私は何かを見逃しているように感じます。
質問1: NSCameraUsageDescriptionの問題を解決するには、config.xmlに何を入れる必要がありますか? 質問2:この文字列にローカライズを使用することは可能ですか?
ありがとうございました!
新しい回答:
Cordova CLI 6.5.0以降、次のようにinfo.plist
でedit-config
タグを使用して、config.xml
に直接書き込むことができます。
<string>your usage message</string>
</edit-config>
ただし、最新バージョンのプラグインを使用していることを確認してください。そうしないと、プラグイン変数によって値が上書きされる可能性があります。
ローカライズには、このプラグインのようなresource-file
タグとInfoPlist.stringsファイルを使用できます(ただし、プラグインは必要ありません。リソースファイルタグはconfig.xmlでサポートされています)
https://github.com/MBuchalik/cordova-plugin-ios-permissions
古い回答:
info.plist
タグを使用してconfig.xml
からconfig-file
にまだ書き込むことはできません(作業中です)
カメラプラグインの最新バージョンでは、プラグインのインストール時にNSCameraUsageDescription
を追加できます
cordova plugin add cordova-plugin-camera --variable CAMERA_USAGE_DESCRIPTION="your usage message"
現在、この文字列をローカライズすることはできません
私自身の研究の結果は次のとおりです。
間違っていたら訂正してください。 config.xmlから直接ローカライズに関する詳細情報をいただければ幸いです。
個人的に、カスタムプラグインを使用してinfo.plistファイルを変更するという考えは好きではありません。新しいプラグインを使用するたびに、アプリがますます壊れやすくなります。 :)
最初に、これはAppleがipaを拒否した後、Cli-7.1.0で動作します。
1)コードで、exに使用する場合。 cordova-plugin-barcodescannerとcordova-plugin-cameraとcordova-plugin-ios-camera-permissions すべての変数CAMERA_USAGE_DESCRIPTION、PHOTOLIBRARY_USAGE_DESCRIPTIONには同じ文字列が含まれている必要があります。それらのいずれかが異なる場合Appleはphonegapがデフォルト変数を使用するため、IPAを拒否します。
ej:
<plugin name="cordova-plugin-ios-camera-permissions" >
<variable name="CAMERA_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
</plugin><!-- spec="1.0.3" !-->
<plugin name="cordova-plugin-camera" >
<variable name="CAMERA_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
<gap:plugin name="cordova-plugin-image-picker" source="npm" />
<gap:plugin name="cordova-plugin-base64-joewsh" source="npm" /> <!-- convertir a base64 los files !-->
<gap:plugin name="cordova-plugin-barcodescanner" source="npm" spec="0.7.0" >
<variable name="CAMERA_USAGE_DESCRIPTION" value="YOUR-PERMISSION-REQUEST" />
</gap:plugin>
2)このコードを追加します(前述したように、変数に同じ文字列を使用することを忘れないでください):
<platform name="ios">
<edit-config target="NSLocationWhenInUseUsageDescription" file="*-Info.plist" mode="merge" overwrite="true">
<string>YOUR-PERMISSION-REQUEST</string>
</edit-config>
<edit-config target="NSPhotoLibraryUsageDescription" file="*-Info.plist" mode="merge" overwrite="true" >
<string>YOUR-PERMISSION-REQUEST</string>
</edit-config>
<edit-config target="NSCameraUsageDescription" file="*-Info.plist" mode="merge" overwrite="true">
<string>YOUR-PERMISSION-REQUEST</string>
</edit-config>
</platform>
必要に応じて、cordovaプロジェクト内で.plistファイルを手動で編集できます。これは私にとってはうまくいきましたが、これは生成されたファイルなので、ある時点で私の変更が上書きされるのではないかと心配しています。
しかし、助けに!
.plistファイルは、/platforms/ios/[Cordova Project Name]/[Cordova Project Name]-Info.plist
内のCordovaプロジェクト内に配置する必要があります。 Xcodeでプロジェクトを開き、左側にある[拡大鏡]アイコンをクリックして、プロジェクト内のファイルを検索することもできます。 info.plist
を入力すると、次のような結果が返されます。
INFOPLIST_FILE = [Some]/[Path]/[Cordova Project Name]-Info.plist
このパスは、Cordovaプロジェクトのインストールに関連している必要があります。そのため、プロジェクト内で検索すると、正しいファイルが表示されます。
エディターでこのファイルを開き、最初の<dict>
タグのすぐ内側に次の行を追加しました。
<key>NSCameraUsageDescription</key> <string>Uses camera to allow video chatting between two clients</string>
提出してビルドを表示し、stayをitunesconnectで表示することができました。現在、アプリのレビューを待っています。
私はcordova prepare ios
を実行しましたが、変更が上書きされないかどうかをテストするだけでしたので、あなたはこれを行うことができ、心配しないで、アプリケーションをインストールして実行する他の開発者に疲れているように見えます同じ問題に。更新した.plistファイルをレポジトリのルートにコピーし、readmeでメモしました。
$ cordova plugin add cordova-plugin-camera --variable CAMERA_USAGE_DESCRIPTION="this app will use your camera" --variable PHOTOLIBRARY_USAGE_DESCRIPTION="this app will access to your photo library"
./plugins/plugin-what-ever/plugin.xmlの内部を読んで、サポートされているキー名の種類を確認する必要があります。
IOS 10/11の場合、ショートカットとして cordova-plugin-ios-camera-permissions を使用できます。
カスタマイズされたメッセージを提供する方法のデフォルトと明確なドキュメントを提供します。
cordova plugin add cordova-plugin-ios-camera-permissions --save
すでにiOSプラットフォームをセットアップしている場合、削除および再追加が必要になる場合があります。
$ cordova platform rm ios
$ cordova platform add ios