Help us understand the problem. What is going on with this article?

[Swift] iOS でプッシュ通知の有効・無効を判定する

More than 3 years have passed since last update.

iOS8 以降とそれ以外で使用する API が異なります。プッシュ通知を許可しているかどうかを判定するメソッドをつくってみました。

class var isPushNotificationEnable: Bool {
        let osVersion = UIDevice.currentDevice().systemVersion
        if osVersion < "8.0" {
            let types = UIApplication.sharedApplication().enabledRemoteNotificationTypes()
            if types == UIRemoteNotificationType.None {
                // push notification disabled
                return false
            }else{
                // push notification enable
                return true
            }
        }else{
            if UIApplication.sharedApplication().isRegisteredForRemoteNotifications() {
                // push notification enable
                return true
            }else{
                // push notification disabled
                return false
            }
        }
    }

おまけ - アプリの設定画面に飛ぶ

プッシュ通知が無効だった場合、ダイアログで"「設定->通知」から有効にしてください" など表示しているアプリがありますが、
使っている側からすると、わざわざホーム画面に戻って設定画面まで行くなんてやらないですよね。

iOS8 からはプログラムで自分のアプリの設定画面に飛べるので、

  1. アプリのプッシュ通知が無効になっているかチェックする
  2. 無効になっていたら「よかったら有効にしてね」という("OK","Cancel"の)ダイアログ表示
  3. ユーザーが "OK" を選択したらアプリの設定画面にプログラムで遷移

がいいとアプローチだと思います。

そのサンプルコードはこちら。

class func openAppSettingPage() -> Void {
        let application = UIApplication.sharedApplication()
        let osVersion = UIDevice.currentDevice().systemVersion
        if osVersion < "8.0" {
            // not supported
        }else{
            let url = NSURL(string:UIApplicationOpenSettingsURLString)!
            UIApplication.sharedApplication().openURL(url)
        }
}

プッシュ通知ができるとユーザーにリーチできる機会が圧倒的に増えるので許可してもらえるような導線になるよう気をつけたいところです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした