コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Android 13 で通知許可ダイアログを開く方法

Mobile Notifications を使う方法

Mobile Notifications 2.1.0 を使えば簡単に実装できる

Mobile Notifications 2.1.0 を使用して
Android 13 で通知許可ダイアログを開く方法は上記のページの
「Request permission to post notifications」に記載されている

UnityEngine.Android.PermissionCallbacks を使う方法

var callbacks = new PermissionCallbacks();

// はじめて通知許可ダイアログが表示された時に
// 「許可」が押された時に呼び出されるコールバック
callbacks.PermissionGranted += _ => Debug.Log( "PermissionGranted" );

// はじめて通知許可ダイアログが表示された時に
// 「許可しない」が押された時に呼び出されるコールバック
callbacks.PermissionDenied += _ => Debug.Log( "PermissionDenied" );

// 2 回目以降の通知許可ダイアログの表示時に
// 「許可しない」が押された時に呼び出されるコールバック
callbacks.PermissionDeniedAndDontAskAgain += _ => Debug.Log( "PermissionDeniedAndDontAskAgain" );

// 通知許可ダイアログを開く
Permission.RequestUserPermission( "android.permission.POST_NOTIFICATIONS", callbacks );

上記のように UnityEngine.Android.PermissionCallbacks を使用すれば

このように通知許可ダイアログを開くことができる

Firebase Cloud Messaging と組み合わせる例

using Firebase.Messaging;
using UnityEngine;
using UnityEngine.Android;

public sealed class Example : MonoBehaviour
{
    private async void Start()
    {
        await Firebase.FirebaseApp.CheckAndFixDependenciesAsync();

        FirebaseMessaging.TokenReceived += ( _, _ ) =>
        {
        };

        FirebaseMessaging.MessageReceived += ( _, _ ) =>
        {
        };

        var callbacks = new PermissionCallbacks();
        callbacks.PermissionGranted               += _ => Debug.Log( "PermissionGranted" );
        callbacks.PermissionDenied                += _ => Debug.Log( "PermissionDenied" );
        callbacks.PermissionDeniedAndDontAskAgain += _ => Debug.Log( "PermissionDeniedAndDontAskAgain" );
        Permission.RequestUserPermission( "android.permission.POST_NOTIFICATIONS", callbacks );
    }
}