Firebase消息传递:向所有设备发送消息

时间:2020-04-14 07:51:27

标签: android firebase firebase-realtime-database push-notification firebase-cloud-messaging

我一直在尝试使用名为“ all”的主题向所有设备发送消息-但它似乎不起作用(以下问题中的详细信息)。

接收消息

我让每个设备都通过我的FirebaseMessagingService类订阅了“所有”主题,该类在用户通过身份验证后即开始:

// Inside of MyFirebaseMessagingService extends FirebaseMessagingService

@Override
public void onCreate() {
    FirebaseMessaging.getInstance().subscribeToTopic("all");
}

@Override
public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
    Log.d("FirebaseMessaging", "Got notification"); // This doesn't show up
    // Therefore the messages are not reaching the client
    ...
}

发送消息

为了发送消息,客户端将数据推送到位于/messages/的实时数据库中。触发了云功能,并且(据说)将消息发送给“所有”客户端。

// This part works well, as I can see the realtime database directly
final DatabaseReference ref = db.getReference().child("messages");
HashMap hashMap = new HashMap();
hashMap.put(alert.getGroup() + " " + auth.getCurrentUser().getUid() + " " + (new Date()).getTime(), alert);
ref.setValue(hashMap);

这是云功能:

exports.sendMessage = functions.database.ref("/messages/{meta}")
    .onCreate((snapshot, context) => {
        const message = snapshot._data;
        console.log("msg", message["title"], message["description"], message["user"], message["group"]);
        if(message["event"] === "new message") {
            const payload = {
                data: message
                },
                topic: message["group"]
            }

            admin.database().ref("/messages/" + context.params.meta).remove()
            return admin.messaging().sendToTopic("all", payload)
        }
        return false
    });

问题

以下是我观察到的事件列表:
1.客户端发送消息
2.实时数据库已更新(我可以直接查看)
3.触发了云功能(我可以看到console.log
而且...在这里停止。 onMessageReceived永远不会触发。我不知道为什么会这样。
任何帮助将不胜感激!

0 个答案:

没有答案