Requesting Access to Protected Resources

3918 ワード

https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources
"Provide a purpose string that explains to the user why you need access to protected resources."
保護されたリソースにアクセスする必要がある理由を示す目的文字列をユーザーに提供します.

Overview


現代の設備はユーザーの機密情報を収集し、記憶する.多くのアプリケーションは、データを生成するデバイスハードウェアに依存して、これらのデータと有用なタスクを処理します.例えば、ナビゲーションアプリケーションは、地図上でユーザを特定するためにユーザの現在のGPS座標を必要とする.ただし、すべてのアプリケーションがすべてのデータにアクセスする必要があるわけではありません.ナビゲーション・アプリケーションでは、健康情報、カメラ・インタフェース、Bluetooth周辺機器は必要ありません.
アプリケーションは、実行する機能に必要な情報にアクセスするだけです.この原則をサポートするために、アップルのオペレーティングシステムは、保護されたデータとリソースへのアクセスをデフォルトで制限しています.アプリケーションは、状況や脈絡に応じてアクセスを要求できます.アクセスについて議論し、なぜアクセスする必要があるのかの説明を提供します.ユーザーは、リクエストを承認するか拒否するかを決定します.
Tip
アプリケーションにエンタイトルメントを追加するには、タイトルに記載されているように、意図を個別に宣言し、ユーザーにリソースアクセス許可を取得する必要があります.

Provide a Purpose String


アプリケーションが保護されたリソースに初めてアクセスしようとすると、承認するかどうかを通知されます.呼び出し方向のMyRouteのiOSアプリケーションには、次の例に示すように、ユーザーの場所へのアクセス要求が表示されます.

ユーザーが承認すると、選択内容が記憶され、リクエスト通知は再送信されません.ユーザーが拒否した場合、初期化プロンプトや他の試行へのアクセスはresource-specificで失敗します.ロケーション・データの特定のケースでは、ユーザーは、Allow Onceタブへの1回のセッションのみのアクセスを許可することを選択できます.
アプリケーション名を含むプロンプトのタイトルが自動的に生成されます.この場合、アプリケーションがアクセスする必要がある理由を説明するために、目的の文字列または説明を使用します.この場合、「目的の場所に到達するために回転方向を指定するために使用します.」というメッセージが表示されます.アプリケーションが機密データにアクセスする必要がある理由を正確かつ簡潔に説明することで、ユーザーが情報が利用可能な場合に意思決定を行い、アクセスの可能性を向上させることができます.
Note
外部ライブラリまたはSDKを使用する場合は、目的の文字列処理を行うための準備APIである可能性があります.アプリケーションがこのAPIを使用しない場合でも、ターゲット文字列はアプリケーションコメントを要求されます.リポジトリまたはSDKの開発者に連絡して、開発者が使用する保護されたリソースと目的に関する情報を取得できます.または、APIに招待されていないコードバージョンの発行を要求できます.外部SDKやライブラリへのアクセスなど、保護されたリソースへのすべてのアクセスを担当します.
使用方法の説明は、アプリケーションの情報属性リストに追加されたリソース固有のキーを文字列値に設定することによって提供されます.例えば、前のメッセージはNSLocationWhenInUseUsageDescriptionキーに関連する文字列である.Xcodeに内蔵されているProperty List Editorを使用してInfoを行います.plistファイルを変更してください.

Important
アプリケーションが保護されたリソースを使用する場合は、常に使用文字列を指定する必要があります.そうでなければ、リソースアクセスの試行に失敗し、アプリケーションが競合する可能性があります.
アプリケーションコメントは、保護されたリソースの使用状況をチェックし、目的の文字列ではなく、このようなリソースにアクセスするコードをアプリケーションに含めることはできません.たとえば、要求情報を含むアプリケーションにはNSContactsUsageDescription個の鍵が必要だというアプリケーションのコメントが表示される場合があります.
ITMS-90683: Missing Purpose String in Info.plist - Your app’s code references
one or more APIs that access sensitive user data. The app’s Info.plist file
should contain a NSContactsUsageDescription key with a user-facing purpose
string explaining clearly and completely why your app needs the data.
この問題を解決するには、アプリケーションが機密情報を必要とする理由を説明する目的の文字列が必要です.または、リソースにアクセスするコードを削除する必要があります.

Check for Authorization


保護されたリソースへのアクセスを提供する多くのシステムフレームワークには、リソースの使用を検証および要求するための専用APIがあります.これにより、現在のアクセス状況に応じてアプリケーションの実行を調整できます.例えば、ユーザがアプリケーションの受け入れを拒否した場合、UIから関連要素を削除することができる.
ユーザーは、設定を使用して任意の時点で権限を変更できるため、アクセスする前に機能の権限ステータスを常に確認してください.プライベートAPIがない場合は、アクセスの処理に失敗する準備ができている必要があります.

Reset Authorization Access


保護されたリソースへの最初の試行後のアクセスを試みると、ユーザーの許可された選択が記憶され、プロンプトは表示されません.ユーザーにプロンプトを再発行するには、これらのリソースのデバイスまたはシステムへのアクセスをリセットする必要があります.
保護されたリソースに対するiOSアプリケーションのアクセス権をリセットするには、「設定」>「一般」>「リセット」>「場所」および「個人情報のリセット」の順にタブを設定する必要があります.
Important
位置&個人情報のリセット装置のすべてのサービスの位置と個人設定をリセットします.
特定のサービスに対するMacOSアプリケーションの許可をリセットするには、端末がtccutil reset カーネルを実行する必要があります.たとえば、アップルイベントのすべての許可をリセットするには、次のように入力する必要があります.
$ tccutil reset AppleEvents
このコマンドは、保護されたリソースを使用しているすべてのアプリケーションの許可されたアクセスをリセットします.アドレス帳、カレンダー、ダイレクトストレージ、またはその他のサービスを個別にリセットできます.