Токен устройства не генерирует iOS устройство - PullRequest
0 голосов
/ 18 июня 2020

Я много раз пробовал, но не назвал метод didRegisterForRemoteNotificationsWithDeviceToken. Я потратил много времени. Пожалуйста, дайте мне знать, если у кого-нибудь есть решение.

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data){

     let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})
}

Функция ниже, используемая для уведомления о регистрации в didFinishLaunchingWithOptions в AppDelegate.

    func registerNotification(application:UIApplication) -> Void {

        if #available(iOS 10.0, *){
            UNUserNotificationCenter.current().delegate = self
        UNUserNotificationCenter.current().requestAuthorization(options: [.badge, .sound, .alert], completionHandler: {(granted, error) in
                if (granted)
                {
                    DispatchQueue.main.async {
                        UIApplication.shared.registerForRemoteNotifications()
                    }
                }
                else{
                    print("Noti Not registered !!")
                    //Do stuff if unsuccessful...
                }
            })
        }
        else { //If user is not on iOS 10 use the old methods we've been using
            let notificationSettings = UIUserNotificationSettings(
                types: [.badge, .sound, .alert], categories: nil)
            application.registerUserNotificationSettings(notificationSettings)
        }
    }

1 Ответ

0 голосов
/ 18 июня 2020

Применить следующий код для разрешения на уведомление

  1. Включить фоновые режимы в подписи и возможностях

enter image description here

дюйм AppDelegate
    self.registerForPushNotifications(application: application)
    func registerForPushNotifications(application: UIApplication) {

            if #available(iOS 10.0, *) {
                // For iOS 10 display notification (sent via APNS)
                UNUserNotificationCenter.current().delegate = self

                let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
                UNUserNotificationCenter.current().requestAuthorization(
                    options: authOptions,
                    completionHandler: {_, _ in })
            } else {
                let settings: UIUserNotificationSettings =
                    UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
                application.registerUserNotificationSettings(settings)
            }

            application.registerForRemoteNotifications()

        }

        func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
            let token = deviceToken.description().trimmingCharacters(in: CharacterSet(charactersIn: "<>"))

            strDeviceToken = token.replacingOccurrences(of: " ", with: "")
        }

...