それで私は今日このメールを受け取り、私のアプリの最新ビルドはiTunes Connectによって拒否されました。正確には:
このアプリは、使用法の説明なしでプライバシーに敏感なデータにアクセスしようとします。アプリのInfo.plistには、アプリがこのデータをどのように使用するかをユーザーに説明する文字列値を含むNSContactsUsageDescriptionキーを含める必要があります。
このアプリは、使用法の説明なしでプライバシーに敏感なデータにアクセスしようとします。アプリのInfo.plistには、アプリがこのデータをどのように使用するかをユーザーに説明する文字列値を含むNSCalendarsUsageDescriptionキーを含める必要があります。
このアプリは、使用法の説明なしでプライバシーに敏感なデータにアクセスしようとします。アプリのInfo.plistには、アプリがこのデータをどのように使用するかをユーザーに説明する文字列値を含むNSPhotoLibraryUsageDescriptionキーを含める必要があります。
このアプリは、使用法の説明なしでプライバシーに敏感なデータにアクセスしようとします。アプリのInfo.plistには、アプリがこのデータをどのように使用するのかをユーザーに説明する文字列値を含むNSBluetoothPeripheralUsageDescriptionキーが含まれている必要があります。
このアプリは、使用法の説明なしでプライバシーに敏感なデータにアクセスしようとします。アプリのInfo.plistには、アプリがこのデータをどのように使用するかをユーザーに説明する文字列値を含むNSMicrophoneUsageDescriptionキーを含める必要があります。
このアプリは、使用法の説明なしでプライバシーに敏感なデータにアクセスしようとします。アプリのInfo.plistには、アプリがこのデータをどのように使用するかをユーザーに説明する文字列値を含むNSMotionUsageDescriptionキーを含める必要があります。
これらの問題が修正されたら、修正されたバイナリを再配信することができます。
私はこれらがiOS 10で必須になったことを考え出しました、しかし唯一の問題は私のアプリがこれらのどれにもアクセスする許可を要求していないということです。
私の依存関係の1つ(Cocoapod)にこれらの許可を要求するコードが含まれている可能性がありますか?ユーザーのカレンダー、連絡先などの閲覧を要求しない場合でも、これらの説明は必須ですか。
説明は、あなたがアクセスしようとする試みに対してあなたがリンクしているコンテンツまたはあなたがリンクしているフレームワークのために必須です。使用方法の説明が提供されていない場合、エラーはコンテンツにアクセスしようとしたときに生成されるため、これらのエラーが発生した場合は、アプリがそれらを要求している必要があります。アプリまたはそのフレームワークがこれらを必要とする理由を発見し、アプリのinfo.plistに適切な使用方法の説明を追加する必要があります。
もっと理想的には、アクセスが必要ない場合は、それを要求しない方法があるかどうかを確認します(または不要に機能するフレームワークを使用します)。
iOS 1に許可を追加する必要がありますinfo.plistこれを確認するだけ BLOG:-settings-in-ios-1 すべてのアイデアが得られます。
許可の追加 in info.plistファイルのベースerrorログ。
注:文字列値に許可の適切な理由を記述します。それ以外の場合は、Appleアプリを再度拒否します。
NSCameraUsageDescription
<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) camera use.</string>
NSContactsUsageDescription
<key>NSContactsUsageDescription</key>
<string>$(PRODUCT_NAME) contacts use.</string>
NSPhotoLibraryUsageDescription
<key>NSPhotoLibraryUsageDescription</key>
<string>$(PRODUCT_NAME) photos and video use.</string>
NSBluetoothPeripheralUsageDescription
<key>NSBluetoothPeripheralUsageDescription</key>
<string>$(PRODUCT_NAME) bluetooth use.</string>
NSMicrophoneUsageDescription
<key>NSMicrophoneUsageDescription</key>
<string>$(PRODUCT_NAME) microphone use.</string>
NSMotionUsageDescription
<key>NSMotionUsageDescription</key>
<string>$(PRODUCT_NAME) motion use.</string>
NSLocationAlwaysUsageDescription
<key>NSLocationAlwaysUsageDescription</key>
<string>$(PRODUCT_NAME) location use.</string>
NSLocationUsageDescription
<key>NSLocationUsageDescription</key>
<string>$(PRODUCT_NAME) location use.</string>
NSLocationWhenInUseUsageDescription
<key>NSLocationWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME) location use.</string>
NSRemindersUsageDescription
<key>NSRemindersUsageDescription</key>
<string>$(PRODUCT_NAME) reminders use.</string>
NSSiriUsageDescription
<key>NSSiriUsageDescription</key>
<string>$(PRODUCT_NAME) siri use.</string>
NSVideoSubscriberAccountUsageDescription
<key>NSVideoSubscriberAccountUsageDescription</key>
<string>$(PRODUCT_NAME) video use.</string>
NSSpeechRecognitionUsageDescription
<key>NSSpeechRecognitionUsageDescription</key>
<string>$(PRODUCT_NAME) speech recognition use.</string>
NSCalendarsUsageDescription
<key>NSCalendarsUsageDescription</key>
<string>$(PRODUCT_NAME) user your calendar.</string>
Info.plistに次のように追加できます。
<key>NSCalendarsUsageDescription</key>
<string>Explain the reasons for accessing...</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Explain the reasons for accessing...</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Explain the reasons for accessing...</string>
等.
誰かを助けることを願っています...
私は同じ問題を抱えていて、あなたがリンクしているフレームワークがこの許可を要求するコードを持っている(あなたのアプリが決してそれらを要求しないとしても)なら、用法の説明は必要です。しかし、私のテストによると、あなたがそれらを要求しなければ、それらはあなたのアプリの許可リストには現れないでしょう。
Calendar:キー:プライバシー - カレンダー使い方説明
値:$(PRODUCT_NAME)カレンダーの予定
リマインダー:キー:プライバシー - リマインダー使用法説明
値:$(PRODUCT_NAME)リマインダー使用
連絡先:キー:プライバシー - 連絡先使用法説明
値:$(PRODUCT_NAME)連絡先の使用
Photo: Key:Privacy - フォトライブラリ利用方法説明
値:$(PRODUCT_NAME)写真用
Bluetooth共有:キー:プライバシー - Bluetooth周辺機器の使用説明
値:$(PRODUCT_NAME)Bluetooth周辺機器使用
Microphone: Key:プライバシー - マイクの使用法説明
値:$(PRODUCT_NAME)マイク使用
Camera:キー:プライバシー - カメラ使用法説明
値:$(PRODUCT_NAME)カメラ使用
Location: Key:Privacy - Location常に使用法説明
値:$(PRODUCT_NAME)地域の使用
キー:プライバシー - 使用中の場所使用法説明
値:$(PRODUCT_NAME)地域の使用
Heath: Key:プライバシー - 健康シェア使用法
値:$(PRODUCT_NAME)ヒースシェア使用
キー:プライバシー - 健康状態アップデート
値:$(PRODUCT_NAME)ヘルスアップデート使用
HomeKit:キー:プライバシー - HomeKit使用法説明
値:$(PRODUCT_NAME)ホームキット用
Media Library:キー:プライバシー - Media Library使用法説明
値:$(PRODUCT_NAME)メディアライブラリの使用
Motion: Key:プライバシー - モーション用法説明
値:$(PRODUCT_NAME)モーション使用
音声認識:キー:プライバシー - 音声認識使用法説明
値:$(PRODUCT_NAME)の音声使用
SiriKit:キー:プライバシー - Siri使用法の説明
値:$(PRODUCT_NAME)シリ使用
TV Provider: Key:プライバシー - TV Provider使い方説明
値:$(PRODUCT_NAME)tvプロバイダ使用
CocoaPodsまたはCarthageのせいで、アプリが突然これらすべてのアクセス許可設定を持つようになった理由を知りたい場合は、これらのアクセス許可すべてにフックを設定します。広範なCocoapods(および依存関係)がインストールされているcordova-plugin-firebasexを使用するようにアプリをアップグレードしました。プロジェクトのルートにPermissionsConfiguration.xcconfigを配置することで、プロジェクトにcocoapodsをインストールする前に、これらの権限をオフにすることができます。これについて詳しくは、こちらをご覧ください: https://cocoapods.org/pods/Permission#インストール
Info.plistファイルに7つの権限キー/文字列がないため、アプリの新しいバージョンが拒否されたとき、これはすべて私を驚かせました。私のアプリはこれらのアクセス許可を必要としないか、使用していないので、これを引き起こしているものを見つけるために、プロジェクトを掘り下げなければなりませんでした。
それは存在するかもしれませんが、現時点ではポッド統合後に権限を削除する方法を見つけることができません...私のプロジェクトをやり直さずにこれを行う方法を掘り下げる必要があります。