iOS 10.0ランタイムのNSCameraUsageDescriptionがクラッシュしますか?


154

iOS 10.0最後のベータ版を使用しています。カメラを使用してアプリのバーコードをスキャンしようとしたところ、このランタイムエラーでクラッシュしました。

このアプリは、使用法の説明なしでプライバシーに敏感なデータにアクセスしようとしたため、クラッシュしました。アプリのInfo.plistには、アプリがこのデータをどのように使用するかをユーザーに説明する文字列値を持つNSCameraUsageDescriptionキーが含まれている必要があります。

このキーをplistに入れますが、それでもクラッシュしましたか?


6
同じ問題があり、info.plistにNSCameraUsageDescriptionを追加しましたが、それでも同じメッセージでクラッシュします。なんとか解決しましたか?どうやら、この問題に答えた人は、キーを既に追加していてもクラッシュすることを理解していませんでした。
CarmenA 2016年

エントリを正しいinfo.plistファイルに追加したが、それでも失敗する場合は、Xcodeがinfo.plist、画像、オーディオ、ムービーなどのリソースファイルへの変更に気付かないことがあるためです。実行する必要がある場合があります。派生データフォルダーからアプリビルド製品をクリーンアップまたは削除して、Xcodeに最新バージョンを強制的に使用させます。
Walt Sellers、

回答:


227

iOS 10以降は、アプリがアクセスするすべてのシステムのプライバシー機密データの使用法の説明を以下のようにInfo.plistで定義して提供する必要があります。

カレンダー

Key    :  Privacy - Calendars Usage Description    
Value  :  $(PRODUCT_NAME) calendar events

注意:

Key    :   Privacy - Reminders Usage Description    
Value  :   $(PRODUCT_NAME) reminder use

連絡先 :

Key    :   Privacy - Contacts Usage Description     
Value  :  $(PRODUCT_NAME) contact use

写真 :

Key    :  Privacy - Photo Library Usage Description    
Value  :  $(PRODUCT_NAME) photo use

Bluetooth共有:

Key    :  Privacy - Bluetooth Peripheral Usage Description     
Value  :  $(PRODUCT_NAME) Bluetooth Peripheral use

マイク:

Key    :  Privacy - Microphone Usage Description    
Value  :  $(PRODUCT_NAME) microphone use

カメラ:

Key    :  Privacy - Camera Usage Description   
Value  :  $(PRODUCT_NAME) camera use

場所:

Key    :  Privacy - Location Always Usage Description   
Value  :  $(PRODUCT_NAME) location use

Key    :  Privacy - Location When In Use Usage Description   
Value  :  $(PRODUCT_NAME) location use

ヒース:

Key    :  Privacy - Health Share Usage Description   
Value  :  $(PRODUCT_NAME) heath share use

Key    :  Privacy - Health Update Usage Description   
Value  :  $(PRODUCT_NAME) heath update use

HomeKit:

Key    :  Privacy - HomeKit Usage Description   
Value  :  $(PRODUCT_NAME) home kit use

メディアライブラリー:

Key    :  Privacy - Media Library Usage Description   
Value  :  $(PRODUCT_NAME) media library use

モーション:

Key    :  Privacy - Motion Usage Description   
Value  :  $(PRODUCT_NAME) motion use

音声認識 :

Key    :  Privacy - Speech Recognition Usage Description   
Value  :  $(PRODUCT_NAME) speech use

SiriKit:

Key    :  Privacy - Siri Usage Description  
Value  :  $(PRODUCT_NAME) siri use

TVプロバイダー:

Key    :  Privacy - TV Provider Usage Description   
Value  :  $(PRODUCT_NAME) tvProvider use

このリンクで詳細情報を入手できます。


1
Privacy - Photo Library Usage DescriptionエラーのためにそれをしましたNSPhotoLibraryUsageDescription
ブルーノビエリ

Apple Developmentを初めて使用しましたが、この問題は迷惑でした。うれしかった。乾杯!
user2529011

1
@MaylorTaylor:はい、追加する必要があります。
Bhoopi

111

Appleがユーザーのプライベートデータタイプにアクセスする方法を変更したため iOS 10

Privacy - Camera usage descriptionアプリの「」キーを追加する必要がありますInfo.plist以下の例のように、アプリケーションに適用される使用情報にこれは、バーコードのスキャンに使用したものです。

詳細については、以下のスクリーンショットをご覧ください。

ここに画像の説明を入力してください


62

これをキーの下にinfo.plistに追加する必要があります。

NSCameraUsageDescription または Privacy - Camera usage description

使用方法の説明を追加します。

詳細なスクリーンショットはこのリンクから入手できます


彼はすでにそれを追加しているように思えますが、それでもクラッシュします。これは、そのKVPがplistに含まれている場合でも、そうではないかのようにクラッシュするという同じ問題です。

43

または、Info.plistをソースコードとして開き、これを追加します。

<key>NSCameraUsageDescription</key>
<string>Camera usage description</string>

4
"NSCameraUsageDescription"をローカライズしようとしている場合は"NSCameraUsageDescription" = "Requires access to the camera";、ローカライズされたinfoPlist.stringsファイルを追加してください
Shehzad

30

これらの生の値を使用して、info.plistにコピーします

    <key>NSCalendarsUsageDescription</key>
      <string>$(PRODUCT_NAME) calendar events</string>
    <key>NSRemindersUsageDescription</key>
      <string>$(PRODUCT_NAME) reminder use</string>
    <key>NSCameraUsageDescription</key>
      <string>This app requires to access your photo library to show image on profile and send via chat</string>
    <key>NSMicrophoneUsageDescription</key>
      <string>This app requires to access your microphone to record video with your voice send via chat</string>
    <key>NSPhotoLibraryUsageDescription</key>
      <string>This app requires to access your photo library to show image on profile and send via chat</string>
    <key>NSContactsUsageDescription</key>
       <string>$(PRODUCT_NAME) contact use</string>
    <key>NSLocationAlwaysUsageDescription</key>
      <string>$(PRODUCT_NAME) location use</string>
    <key>NSLocationWhenInUseUsageDescription</key>
      <string>$(PRODUCT_NAME) location use</string>

あなたからこれらの生のキー名を得ましたか?
Omar N Shamali

これは素晴らしい。xCodeで大量のクリックを行う必要がなくなりました
MaylorTaylor

26

xcodeのUIが1つのバージョンから次のバージョンに少し変更されたため、プロジェクト->ターゲット->情報に役立つ場合、9.0ベータ4のplistを更新します。ここに画像の説明を入力してください


2
これは受け入れられる答えになるはずです!すでにinfo.plistに追加<key>NSCameraUsageDescription</key>しているにもかかわらず、XCode 9.2でこれと同じ問題が発生していました。
psantos 2017

2
間違いなく受け入れられた答え!! 私のプロジェクトには2つのターゲットがあり、これ<key>NSCameraUsageDescription</key>を2番目のinfo.plistファイルに追加しようとしましたが、効果がありません。また、git statusを実行することにより、XCode(10.1)がこれらの変更を確実に考慮していないことを確認できます、別のターゲットのinfo.plistに変更がなかったためです。したがって、正しい方法はProject-> Target-> Infoを通過することです。ありがとう!
ブラジャーシーン

4

カメラを使用しようとしたときに直面したもう1つの例は_CRASHING_DUE_TO_PRIVACY、「Camera Usage Description」を追加した後でも、クラッシュしてビジー状態であったことです。コールスタックから具体的な情報を取得できなかった後、「オーガナイザー」に切り替えて、デバイスのクラッシュレポートを調べました。「Microphone Usage Description」が欠落しているため、プライバシーについて不平を言っていることがわかりました。私はそれを追加して、そのような不可解な故障を取り除きました。


4

Info.plistに適切なキーを追加してもエラーが発生する場合:

キーを正しいInfo.plistに追加していることを確認してください。新しいバージョンのxCodeには、明らかに3つのInfo.plistがあります。

1つは、問題を解決したアプリの名前が付いたフォルダーの下にあります。

2番目はYourappnameTestsの下にあり、3番目はYourappnameUITestsの下にあります。

それが役に立てば幸い。


2

Ionicを使用している場合は、プラットフォームのiosタグ内に追加することで、config.xmlから直接解決できます。

<platform name="ios">
.
.
.
    <config-file target="*-Info.plist" parent="NSPhotoLibraryUsageDescription">
        <string>photo library usage description</string>
    </config-file>
    <config-file target="*-Info.plist" parent="NSCameraUsageDescription">
        <string>camera usage description</string>
    </config-file>
.
.
.
</platform>

@BHUPIの回答にも感謝します。



1

私はplistをチェックし、それが機能していないことを発見しました。「プロジェクト」情報でのみ、「プライバシー-カメラ...」を追加する必要があります。それで、機能するはずです。お役に立てれば幸いです。


0

同じ問題があり、解決策が見つかりませんでした。Mark90は正しいinfo.plistファイルがたくさんあるので、正しいものを編集する必要があります。[プロジェクト]に移動し、[ ターゲット ]でプロジェクト(テストではなく)を選択し、タブバーで[情報]を選択して、[ カスタムiOSターゲットプロパティ ]に権限を追加します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.