コガネブログ

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

【Unity】java.lang.IllegalArgumentException: Unknown permission: android.permission.POST_NOTIFICATIONS

概要

var tcs       = new UniTaskCompletionSource<string>();
var callbacks = new PermissionCallbacks();
callbacks.PermissionGranted               += _ => tcs.TrySetResult( "PermissionGranted" );
callbacks.PermissionDenied                += _ => tcs.TrySetResult( "PermissionDenied" );
callbacks.PermissionDeniedAndDontAskAgain += _ => tcs.TrySetResult( "PermissionDeniedAndDontAskAgain" );
Permission.RequestUserPermission( "android.permission.POST_NOTIFICATIONS", callbacks );

var eventName = await tcs.Task;

Permission.RequestUserPermission を使用して
Android で通知許可ダイアログを開こうとしたら

java.lang.IllegalArgumentException: Unknown permission: android.permission.POST_NOTIFICATIONS

Android 6 で上記の例外が発生してアプリが強制終了する現象に遭遇した

上記のページで紹介しているパッケージを使用して

if ( !AndroidApiLevel.IsAndroidVersion13OrHigher ) return;

var tcs       = new UniTaskCompletionSource<string>();
var callbacks = new PermissionCallbacks();
callbacks.PermissionGranted               += _ => tcs.TrySetResult( "PermissionGranted" );
callbacks.PermissionDenied                += _ => tcs.TrySetResult( "PermissionDenied" );
callbacks.PermissionDeniedAndDontAskAgain += _ => tcs.TrySetResult( "PermissionDeniedAndDontAskAgain" );
Permission.RequestUserPermission( "android.permission.POST_NOTIFICATIONS", callbacks );

var eventName = await tcs.Task;

Android 12 以下なら通知許可ダイアログを開かないようにしたら
例外が発生しなくなった