使用法の説明がないためにアプリが拒否されました(Xcode8)


91

そのため、本日のメールを受け取りました。使用方法の説明が不足しているため、アプリの最新ビルドがiTunes Connectに拒否されたとのことです。正確には:

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

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

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

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

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

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

これらの問題が修正されたら、修正したバイナリを再配信できます。

私はこれらがiOS 10で必須になっていることを理解しましたが、唯一の問題は私のアプリがこれらのいずれかにアクセスするための許可を要求していないということです。

私の依存関係(Cocoapods)の1つにこれらのアクセス許可を要求するコードが含まれている可能性があるためですか?または、ユーザーのカレンダー、連絡先などの表示を要求したことがない場合でも、これらの説明は必須ですか?


3
私の経験から-これらは、権限を要求している場合にのみ必要です。たぶん、いくつかの依存関係があなたのためにこれをやっています。また、これらのアクセス許可はすべて、特にアプリが単純なToDoリストである場合、魚臭いにおいがします。たぶん、依存関係がフィッシングになっているのでしょうか?
Eimantas 2016

PodFileあなたが使用するライブラリのリストを投稿できますか(外部のココアポッドを使用している場合)?
ジュリアンケレ2016

それはgithub.com/nickoneill/PermissionScopeでした ..ご協力ありがとうございます!
KimHafr

彼は、使用法を説明し、ショー:iosdevcenters.blogspot.com/2016/09/...
Saeid

私はまったく同じ問題を抱えており、それが原因だと思います:pod 'ReactNativePermissions'、:path => '../node_modules/react-native-permissions'
luky

回答:


33

この説明は、あなたまたはあなたがリンクしようとするあらゆるフレームワークについて、アクセスの試みに対して必須です。使用法の説明が提供されていない場合、コンテンツにアクセスしようとするとエラーが生成されるため、これらのエラーが発生する場合は、アプリがエラーをリクエストしている必要があります。アプリまたはそのフレームワークがこれらを必要とする理由を発見し、適切な使用法の説明をアプリのinfo.plistに追加する必要があります。

またはより理想的には、アクセスが必要ない場合は、それを要求しない(または不必要に実行するフレームワークを使用する)方法がないかどうかを確認してください。


11
これらのすべてのアクセス許可を要求するライブラリを追加することを想像することはできませんでした。しかし、私がそれを見つけたとき、それはとても明白でした:github.com/nickoneill/PermissionScope
KimHafr

1
このようなフレームワークは、アプリが必要以上のアクセス許可を宣言する原因となるため、良い考えではないかもしれません。
Matthew Seaman

3
これはバグではなく機能の1つだと思います。iTunesConnectは、アプリのどこかで、誰かが権限を要求している可能性があることを検出します。その場合、permissionscopeで一部のコードを実際に呼び出す場合に備えて、これらすべての使用法の説明を入力する必要があります。私はフレームワークも好きで、それを置き換える準備ができていません。だから私はいくつかの偽のテキストを記入し、アプリは承認されました。私はそれをAppStoreに提出したので、うまくいけばうまくいくでしょう:-)
KimHafr

15
これらの許可を要求しているフレームワークを検出する方法が必要ですか?
neobie

5
Neobie-アクセス許可を要求するフレームワークを検出する方法を見つけましたか?
ニテッシュ2017

140

iOS 10は、info.plistに権限を追加する必要があります。このBLOGを確認するだけです。-settings-in-ios-10あなたはすべてのアイデアを得ます。

エラーログに基づくinfo.plistファイルに権限追加します。

注:アクセス許可の適切な理由を文字列値に書き込んでください。そうでない場合、アップルは再びアプリを拒否します。

NSCameraUsageDescription

<key>NSCameraUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSContactsUsageDescription

<key>NSContactsUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSPhotoLibraryUsageDescription

<key>NSPhotoLibraryUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSBluetoothPeripheralUsageDescription

<key>NSBluetoothPeripheralUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSMicrophoneUsageDescription

<key>NSMicrophoneUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSMotionUsageDescription

<key>NSMotionUsageDescription</key>
    <string>$(PRODUCT_NAME) motion use.</string>

NSLocationAlwaysUsageDescription

<key>NSLocationAlwaysUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSLocationUsageDescription

<key>NSLocationUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSLocationWhenInUseUsageDescription

<key>NSLocationWhenInUseUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSRemindersUsageDescription

<key>NSRemindersUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSSiriUsageDescription

<key>NSSiriUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSVideoSubscriberAccountUsageDescription

<key>NSVideoSubscriberAccountUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSSpeechRecognitionUsageDescription

<key>NSSpeechRecognitionUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSCalendarsUsageDescription

<key>NSCalendarsUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

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


「$(PRODUCT_NAME)」ではなく「$ {PRODUCT_NAME}」にすべきではありませんか?"{}" の代わりに "()"。
backslash-f

@ backslash-f、新しいプロジェクトの既存のplistファイルを確認してください$(PRODUCT_NAME)。あなたはBundle nameplistファイルのようにデフォルトのプロパティを見ることができます。
Jayesh Thanki 2017

1
このような一般的な説明では、App Storeの承認を得られなくなることに注意してください。同様の説明をするために、2回丁度打たれました。人間の実際の使い方を説明する必要があります
O'Rooney

9

次のように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>

誰かが助けてくれることを願っています...


6

同じ問題があり、リンクするフレームワークにこの権限を要求するコードが含まれている場合(アプリが要求しない場合でも)、使用方法の説明が必要なようです。しかし、私のテストによると、それらを要求しない場合、それらはアプリの権限リストに表示されません。


3

カレンダー: キー:プライバシー-カレンダー使用法説明
値:$(PRODUCT_NAME)カレンダーイベント

リマインダー: キー:プライバシー-リマインダー使用法説明
値:$(PRODUCT_NAME)リマインダーの使用

連絡先:キー:プライバシー-連絡先の使用法の説明
値:$(PRODUCT_NAME)の連絡先の使用

写真: キー:プライバシー-写真ライブラリの使用法の説明
値:$(PRODUCT_NAME)の写真の使用

Bluetooth共有: キー:プライバシー-Bluetooth周辺機器の使用説明
値:$(PRODUCT_NAME)Bluetooth周辺機器の使用

マイク: キー:プライバシー-マイクの使用法の説明
値:$(PRODUCT_NAME)のマイクの使用

カメラ: キー:プライバシー-カメラの使用法の説明
値:$(PRODUCT_NAME)のカメラの使用

場所: キー:プライバシー-場所常に使用説明
値:$(PRODUCT_NAME)場所の使用

キー:プライバシー-使用中の場所使用法説明
値:$(PRODUCT_NAME)の場所の使用

Heath: Key:Privacy-Health Share Usage Description
値:$(PRODUCT_NAME)ヒースシェアの使用

キー:プライバシー-ヘルスアップデートの使用法の説明
値:$(PRODUCT_NAME)ヒースアップデートの使用

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

メディアライブラリ: キー:プライバシー-メディアライブラリの使用法の説明
値:$(PRODUCT_NAME)メディアライブラリの使用

モーション: キー:プライバシー-モーション使用法の説明
値:$(PRODUCT_NAME)モーション使用

音声認識: キー:プライバシー-音声認識の使用法の説明
値:$(PRODUCT_NAME)の音声の使用

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

TVプロバイダー: キー:プライバシー-TVプロバイダーの使用法の説明
値:$(PRODUCT_NAME)tvProvider use


0

CocoaPodsまたはCarthageが原因で、アプリにこれらのすべての権限設定が最初から突然設定されたのはなぜでしょうか。アプリをアップグレードして、Cocoapods(および依存関係)が広範囲にインストールされているcordova-plugin-firebasexを使用しました。プロジェクトのルートにPermissionsConfiguration.xcconfigを配置することで、cocoapodsをプロジェクトにインストールする前に、これらの権限をオフにすることができます-これについて詳しくは、https://cocoapods.org/pods/Permission#installationをご覧ください。

Info.plistファイルに7つのアクセス許可キー/文字列がないためにアプリの新しいバージョンが拒否されたとき、これはすべて私を驚かせました。私のアプリはこれらの権限を必要としないか、または使用していないので、これを引き起こしている原因を見つけるためにプロジェクトを掘り下げる必要がありました(決して持っていない)。

それは存在するかもしれませんが、現時点ではポッドの統合後に権限を削除する方法を見つけることができません...プロジェクトをやり直さずにこれを行う方法を掘り下げる必要があります。

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