Unity + Firebase Cloud Messaging (FCM) の Android13通知対応
概要
表題のとおり、今更ですが調べてみて最小対応をメモします
通知許可もろもろ
Android 13 を搭載したデバイスにユーザーがアプリをインストールした場合、アプリの通知はデフォルトでオフになります。アプリは、新しい権限をリクエストしてユーザーがその権限をアプリに付与するまで、通知の送信を控える必要があります。
https://developer.android.com/about/versions/13/changes/notification-permission?hl=ja
Android 13以降では、アプリ側で通知許可ダイアログを出して上げるほうが良い。でないと基本は通知OFF状態になるのでユーザが混乱するかもしれない。
ちなみにiOSではFCM側で起動時に許可する設定が昔から存在する。UnityFirebase v9.6.0パッケージ時点ではAndroid側には同様の設定項目がない。自前で権限をリクエストする必要がある。
通知許可のコード
Unity公式のPushNotificationツールを使うと楽に権限リクエストができる。
IEnumerator RequestNotificationPermission()
{
var request = new PermissionRequest();
while (request.Status == PermissionStatus.RequestPending)
yield return null;
// here use request.Status to determine users response
}
このコードを通知許可したい時点や起動時に投げてあげれば良し。簡単。通知ONにしている場合、一度OFF状態にした場合には通知飛ばないようになっているので、Android 12以下の影響は気にせずに投げてよし。
"android.permission.POST_NOTIFICATIONS"はリクエストしなくていいのか
Androidネイティブ対応を見ているとandroid.permission.POST_NOTIFICATIONS
のユーザパーミッションの話もあるが、Unity+FCMの場合は不要だった。(v9.6.0にて確認)
FCM側のパッケージ側にandroid.permission.POST_NOTIFICATIONS
が埋め込まれている。自分のアプリがどうかを確認したいなら、ビルド後のAPKバイナリからManifestを確認すると良い。
Discussion