using UnityEngine.Android; namespace Unity.Notifications.Android { /// /// Represents a status of the Android runtime permission. /// public enum PermissionStatus { /// /// No permission as user was not prompted for it. /// NotRequested = 0, /// /// User gave permission. /// Allowed = 1, /// /// User denied permission. /// Denied = 2, /// /// No longer used. User denied permission and expressed intent to not be prompted again. /// DeniedDontAskAgain = 3, /// /// A request for permission was made and user hasn't responded yet. /// RequestPending = 4, } /// /// A class to request permission to post notifications. /// Before Android 13 (API 33) it is not required and Status will become Allowed immediately. /// May succeed or fail immediately. Users response is saved to PlayerPrefs. /// Respects users wish to not be asked again. /// /// /// public class PermissionRequest { /// /// The status of this request. /// Value other than RequestPending means request has completed. /// public PermissionStatus Status { get; set; } /// /// Create a new request. /// Will show user a dialog asking for permission if that is required to post notifications and user hasn't permanently denied it already. /// public PermissionRequest() { Status = AndroidNotificationCenter.UserPermissionToPost; switch (Status) { case PermissionStatus.NotRequested: case PermissionStatus.Denied: case PermissionStatus.DeniedDontAskAgain: // this one is no longer used, but might be found in settings Status = PermissionStatus.RequestPending; RequestPermission(); break; } } void RequestPermission() { var callbacks = new PermissionCallbacks(); callbacks.PermissionGranted += (unused) => PermissionResponse(PermissionStatus.Allowed); callbacks.PermissionDenied += (unused) => PermissionResponse(PermissionStatus.Denied); Permission.RequestUserPermission(AndroidNotificationCenter.PERMISSION_POST_NOTIFICATIONS, callbacks); } void PermissionResponse(PermissionStatus status) { Status = status; AndroidNotificationCenter.SetPostPermissionSetting(status); } } }