当前位置: 首页 > 知识库问答 >
问题:

云功能Firestore向特定用户发送推送通知

颜宸
2023-03-14

我有聊天应用程序我正在使用Firebase firestore数据库,我正在保存最近的消息如下

接收者端:messages->recieverId->recent_messages

这意味着相同的消息将被写入当前用户和接收者用户文档。(同一消息将写入两个不同的文档)

消息内容如下:

 let fromData = ["text": text , "uid": toId, "userProfileUrl":  userAvatarUrl, "timestamp": Timestamp(date: Date()), "seen": false]

-接收方

 let toData = ["text": text  ,"uid": currentUserID, "userProfileUrl":  currentUser?.profileImageUrl ?? "", "timestamp": Timestamp(date: Date()),"seen": false] 

现在我要观察recent_messages集合,并且只向接收方用户发送通知,有什么方法可以避免向这两个用户发送推送通知吗?

共有1个答案

禹德水
2023-03-14

获取reciever用户的注册令牌:

// Callback fired if Instance ID token is updated.
messaging.onTokenRefresh(() => {
  messaging.getToken().then((refreshedToken) => {
    console.log('Token refreshed.');
    // Indicate that the new Instance ID token has not yet been sent to the
    // app server.
    setTokenSentToServer(false);
    // Send Instance ID token to app server.
    sendTokenToServer(refreshedToken);
    // ...
  }).catch((err) => {
    console.log('Unable to retrieve refreshed token ', err);
    showToken('Unable to retrieve refreshed token ', err);
  });
});

然后使用SendToDevice向用户发送通知:

admin.messaging().sendToDevice(token_id, payload)
  .then(function(response) {

    console.log('Successfully sent:', response);
  })
  .catch(function(error) {
    console.log('Error sending:', error);
  });

您可以通过将令牌添加到数据库来将其发送到服务器,然后在服务器端您可以从数据库中读取并检索令牌。

https://firebase.google.com/docs/reference/admin/node/admin.messaging.messaging.html#send-to device

 类似资料:
  • 我完全不熟悉Firebase云功能(2天曝光)。当Firebase数据库检测到添加了新数据时,我尝试向我的应用程序的所有用户发送通知。以下是我到目前为止的情况: 我知道代码现在处于混乱状态,这是由于几个来自不同教程网站的复制和测试。我可以成功地从console.log获得数据的名称,但无法向所有用户发送通知。 我知道大多数使用令牌和设备ID。但是有没有更简单的方法发送给我的每一个用户呢?我是否需要

  • 是否可以向webview Android应用程序的特定用户发送单独推送通知? 我有一个基于webview的Android应用程序。Android8会屏蔽所有后台进程,我的应用程序不能再每隔5分钟检查一次消息,如果有新消息,就会显示推送通知。据我所知,几乎唯一的解决方案是使用firebase显示通知。 我的问题是:我可以向webview应用程序用户发送单独的Firebase通知吗?如果是,如何?从A

  • 如何使用Firebase向我的应用程序的所有注册用户发送推送通知?我在纪录片中搜索了api,但没有找到任何有用的东西。

  • 我想向特定客户发送通知。 e、 g用户名用户 控制器 客户端 角服务 角分量 我已经搜索了许多其他问题并尝试了,但没有一个对我有用,例如这里由Thanh Nguyen Van回答,这里 控制台 提前谢谢。

  • 我是新手。NET(C#)和WebSocket。。。我已经安装了VS2012和Windows Server 2012,并且已经启动并运行了WebSocket。我似乎无法从一个套接字接收消息并将其发送到另一个特定的套接字。唯一的选择似乎是向所有套接字广播消息。有没有一种方法可以将消息只发送给特定的用户?我希望聊天室主持人有机会拒绝不适当的帖子。

  • 我正在制作一个android应用程序,其中我使用firebase身份验证来验证用户,使用firestore来存储一些用户数据。我想让用户有一个设置,他们可以订阅推送通知。如果他们订阅,我希望我的应用程序定期向他们发送通知,比如每6小时一次。目前,我已经使用firebase控制台测试了推送通知,它看起来工作正常。以下是我到目前为止的< code > myfirebasemesagingservice