web-dev-qa-db-ja.com

Cordova Info.plist NSCameraUsageDescriptionキーがありません

最近の変更後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:この文字列にローカライズを使用することは可能ですか?

ありがとうございました!

25
Pavel Kovalev

新しい回答:

Cordova CLI 6.5.0以降、次のようにinfo.plistedit-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"

現在、この文字列をローカライズすることはできません

32
jcesarmobile

私自身の研究の結果は次のとおりです。

    • はい、config-を使用してinfo.plistconfig.xmlファイルから変更できますファイルタグ、butそのためにプラグインを使用する必要があります (cordova custom config) そして、指示に従ってください。
    • ただし、おそらくより良いオプションはplugin.xmlを使用して同じことを行うことです。詳細については、こちらをご覧ください (plugin.xmlからの情報plistの変更)
    • @jcesarmobileが言及した別のオプション-現在のカメラプラグインは cordova plugin cameraこのソリューションはプラグインに固有です

間違っていたら訂正してください。 config.xmlから直接ローカライズに関する詳細情報をいただければ幸いです。

個人的に、カスタムプラグインを使用してinfo.plistファイルを変更するという考えは好きではありません。新しいプラグインを使用するたびに、アプリがますます壊れやすくなります。 :)

7
Pavel Kovalev

最初に、これは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>
3
Vero O

必要に応じて、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でメモしました。

2
bondydaa

私は多くの時間を検索し、成功せずに多くのソリューションを試しました。

最後に、行のInfoタブでXcodeを使用してこれらのデータを定義しました

Privacy - Camera usage description

enter image description here

時間を大幅に節約できます。

0
Samuel Dauzon
$ 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の内部を読んで、サポートされているキー名の種類を確認する必要があります。

0
masayang

プロジェクトに移動>>ターミナルを開きます

このコマンドを実行します

cordova plugin add cordova-plugin-camera --variable CAMERA_USAGE_DESCRIPTION="Allow the app to use your camera" --variable PHOTOLIBRARY_USAGE_DESCRIPTION="Allow the app to access your photos"

enter image description here

必要に応じて、「アプリにカメラの使用を許可する」、「アプリに写真へのアクセスを許可する」の値を変更し続けることができます。

0
Raghav

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
0
Ken Colton