Version: 2021.3
言語: 日本語
デバイスの機能と権限
アプリケーションの権限の宣言

Unity での Android の権限

Unity アプリケーションのサンドボックス外でデバイスの機能やデータにアクセスする権限 (許可) の取得には、2 つの段階があります。

  1. ビルド時に、アプリケーションの Android App Manifest (アプリマニフェスト) で権限を宣言します。
  2. 実行時に、ユーザーに権限をリクエストします。

一部の権限については、ビルド時の Android アプリマニフェストのエントリーと実行時の権限リクエストの両方が、Unity によって自動的に処理されます。詳細は Unity によって処理される権限 を参照してください。

権限の宣言

Android アプリケーションは、Android アプリマニフェストで宣言したデバイス機能やデータに関してのみ、ユーザーに権限をリクエストすることができます。これは、Android の権限処理の、ビルド時の段階です。権限の宣言方法については アプリケーションの権限の宣言 を参照してください。

ノート: プラグインがその Android アプリマニフェストで権限を宣言している場合、Gradle が、Gradle のマージの段階で、最終的な Android アプリマニフェストにその権限を自動的に追加します。

実行時の権限

実行時の権限は、アプリケーション実行中のどの時点でもリクエスト可能です。制限付きデータやデバイス機能へのアクセス権限のリクエストは、アプリケーションがそのデータや機能を必要とする状況が初めて発生したタイミングで行うのが最も適切です。また、アプリケーションがそのデータや機能を必要とする理由を説明するメッセージを、リクエストの送信前にユーザーに対して表示する必要があります。ユーザーが困惑しないようにコンテキストを提供することで、権限のリクエストがなるべく拒否されないようにすることが重要です。

実行時に権限をリクエストする方法については、実行時の権限のリクエスト を参照してください。

重要: Android アプリマニフェストが宣言していない権限をユーザーにリクエストしようとした場合、デバイスに権限ダイアログが表示されません。

Unity によって処理される権限

Unity は、Player 設定 と、アプリケーションの使用している Unity API に基づいて、必要な権限の一部を Android アプリマニフェストに自動的に追加し、実行時に権限リクエストを送信します。これは、アプリケーションの使用するプラグインに関しても同様です。

Unity が実行時に権限リクエストを自動送信しないようにするには、Android アプリマニフェストに unityplayer.SkipPermissionsDialog を追加します。これは、アプリケーションが各権限を必要とする理由についての情報を、ユーザーが権限リクエストを見る前に提供したい場合に役立ちます。この場合、権限リクエストを手動で送信する必要があります。詳細は 実行時の権限のリクエスト を参照してください。

Unity がどの権限を自動的に処理するかに関しては、以下のリストを参照してください。

  • If the application uses the Network class, Unity adds the INTERNET permission to the Android App Manifest and requests permission from the user the first time that the application uses Network.
  • If the application uses vibration such as Handheld.Vibrate, Unity adds the VIBRATE permission to the Android App Manifest and requests permission from the user the first time that the application uses vibration.
  • If the application uses the InternetReachability property, Unity adds the ACCESS_NETWORK_STATE permission to the Android App Manifest and requests permission from the user the first time that the application uses Application.InternetReachability.
  • アプリケーションが LocationService などの位置情報 API を使用する場合、Unity は Android アプリマニフェストに ACCESS_FINE_LOCATION 権限を追加し、アプリケーションが初めて位置情報を使用する時にユーザーにこの権限をリクエストします。
  • アプリケーションが WebCamTexture クラスを使用する場合、Unity は Android アプリマニフェストに CAMERA 権限を追加し、アプリケーションが初めて WebCamTexture を使用する時にユーザーにこの権限をリクエストします。
  • アプリケーションが Microphone クラスを使用する場合、Unity は Android アプリマニフェストに RECORD_AUDIO 権限を追加し、アプリケーションが初めて Microphone を使用する時にユーザーにこの権限をリクエストします。

その他の参考資料

デバイスの機能と権限
アプリケーションの権限の宣言