簡體   English   中英

iOS:Firebase 令牌返回 null

[英]iOS: Firebase token returning null

我目前正在嘗試按照 Firebase 官方文檔實施 Firebase Cloud Messaging。

我已經在啟用推送通知的情況下解決了證書和配置文件。 我還使用 CocoaPods 安裝了所有必要的框架(FirebaseMessaging、Firebase),它們似乎工作正常。

在應用程序委托中,我嘗試使用以下代碼初始化 Firebase 雲消息傳遞令牌。

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

我還將 GCM 設置為啟用,並且 GoogleService-Info.plist 中有一個 GCM 發件人 ID 值。

我得到的錯誤如下:

2016-11-29 16:11:12.358 Firebasesample[3852:122151] Firebase 自動屏幕報告已啟用。 調用 +[FIRAnalytics setScreenName:setScreenClass:] 設置屏幕名稱或覆蓋默認屏幕類名稱。 要禁用自動屏幕報告,請在 Info.plist 中將標志 FirebaseAutomaticScreenReportingEnabled 設置為 NO

2016-11-29 16:11:12.419:Firebase 消息設置不正確,發送者 ID 為零。 致命錯誤:在解開 Optional 值時意外發現 nil

預先感謝您的任何建議/幫助。

在沒有實現的情況下已經在評論中回答了:

確保您遵循https://firebase.google.com/docs/cloud-messaging/ios/client上的設置指南。

在您的didFinishLaunchingWithOptions添加以下方法(在FIRApp.configure() )。

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

當您的令牌刷新時,它將調用:

func tokenRefreshNotification(_ notification: Notification) {

    guard let token = FIRInstanceID.instanceID().token() else {
        QL3("No firebase token, aborting registering device")
        return nil
    }

    //register your token somewhere..
    registerToken(token)
}

對於那些在獲取令牌方面仍然存在問題的人,可能是因為令牌尚未生成。

在指南( https://firebase.google.com/docs/cloud-messaging/ios/client )上,您可以找到這部分:

當您需要當前令牌時,檢索它。 如果尚未生成令牌,則這可能返回 null。

我希望它有幫助。

我被這個問題困住了,沒有在 IOS-10 以上的 IOS 設備上收到 firebase 推送通知,因為 firebase 令牌可能比您選擇用於存儲的數據類型長。 檢查令牌列的數據類型。 我已經從 varchar 轉換為文本,它可以工作並挽救了我們的一天。

問候, Gurminder

暫無
暫無

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

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