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

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

我正在测试iphone设备上的应用程序.

>在https://developer.apple.com/account/ios/authkey/创建新密钥
下载了p8文件
>从https://developer.apple.com/account/#/membership/获得团队ID
>在设置/云消息传递下的firebase控制台中上传.p8文件
>在目标/功能/推送通知下的.xcworspace:ON
> myproject.entitlements文件包含APS环境字符串开发.

注意:在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,categories: nil))
    self.getNotificationSettings()
 }
    // iOS 7 support
else {
    UIApplication.shared.registerForRemoteNotifications(matching: [.badge,.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

解决方法

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

我是怎么知道错字的?最初我在Firebase控制台上传了从developer.apple.com下载的p8文件,没有显示错误.后来,我决定使用证书(旧的方式),当我尝试上传Apple推送通知服务SSL(沙盒)时 – 开发我收到错误证书bundleId与你的应用程序不匹配

以上是来客网为你收集整理的ios – Firebase注册令牌无效.检查令牌格式全部内容,希望文章能够帮你解决ios – Firebase注册令牌无效.检查令牌格式所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。