APNS Firebase通知无法获取令牌

ios10,Swift

3和Firebase推送通知(FCM)

我正在尝试使用Firebase进行通知,并且完全按照文档中的说明进行了集成。但是我不明白为什么它不起作用。在构建项目时,我看到以下行:

2016-05-25 16:09:34.987: <FIRInstanceID/WARNING> Failed to fetch default token Error Domain=com.firebase.iid Code=0 "(null)"

这是我的AppDelegate:

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

FIRApp.configure()

FIRDatabase.database().persistenceEnabled = true

var service: DataService = DataService()

service.start()

registerForPushNotifications(application)

application.registerForRemoteNotifications()

return true

}

func registerForPushNotifications(application: UIApplication) {

let notificationSettings = UIUserNotificationSettings(

forTypes: [.Badge, .Sound, .Alert], categories: nil)

application.registerUserNotificationSettings(notificationSettings)

}

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

if notificationSettings.types != .None {

application.registerForRemoteNotifications()

}

}

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {

let tokenChars = UnsafePointer<CChar>(deviceToken.bytes)

var tokenString = ""

for i in 0..<deviceToken.length {

tokenString += String(format: "%02.2hhx", arguments: [tokenChars[i]])

}

FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: FIRInstanceIDAPNSTokenType.Unknown)

print("Device Token:", tokenString)

}

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {

// Print message ID.

print("Message ID: \(userInfo["gcm.message_id"]!)")

// Print full message.

print("%@", userInfo)

}

回答:

1.在 方法中设置Notification Observer

然后设置 方法,然后在此方法中获取令牌。

import Firebase

import FirebaseMessaging

override func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

FIRApp.configure()

NotificationCenter.default.addObserver(self,

selector: #selector(self.tokenRefreshNotification(notification:)),

name: NSNotification.Name.firInstanceIDTokenRefresh,

object: nil)

}

// NOTE: Need to use this when swizzling is disabled

public func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {

FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: FIRInstanceIDAPNSTokenType.Sandbox)

}

func tokenRefreshNotification(notification: NSNotification) {

// NOTE: It can be nil here

let refreshedToken = FIRInstanceID.instanceID().token()

print("InstanceID token: \(refreshedToken)")

connectToFcm()

}

func connectToFcm() {

FIRMessaging.messaging().connectWithCompletion { (error) in

if (error != nil) {

print("Unable to connect with FCM. \(error)")

} else {

print("Connected to FCM.")

}

}

}

public func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {

print(userInfo)

}

以上是 APNS Firebase通知无法获取令牌 的全部内容, 来源链接: utcz.com/qa/410233.html

回到顶部