我已经部署了以下 Firebase 函数,用于在我的 Cloud Firestore 聊天应用程序中实现推送通知。看完this tutorial后我第一次这样做.
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.sendNotificationToTopic = functions.firestore.document('chats/{roomid}/messages/{uid}').onWrite(async(event)=>{
let content = event.after.get('message')
var message ={
notification: {
title: 'You have an unread message',
body: content,
},
topic:'namelesscoder',
};
});
在测试该功能时,log显示该功能正常工作,没有任何错误,但我的设备实际上没有收到通知。这是因为我声明数据库结构的方式吗?上面代码中的路径就是我的聊天消息的存储位置。
最佳答案
此函数将向主题(订阅主题的用户组)而不是特定用户发送推送通知。如果您想向一组用户发送通知,您可以使用此功能,并且您的用户必须订阅主题。在此函数中,主题是“namelesscoder”,因此您的用户需要订阅该主题。
如果您使用的是 Android,请编写以下代码来订阅主题“namelesscoder”
FirebaseMessaging.getInstance().subscribeToTopic("namelesscoder")
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
String msg = "subscribed to topic nameless coder.";
if (!task.isSuccessful()) {
msg = "Failed to subscribe to topic";
}
Log.d(TAG, msg);
Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
}
});
如果您想向特定用户发送通知,则必须将其发送到 FCM token 。
关于android - 当日志显示没有错误时,为什么我的推送通知没有出现在设备上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60134790/