簡體   English   中英

推送工具包未收到pushCredentials令牌

[英]Push Kit Not receiving pushCredentials token

我是集成Push Kit的新手,所以我無法接收pushCredentials令牌,請提出解決方案。

以下是我的代碼:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    // For debugging
    //OneSignal.setLogLevel(.LL_VERBOSE, visualLevel: .LL_NONE)

    //Enable all notification type.
    let notificationSettings = UIUserNotificationSettings(types: [UIUserNotificationType.alert, UIUserNotificationType.badge, UIUserNotificationType.sound] , categories: nil)

    //register the notification settings
    application.registerUserNotificationSettings(notificationSettings)


    return true
}

extension AppDelegate {

    func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) {

        //register for voip notifications
        let voipRegistry = PKPushRegistry(queue: DispatchQueue.main)
        voipRegistry.desiredPushTypes = Set([PKPushType.voIP])
        voipRegistry.delegate = self;

        print("didRegisterUserNotificationSettings")
    }
}


extension AppDelegate: PKPushRegistryDelegate {
    func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, forType type: PKPushType) {
        print("voip token: \(pushCredentials.token)")

    }
    func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, forType type: PKPushType) {

        let payloadDict = payload.dictionaryPayload["aps"] as? Dictionary<String, String>
        let message = payloadDict?["alert"]

        //present a local notifcation to visually see when we are recieving a VoIP Notification
        if UIApplication.shared.applicationState == UIApplicationState.background {

            let localNotification = UILocalNotification();
            localNotification.alertBody = message
            localNotification.applicationIconBadgeNumber = 1;
            localNotification.soundName = UILocalNotificationDefaultSoundName;

            UIApplication.shared.presentLocalNotificationNow(localNotification);
        }

        else {
            print(message)
//            dispatch_async(DispatchQueue.main, { () -> Void in
//
//                let alert = UIAlertView(title: "VoIP Notification", message: message, delegate: nil, cancelButtonTitle: "Ok");
//                alert.show()
//            })
        }

        NSLog("incoming voip notfication: \(payload.dictionaryPayload)")
    }

    func pushRegistry(_ registry: PKPushRegistry, didInvalidatePushTokenForType type: PKPushType) {
        NSLog("token invalidated")
    }
}

extension UIApplicationState {

    //help to output a string instead of an enum number
    var stringValue : String {
        get {
            switch(self) {
            case .active:
                return "Active"
            case .inactive:
                return "Inactive"
            case .background:
                return "Background"
            }
        }
    }
}

我錯過了什么,請建議。

      func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, forType type: PKPushType) {
           let deviceTokenString = pushCredentials.token.map { String(format: "%02.2hhx", $0) }.joined()  
           print("deviceTokenString \(deviceTokenString)")

      }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM