首页 文章

Firebase注册令牌无效 . 检查令牌格式

提问于
浏览
3

这个问题之前已被多次询问和回答,但我无法弄清楚我做错了什么 . 从Firebase控制台向整个应用程序发送通知有效,但是如果我发送到单个令牌,我在firebase控制台中收到错误:“Firebase无效注册令牌 . 检查令牌格式”

我在Iphone设备上测试应用程序 .

注意:在developer.apple.com中,在APP ID下,如果单击myApp id并向下滚动,推送通知可配置和开发将显示为黄色而不是绿色 .

Xcode version Version 8.3.3 (8E3004b), Swift 3.0
pod file    
pod 'Firebase', '~> 3.9.0'
pod 'Firebase/Auth', '~> 3.9.0'
pod 'Firebase/Database', '~> 3.9.0'
pod 'Firebase/Storage'
pod 'Firebase/Messaging'

Using Firebase (3.9.0)
Using FirebaseAnalytics (3.5.1)
Using FirebaseAuth (3.0.6)
Using FirebaseCore (3.4.4)
Using FirebaseDatabase (3.1.0)
Using FirebaseInstanceID (1.0.9)
Using FirebaseMessaging (1.2.1)
Using FirebaseStorage (1.0.4)
Using GTMSessionFetcher (1.1.12)
Using GoogleInterchangeUtilities (1.2.2)
Using GoogleSymbolUtilities (1.1.2)
Using GoogleToolboxForMac (2.1.3)



import UIKit
import Firebase
import FirebaseCore
import FirebaseMessaging
import FirebaseInstanceID
import UserNotifications

 @UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

 var window: UIWindow?


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

  FIRApp.configure()

  NotificationCenter.default.addObserver(self, selector: #selector(self.tokenRefreshNotification(notification:)), name: NSNotification.Name.firInstanceIDTokenRefresh, object: nil)

  //obtain the user’s permission to show any kind of notification
  registerForPushNotifications()
  return true
}//end of didFinishLaunchingWithOptions


 //obtain the user’s permission to show any kind of notification
 func registerForPushNotifications() {

  // iOS 10 support
  if #available(iOS 10, *) {
    UNUserNotificationCenter.current().requestAuthorization(options:[.badge, .alert, .sound]){ (granted, error) in
        print("Permission granted: \(granted)")

        guard granted else {return}
        self.getNotificationSettings()
    }
}
    // iOS 9 support
 else if #available(iOS 9, *){UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: nil))
    self.getNotificationSettings()
}
    // iOS 8 support
  else if #available(iOS 8, *) {UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: nil))
    self.getNotificationSettings()
 }
    // iOS 7 support
else {
    UIApplication.shared.registerForRemoteNotifications(matching: [.badge, .sound, .alert])
 }
}//end of registerForPushNotifications()



  //if user decliens permission when we request authorization to show notification
  func getNotificationSettings() {
 UNUserNotificationCenter.current().getNotificationSettings { (settings) in

     print("settings.authorizationStatus is \(settings.authorizationStatus)")
    guard settings.authorizationStatus == .authorized else {return}
    UIApplication.shared.registerForRemoteNotifications()
   }
 }


func tokenRefreshNotification(notification: NSNotification) {
 let refereshToken = FIRInstanceID.instanceID().token()
 print("instance ID token is \(refereshToken)")
 prints: c-_B0W1AKX0:APA91bHBCtFhGtteH1r2y7c8gpUJpfrgDZYtncFmxZQht_wBDWk9Stdf78aMqUctKYU_OlIkmMNW-KLP68_IhdZCM2WxcN4fU1XkoIVNCGTvBogzSpgt4IkveLbK7rNX7pQTfmP72MfV

 connectToFcm()
}


 func connectToFcm() {
   FIRMessaging.messaging().connect { (error) in
      if error != nil  {
         print("unable to connect to FCM")
     }else {
         print("connected to FCM")
     }
   }
 }

}//end of AppDelegate

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

1 回答

  • 1

    当我在Firebase控制台中创建应用程序时,我在填写Bundle ID时输错了一个字母 .
    我从未想过要检查它,因为我一直在使用Firebase数据库服务,并且所有CRUD操作都按预期工作,但Xcworkspace中的Bundle ID和firebase应用程序的BundleID是 not exactly 相同 .
    如果来自Google的任何人都能说出客户端应用程序的读/写工作按预期工作的原因,即使在Firebase控制台中bundleID不正确,也会很棒 .

    我是怎么知道错字的?
    最初我在Firebase控制台上传了从developer.apple.com下载的p8文件,没有显示错误 .
    后来,我决定使用证书(旧的方式),当我尝试上传 Apple Push Notification service SSL (Sandbox) - Development 时出现错误 The certificate bundleId did not match that of your app

相关问题