💬

Unity + Firebase Cloud Messaging (FCM) の Android13通知対応

2023/10/06に公開

概要

表題のとおり、今更ですが調べてみて最小対応をメモします

通知許可もろもろ

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ツールを使うと楽に権限リクエストができる。
https://docs.unity3d.com/Packages/com.unity.mobile.notifications@2.1/manual/Android.html#request-permission-to-post-notifications

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