如何使用云功能将推送通知发送到具有FCM令牌的多个设备

时间:2017-11-28 11:17:54

标签: android node.js firebase-cloud-messaging google-cloud-functions google-cloud-firestore

首先,我生成了一个FCM令牌并存储在firestore中。之后我写了一个云函数来发送基于FCM令牌的通知。我部署了云功能,它表示已成功发送状态正常的通知。但它并没有在移动设备中显示。我的Index.js是

'use strict';
const functions = require('firebase-functions');
const Firestore = require('@google-cloud/firestore');
const admin = require('firebase-admin');
const firestore = new Firestore();
const db = admin.firestore();
admin.initializeApp(functions.config().firebase);
exports.hellouser = functions.firestore
    .document('users/{token}')
    .onWrite(event =>{
    var document = event.data.data();
    console.log("tokens",document); 
    var token = ['cdNN0AbYKU0:APA91bEyL0zo3zwHZD8H43Vp7bxAfYgehlVI8LrKktPO2eGuByVDdioysIGxHe5wocwq8ynxRToJPpOve_M59YY_MIRbWLnF9AIgoTwJORXZbw6VBw7']// this is my FCM token.
    if(
    const payload = {
        notification: {
            title: "Message",
            body: "hi hello",
            sound: "default"
        }
    };
    return admin.messaging().sendToDevice(token, payload).then((response)=> {

    console.info("Successfully sent notification")
    }).catch(function(error) {
        console.warn("Error sending notification " , error)
    });
});

如何根据FCMtoken发送通知。

1 个答案:

答案 0 :(得分:2)

如果它是您使用的确切代码,请检查if(附近的语法。这可能会对您有所帮助。
接下来编写一些代码来浏览您的response对象。 Firebase可能会获取您的令牌和有效负载,处理它们并返回200 OK响应,但在响应中您将出错。
响应具有如下一般结构:
{ results: [ { //stuff related to one token },{ //stuff related to one token } ], canonicalRegistrationTokenCount: 0, failureCount: 1, successCount: 0, multicastId: SOME_LONG_NUMBER }

请记住,response.results数组具有发送给令牌的每条消息的状态与token数组中的标记的顺序相同。

您可以在Firebase Documentation中查看所有可能的错误。

如果response.failureCount > 0没有发送任何消息,您应该在response.results中收到相应的错误。
还要了解options变量。 options.priority必须'high'才能保证快速发送邮件。

这可能会有所帮助。