web-dev-qa-db-ja.com

Firebase FCMエラー:「InvalidRegistration」

現在、Device Groupを使用してPushNotificationを使用してFirebase Cloud FunctionsFCMを送信しようとしていますが、通知が送信されると、コード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値titlebodysubjectmessageStringです

7
John

Cloud Functionからデバイスグループにメッセージを送信する簡単な方法があります。 admin.messaging()。sendToDeviceGroup() を使用します。サンプルコードと手順は このガイド にあります。

groupIdで提供されるグループ通知キーに何か問題があるため、現在の方法は失敗していると思います。デバイスグループを作成したときに返された文字列キー値である必要があります。エラーコードは この表 にリストされています。 200/InvalidRegistrationの場合:

サーバーに渡す登録トークンの形式を確認してください。 Firebase Notificationsへの登録からクライアントアプリが受信する登録トークンと一致することを確認してください。文字を切り捨てたり、追加したりしないでください。

3
Bob Snyder

私の場合、トピック( "topics/my-topic")に通知を送信していました。トピックの冒頭に/を追加していなかったため、同じ問題が発生していました。 SOトピックは/topics/my-topicでなければなりません。

これが役立つかもしれません!!

8
Sunil Garg

登録トークンは、特定の送信者グループに関連付けられています。クライアントアプリがFCMに登録するとき、メッセージの送信を許可する送信者を指定する必要があります。クライアントアプリにメッセージを送信するときは、これらの送信者IDのいずれかを使用する必要があります。

あなたがする必要があるのは、あなたの送信者IDでhttpヘッダー 'project_id'を追加することです。

0
user3824246