通知の実行時権限
Android 13以降で通知権限を要求します
「通知の実行時権限」はCoddyKit上の無料Android Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAndroid Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Android Academyコースには全4レッスンが含まれています。
通知権限
Android 13(API 33)以降では、通知を投稿するためにランタイム権限POST_NOTIFICATIONSをアプリからリクエストする必要があります。この権限がない場合、通知は警告なしにブロックされます。
追加された理由
Android 13より前は、通知がデフォルトで有効になっており、ユーザーが通知の多いアプリをミュートするには設定画面を探す必要がありました。ランタイム権限ではこの仕組みが変わり、ユーザーが明示的に許可するため、迷惑な通知を減らせます。
マニフェストで宣言する
まず、AndroidManifest.xmlで権限を宣言します。プロンプトが表示されるのはAPI 33以降だけですが、サポートするすべてのバージョンで宣言が必要です。
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />危険な権限
POST_NOTIFICATIONSはランタイム権限(危険な権限)に分類されます。そのためAndroid 13以降では、カメラや位置情報と同じように、ユーザーにリクエストして応答を処理する必要があります。
バージョンによる動作の違い
バージョンによる違いに注意してください。
- API 33以降:ランタイムでリクエストする必要があります。拒否されると通知は届きません
- API 32以下:通知はデフォルトで許可されるため、プロンプトは必要ありません
リクエスト前に確認する
リクエストするのはAndroid 13以降の場合、かつまだ許可されていない場合だけにしてください。バージョンチェックで呼び出しを保護します。
val needsRequest = Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU &&
ContextCompat.checkSelfPermission(
context, Manifest.permission.POST_NOTIFICATIONS
) != PackageManager.PERMISSION_GRANTEDComposeでリクエストする
他の権限で学んだものと同じActivity Result APIを使います。RequestPermissionコントラクトのlauncherを用意し、POST_NOTIFICATIONSを指定して起動します。
val launcher = rememberLauncherForActivityResult(
ActivityResultContracts.RequestPermission()
) { granted ->
// update UI based on whether notifications are allowed
}リクエストを起動する
リクエストを実行するのはAPI 33以降だけにしてください。理想的には、アプリの起動時に無条件で表示するのではなく、通知が役立つ操作をユーザーが行ったときに表示します。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
launcher.launch(Manifest.permission.POST_NOTIFICATIONS)
}状況に応じて尋ねる
すべての権限と同様に、状況に応じてリクエストしてください。たとえば、アプリを開いた直後ではなく、ユーザーがリマインダーなどの機能を有効にした後に、メリットを説明して尋ねます。
拒否された場合も適切に処理する
拒否されてもアプリの動作を壊さないでください。通知に依存する切り替え項目を無効にするか、通知がオフになっていることを知らせるヒントを表示します。後で有効にしたい場合に備えて、システムの設定へのリンクを用意してもよいでしょう。
Target SDKによる適用
ランタイム権限が必要になるのは、アプリがAPI 33以降をターゲットにしている場合です。古いアプリをAndroid 13で実行すると、最初の投稿時にシステムがプロンプトを自動表示することがありますが、それでも明示的にリクエストしてください。
理解度チェック
通知のランタイム権限について理解できているか確認しましょう。
まとめ
通知権限を処理しました。
- Android 13以降では
POST_NOTIFICATIONSランタイム権限が必要です - マニフェストで宣言し、Activity Result APIを使ってリクエストします
- バージョンチェックでリクエストを保護し、状況に応じて尋ねます
- 拒否された場合も適切に機能を縮退させます
Notificationsコースを修了しました。
よくある質問
「通知の実行時権限」レッスンは無料ですか?
はい。「通知の実行時権限」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Android Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Android Academyコースには全4レッスンが含まれています。
「通知の実行時権限」で何を学びますか?
Android 13以降で通知権限を要求します ブラウザで直接実行するハンズオンコードでAndroid Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Android Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAndroid Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「通知の実行時権限」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAndroid Academyレッスンでコードを書いて実行できますか?
はい。すべてのAndroid Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 通知チャンネル
- 通知を作成する
- アクションとディープリンク
- 通知の実行時権限