簡體   English   中英

Firebase FCM 錯誤:“無效注冊”

[英]Firebase FCM error: 'InvalidRegistration'

我目前正在嘗試在Firebase Cloud Functions的幫助下使用FCMPushNotification發送到Device Group ,但是一旦發送通知,它會返回代碼200但失敗:

SUCCESS response= {
multicast_id: 8834986220110966000,
success: 0,
failure: 1,
canonical_ids: 0,
results: [ { error: 'InvalidRegistration' } ] 
}

這是我用來發送此通知的代碼......我錯過了什么?

const options = {
    method: 'POST',
    uri: 'https://fcm.googleapis.com/fcm/send',
    headers: {
       'Authorization': 'key=' + serverKey,
    },
    body: {
       to: groupId,
       data: {
        subject: message
       },
       notification: {
         title: title,
         body: body,
         badge: 1,
        },
       content_available: true
    },
    json: true
};

return rqstProm(options)
    .then((parsedBody) => {
        console.log('SUCCESS response=', parsedBody);
    })
    .catch((err) => {
        console.log('FAILED err=', err);
    });

其中 JSON 值title , body , subject , messageString

就我而言,我正在向主題(“ topics/my-topic ”)發送通知。 我在主題開始時缺少前置/ ,所以我遇到了同樣的問題。 SO 主題應該是/topics/my-topic

可能這有幫助!!

有一種更簡單的方法可以從 Cloud Function 向設備組發送消息。 使用admin.messaging().sendToDeviceGroup() 本指南中提供了示例代碼和說明。

我認為您當前的方法失敗了,因為groupId提供的組通知鍵有問題。 它應該是創建設備組時返回的字符串鍵值。 此表中列出了錯誤代碼。 對於 200/InvalidRegistration,它說:

檢查您傳遞給服務器的注冊令牌的格式。 確保它與客戶端應用從注冊 Firebase 通知時收到的注冊令牌匹配。 不要截斷或添加其他字符。

這個 InvalidRegistration 錯誤讓我失去了理智。

最終問題是我將我的設備訂閱到"example" ,但將通知 json 發送to: "example"

但我們實際上需要發送到"/topics/example"

浪費了我生命中的2個小時..

注冊令牌與特定的發件人組相關聯。 當客戶端應用程序注冊 FCM 時,它必須指定允許哪些發件人發送消息。 在向客戶端應用程序發送消息時,您應該使用這些發件人 ID 之一。

您需要做的就是添加一個帶有您的發件人 ID 的 http 標頭“project_id”。

我收到了InvalidRegistration

基本含義:您使用了錯誤的令牌。 為什么? 當您在onNewToken ( docs ) 中獲得新的registrationToken時,可能會發生這種情況,但由於某種原因,您使用的是舊令牌。 這可能發生在:

  • 您使用的是不同的推送通知庫,它記住令牌(將其存儲在本地某處)並且您沒有使用新令牌更新該庫。

  • 您的應用程序(或其他庫依賴項)實現了另一個FirebaseMessagingService ,並且它們發生沖突。 當向 FirebaseMessaging Android 庫提供新令牌時,只有一個服務可以接受(響應)它發送的操作。 您可以通過在 Android Studio 中打開AndroidManifest.xml並選擇選項卡底部的Merged Manifest選項卡來仔細檢查這一點。 您還可以在您使用的每個庫中的每個服務中放置調試器。 您會看到只有一個服務的onNewToken被調用。

    當它們發生沖突時,不會得到正確的令牌,而注冊的 FCM 注冊令牌將是錯誤的。 向錯誤的注冊發送消息,您將獲得InvalidRegistration

我在發送群組消息時收到此錯誤。 問題是,而不是使用notification_key我用的是notification_key_name 因此,使用:

to: "<notification_key>" 

不是

to: "<notification_key_name>" 

對我來說,我從我的模型中傳遞一個Id而不是用戶的令牌是一個錯誤

InvalidRegistration僅表示令牌無效或已過期。 您可以卸載該應用程序,然后重新安裝並獲取新令牌,然后嘗試使用該令牌。 這絕對可以解決您的問題。

您可以在此處閱讀更多內容。

暫無
暫無

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

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