web-dev-qa-db-ja.com

UILocalNotificationの廃止後にユーザー通知が有効になっているかどうかを確認する

私のアプリでは、ユーザーが通知を有効にしているかどうかを確認できるようにしたいと思います。 iOS 10では、デリゲートのチェックを使用してこれを行いました。

このチェックは廃止されたので更新したいのですが、iOS 11で何を使用するかわかりません。

非推奨の警告は次のとおりです。

currentUserNotificationSettings 'はiOS 10.0で廃止されました:UserNotifications Frameworkの-[UNUserNotificationCenter getNotificationSettingsWithCompletionHandler:]および-[UNUserNotificationCenter getNotificationCategoriesWithCompletionHandler:]を使用してください

この警告を利用してコードを更新しようとしましたが、わかりません。

誰かがこのようなチェックをするようにとにかく提案できるなら、それは大いに役立つでしょう。私がiOS 10に使用しているコードは以下のとおりです。

let notificationType = UIApplication.shared.currentUserNotificationSettings!.types
if notificationType == [] {
    print("Notifications are NOT enabled")
} else {
    print("Notifications are enabled")
}
11
Ethan Humphries

ステップ1 : import UserNotifications

ステップ2 :

UNUserNotificationCenter.current().getNotificationSettings { (settings) in
  if settings.authorizationStatus == .authorized {
    // Notifications are allowed
  }
  else {
    // Either denied or notDetermined
  }
}

詳細については、設定オブジェクトを調べてください。

23
McNight

最初のステップ:-としてヘッダーファイルを追加する必要があります

import UserNotifications

checkpushNotificationメソッドを使用して、ユーザーが通知を有効にするかどうかを確認しました。このメソッドは、AppDelegateクラスのdidFinishLaunchingWithOptionsから呼び出されます。それがあなたを助けることを願って、何か問題があれば、以下にコメントしてください。

最後のステップ:-

func checkPushNotification(){
        if #available(iOS 10.0, *) {
            UNUserNotificationCenter.current().getNotificationSettings(){ (setttings) in

                switch setttings.authorizationStatus{
                case .authorized:

                    print("enabled notification setting")

                case .denied:

                    print("setting has been disabled")

                case .notDetermined:
                    print("something vital went wrong here")
                }
            }
        } else {

            let isNotificationEnabled = UIApplication.shared.currentUserNotificationSettings?.types.contains(UIUserNotificationType.alert)
            if isNotificationEnabled{

                print("enabled notification setting")
            }else{

                print("setting has been disabled")
            }
        }
    }

また、特定のブール出力を有効または無効にする場合は、それを解決するために完了ハンドラーを実装する必要があります。

func checkPushNotification(checkNotificationStatus isEnable : ((Bool)->())? = nil){

        if #available(iOS 10.0, *) {
            UNUserNotificationCenter.current().getNotificationSettings(){ (setttings) in

                switch setttings.authorizationStatus{
                case .authorized:

                    print("enabled notification setting")
                    isEnable?(true)
                case .denied:

                    print("setting has been disabled")
                    isEnable?(false)
                case .notDetermined:

                    print("something vital went wrong here")
                    isEnable?(false)
                }
            }
        } else {

            let isNotificationEnabled = UIApplication.shared.currentUserNotificationSettings?.types.contains(UIUserNotificationType.alert)
            if isNotificationEnabled == true{

                print("enabled notification setting")
                isEnable?(true)

            }else{

                print("setting has been disabled")
                isEnable?(false)
            }
        }
    }

そして、これを

  self.checkPushNotification {  (isEnable) in
    print(isEnable)
    // you know notification status.
}
8
Amrit Tiwari

UIApplication.shared.isRegisteredForRemoteNotifications

0
David Cespedes