【Swift】iOS プッシュ通知の許可周り
久しぶりに通知の許可周りの実装をしたので、今回は初学者向けに通知の許可設定の実装方法を紹介していきたいと思います👷♀️
ユーザがアプリの許可をしているかどうか
UNUserNotificationCenter.current().getNotificationSettings { settings in switch settings.authorizationStatus { case .notDetermined: case .denied: case .authorized: case .provisional: case .ephemeral: } }
UNAuthorizationStatus
は、執筆時点では下記のような状態があります。
status | 内容 |
---|---|
.notDetermined | 許可の設定を行っていない場合 |
.denied | 通知が拒否されている場合 |
.authorized | 通知が許可されている場合 |
.provisional | Provisional Authorization が有効になっている場合 |
.ephemeral | AppClip など限られた時間内の通知が有効な場合 |
.provisional
は Provisional Authorization
機能が追加された iOS12
以降で使用することができます。設定方法については下記の記事がわかりやすいと思うので、ユーザにプッシュ通知をお試しで送信してみたい!という方はぜひみてみてください。
また、.ephemeral
に関しても同じように iOS14
以降で使用することができます。また、主なユースケースは App Clip
内での通知ですので詳しくは下記のドキュメントを参照してください。
ユーザに通知の許可ダイアログを表示
通知の許可ダイアログの表示は下記のように行います。ちなみにダイアログが表示されるのは UNAuthorizationStatus
が .notDetermined
の時のみで、それ以外の場合はダイアログ自体は表示されずコールバックのみ呼び出される感じになります。
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization(options: authOptions) { authorized, error in if let error = error { } else { // TODO: Handle authorized. } }
という感じで本日も以上になります🍺
参考
- https://developer.apple.com/documentation/usernotifications/unauthorizationstatus
- https://qiita.com/peka2/items/d2ce23c078fd35a92f15