Notification runtime permission - Android 13
一言で表すと
Android 13では通知を送る時に権限取得が必要になるよ
概要
新しい権限の利用方法
1. Android Manifestで利用するpermissionを指定
code:xml
<manifest ...>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<application ...>
...
</application>
</manifest>
2. 実行時に権限を申請(他の権限と同様)
code:kotlin
// 多分今はActivityResultで行う?
val requestPermissionLauncher =
registerForActivityResult(RequestPermission()
) { isGranted: Boolean ->
if (isGranted) {
} else {
}
}
requestPermissionLauncher.launch(
Manifest.permission.POST_NOTIFICATIONS)
ユーザの反応と動作
1. 許可を選択
全ての通知の送信が可能になる
2. 許可しないを選択
いくつかの特定の役割を除いて、通知が表示されなくなる
以前の設定OFFと同じ状態
3. 背景タップや戻るボタンでダイアログを消す
アプリが一時的な通知許可(後述)付与の対象である場合、システムは一時的な付与を保持する
chigichan24.icon いつまで保持されるんだろう
そうでない場合、許可しないと同じ
Android 13の端末において、新しくアプリをインストールした場合
target sdkがAndroid 13の場合
明示的に権限取得を行う必要がある
ダイアログの表示タイミングがコントロールできるので、通知の必要性等をUI上で説明することができる
target sdkがAndroid 13未満の場合
一定の条件で自動で許可ダイアログが表示される
通知チャネルを作成した後、アプリが最初にアクティビティを開始したとき
アプリがアクティビティを開始してから最初の通知チャネルを作成したとき
大抵の場合はアプリの起動時
Go.iconいち早くコンテンツに到達したい場合にストレスになっちゃうけど仕方なし😢
表示のタイミングのコントロールが難しいため、通知の必要性をUI上で説明することも難しい
chigichan24.icon UX終
すでにアプリがインストールされた端末で、Android 13に更新した場合
混乱を防ぐために、いくつかのケースで通知が表示できる
一部のデバイスは新しい通知権限を自動的に事前に付与する。
Mori Atsushi.icon え、マジ?感謝
他のデバイスでは、一時的な通知許可が自動で付与される。
target sdkがAndroid 13の場合
一時的な付与は通常、ユーザーがアプリのアクティビティの起動を最初に開始するまで
Mori Atsushi.icon 一瞬表示してすぐ閉じちゃうと通知が来なくなっちゃうっぽい :cry:
target sdkがAndroid 13未満の場合
ユーザーが通知許可ランタイムダイアログでオプションを明示的に選択するまで
ユーザがキャンセルした場合は権限が維持される(前述の通り)
chigichan24.icon 端末依存性が高いケース、CS対応が最悪になる未来が見える
一時的な通知許可 の条件
既存で通知チャンネルが存在する
通知を明示的に無効にされていない
備考
Mori Atsushi.icon 多分明示的な権限を付与しなくても通知が表示できる?
フォアグラウンドサービスの起動は、引き続き通知の送信は必要だが、通知の権限は必要ではない。
Mori Atsushi.icon その場合、通知が表示されずフォアグラウンドサービスが動き続ける…?それはいいのか…?
ベストプラクティス
アプリのtarget sdkをandroid 13にする
Mori Atsushi.icon これがすぐできたら苦労しない…
chigichan24.icon これ好き
通知許可ダイアログの表示を遅延させる
ユーザが通知が欲しくなるようなタイミングで訴求する
ユーザがなんらかの通知ボタンをタップした時
ユーザがソーシャルメディア上で誰かをフォローした時
ユーザが食品配達の注文を行った時
https://scrapbox.io/files/62727412e144870023a75375.svg
ユーザがアプリに2, 3回起動し、慣れてきたタイミング
状況に応じて許可をリクエストする
通知の用途とユーザーがオプトインする理由を明確にする
例えばメールアプリでは、新しいメールごとに通知を送信する等
アプリが通知を送信できるかどうかを確認します
Mori Atsushi.icon 無視されるだけっぽいし、これは確認してどうしたら良いんだろう…?
責任を持って許可を使用してください
通知を送信するための承認を受け取ったら、責任を持って許可を使用することを忘れないでください。ユーザーは、アプリが送信する1日の通知の数を確認でき 、いつでも権限を取り消すことができます。
Mori Atsushi.icon わかる
気になるポイント
Mori Atsushi.icon この権限リクエスト地獄って本当にユーザのためなんだろうか…?
chigichan24.icon Privacy に敏感な人達もいるのだ(棒)
メモ
コメント
Go.icon通知が来ない!っていうレビューやCS対応がいっぱい来る未来が見える...