現在、Device Group
を使用してPushNotification
を使用してFirebase Cloud Functions
にFCM
を送信しようとしていますが、通知が送信されると、コード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
、message
はString
です
Cloud Functionからデバイスグループにメッセージを送信する簡単な方法があります。 admin.messaging()。sendToDeviceGroup() を使用します。サンプルコードと手順は このガイド にあります。
groupId
で提供されるグループ通知キーに何か問題があるため、現在の方法は失敗していると思います。デバイスグループを作成したときに返された文字列キー値である必要があります。エラーコードは この表 にリストされています。 200/InvalidRegistrationの場合:
サーバーに渡す登録トークンの形式を確認してください。 Firebase Notificationsへの登録からクライアントアプリが受信する登録トークンと一致することを確認してください。文字を切り捨てたり、追加したりしないでください。
私の場合、トピック( "topics/my-topic
")に通知を送信していました。トピックの冒頭に/
を追加していなかったため、同じ問題が発生していました。 SOトピックは/topics/my-topic
でなければなりません。
これが役立つかもしれません!!
登録トークンは、特定の送信者グループに関連付けられています。クライアントアプリがFCMに登録するとき、メッセージの送信を許可する送信者を指定する必要があります。クライアントアプリにメッセージを送信するときは、これらの送信者IDのいずれかを使用する必要があります。
あなたがする必要があるのは、あなたの送信者IDでhttpヘッダー 'project_id'を追加することです。