TypeError:admin.messaging.sendToTopic不是一个函数

时间:2018-09-16 06:25:53

标签: android firebase firebase-cloud-messaging google-cloud-functions

我正在开发一个Android应用程序,其中有一个Activity(操作员)ActivityActivity。它具有CardNo和LineNo作为EditText,并且该值已插入FirebaseDatabase。

我要做的是使用FCM通知安装此应用程序的每个用户更新。我使用Note.js并为此创建了一个函数,但是每次都会出现错误:

public class MyClass {

    List<Label> labels = new ArrayList<>();

    .... other code


    Label charname = new Label(shell, SWT.NONE);
    ...

    // Save in the list
    labels.add(charname);

    .....

    // Access old label
    int index = ... index of label required
    Label oldLabel = labels.get(index);

}

我是函数的新手,所以我不明白如何解决此错误。 我已经看过类似的问题,但没有一个解决我的问题。

index.js

TypeError: admin.messaging.sendToTopic is not a function
at exports.sendNotification.functions.database.ref.onWrite.event (/user_code/index.js:18:21)
at cloudFunctionNewSignature (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:105:23)
at cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:135:20)
at /var/tmp/worker/worker.js:733:24
at process._tickDomainCallback (internal/process/next_tick.js:135:7)

我以编程方式为所有用户订阅了“通知”主题。

这是数据库的外观: 这是一个虚拟数据库。

enter image description here

firebase --version:4.2.1

npm --version:6.4.1

编辑: 现在正在工作。

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp(functions.config.firebase);

exports.sendNotification = functions.database.ref("Operator :")
.onWrite(event =>{
    var payload = {
        notification :{
            title : 'Mechanic Needed',
            body: 'Any available mechanic report ASAP',
            sound: 'defaulf',
            badge: '1'
        },
        topic: 'notification'
    };

    admin.messaging.sendToTopic('notification',payload)
    .then(function(response){
        console.log("Successfully sent Message.", response);
        return;
    })
    .catch(function(error){
        console.log("Error sending message!", erorr);
    })
    
});

1 个答案:

答案 0 :(得分:1)

代替此:

admin.messaging

您需要使用它(API文档中的说明it's a function to call):

admin.messaging()

See also the documentation for sending to a topic.。它显示了相同的用法。