web-dev-qa-db-ja.com

NSCalendarsUsageDescriptionが必要な理由

ITunes Connectにアップロードすると、アプリにNSCalendarsUsageDescriptionプライバシーが提供されていないというエラーが表示されます。現在、この情報は必須であることは承知していますが、このプライバシー使用法の説明を必要とするものをアプリが何をどこで使用しているかはわかりません。

NSCalendarsUsageDescriptionが必要なアプリは何をしていますか/使用していますか?

Dear developer,

We have discovered one or more issues with your recent delivery for "MyApp". To process your delivery, the following issues must be corrected:

This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCalendarsUsageDescription key with a string value explaining to the user how the app uses this data.

Once these issues have been corrected, you can then redeliver the corrected binary.

Regards,

The App Store team

編集:最初の回答で既にコメントしたようにソリューションが機能しなかったという事実と、可能性のある複製が実際にこの使用法の説明を必要とするもの(実際)の質問に答えていないという事実のため、重複ではありません。

23
Martin Polak

nmツールを使用して、フレームワークバイナリ内のEventKit固有のシンボルを探すことができます。

nm YourFramework.framework/YourFramework | grep EK # EK is a prefix for EventKit classes

または、1行(拡張子のないファイルを探し、CodeResourcesも無視して、無関係な出力を減らします):

find YourApp/Frameworks ! -name '*CodeResources*' -type f ! -name "*.*" -exec nm -o -- {} + | grep EK

そのようなものがある場合、次のようなものが表示されます。

0000000000003fdb t -[ClusterPrePermissions EKEquivalentEventType:]
                 U _OBJC_CLASS_$_EKEventStore
16

Info.plistファイルを更新して、拒否メールに許可ベースを追加しますまたはエラーログ。

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>

OR

プライバシーに敏感なデータアプリの拒否の解決

https://developer.Apple.com/library/content/qa/qa1937/_index.html

12
Sachin Nikumbh

リンゴのドキュメントによると:

NSCalendarsUsageDescription(文字列-iOS)このキーを使用すると、アプリがユーザーのカレンダーにアクセスする理由を説明できます。システムがユーザーにアクセスを許可するようプロンプトを出すと、この文字列がアラートの一部として表示されます。

次に、実装方法の説明に進みます。

重要:ユーザーのプライバシーを保護するには、iOS 10.0以降にリンクされ、ユーザーのカレンダーにアクセスするiOSアプリが、その意図を静的に宣言する必要があります。 NSCalendarsUsageDescriptionキーをアプリのInfo.plistファイルに含め、このキーの目的の文字列を提供します。アプリが、対応する目的の文字列なしでユーザーのカレンダーにアクセスしようとすると、アプリは終了します。

基本的にこれをあなたに挿入するinfo.plistファイル

 <key>NSCalendarsUsageDescription</key>
<string>purpose for using calendar</string>

ココアキーの詳細についてはこちらをご覧ください こちら

9
Dustin Spengler

AdMob SDKの新しいバージョンに更新すると、問題が解決しました。

4
thatzprem

CocoaPodsまたはCarthageのせいで、アプリが突然これらすべてのアクセス許可設定を持つようになった理由を知りたい場合は、これらすべてのアクセス許可にフックを設定します。アプリをアップグレードしてcordova-plugin-firebasexこれには、広範なCocoapods(および依存関係)がインストールされています。プロジェクトにcocoapodsをインストールする前に、PermissionsConfiguration.xcconfigプロジェクトのルートにあります。これについては、こちらで詳しく読むことができます。 https://cocoapods.org/pods/Permission#installation

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

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

0
rolinger