Swift 通知許可状態を取得する(同期あり)

UNUserNotificationCenter.current().getNotificationSettingsで通知設定取得。
UNNotificationSettings内のsetting.authorizationStatus確認。

ドキュメントより
UNAuthorizationStatusの値

notDetermined
ユーザーは、アプリで通知をスケジュールすることを許可するかどうかをまだ選択していません。

denied
このアプリはスケジュールや通知の受信を許可されていません。

authorized
このアプリは、スケジュールや通知の受信を許可されています。

provisional
このアプリケーションは、中断しない利用通知の掲載を暫定的に許可されています。

let semaphore = DispatchSemaphore(value: 0)
UNUserNotificationCenter.current().getNotificationSettings(completionHandler: {setting in
    if setting.authorizationStatus == .authorized {
        print("許可")
    }
    else {
        print("未許可")
    }
    semaphore.signal()
})
semaphore.wait()

Swift

Posted by shi-n