iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

【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 など限られた時間内の通知が有効な場合

.provisionalProvisional Authorization 機能が追加された iOS12 以降で使用することができます。設定方法については下記の記事がわかりやすいと思うので、ユーザにプッシュ通知をお試しで送信してみたい!という方はぜひみてみてください。

qiita.com

また、.ephemeral に関しても同じように iOS14 以降で使用することができます。また、主なユースケースApp Clip 内での通知ですので詳しくは下記のドキュメントを参照してください。

developer.apple.com

ユーザに通知の許可ダイアログを表示

通知の許可ダイアログの表示は下記のように行います。ちなみにダイアログが表示されるのは UNAuthorizationStatus.notDetermined の時のみで、それ以外の場合はダイアログ自体は表示されずコールバックのみ呼び出される感じになります。

    let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
    UNUserNotificationCenter.current().requestAuthorization(options: authOptions) { authorized, error in
        if let error = error {
            
        } else {
            // TODO: Handle authorized.
        }
    }

という感じで本日も以上になります🍺

参考

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com