【问题标题】:unity-firebase cloud messaging issueunity-firebase 云消息传递问题
【发布时间】:2021-06-02 12:56:04
【问题描述】:

我开发了一个统一的游戏,并使用“Firebase 云消息传递”进行推送通知。 我有一个问题。当我清除托盘中收到的通知时,似乎与之相关的消息也被删除了。所以当我打开应用程序时不会调用“MessageReceived”。

  1. 我在安卓上遇到了这个问题。还没在ios上测试过。
  2. 我使用 firebase admin sdk 发送消息。(用 node js 编写)

有没有办法在不删除消息的情况下清除通知托盘? 提前感谢您的帮助

【问题讨论】:

    标签: android firebase unity3d firebase-cloud-messaging firebase-admin


    【解决方案1】:

    当应用不在 Android 上运行时,需要进行一些额外的设置才能路由通知。

    See the Firebase docs for more information

    引用自文档:

    当应用程序根本没有运行并且用户点击通知时,默认情况下,消息不会通过 FCM 的内置回调进行路由。在这种情况下,消息负载是通过用于启动应用程序的 Intent 接收的。

    在应用处于后台时收到的消息具有用于填充系统托盘通知的通知字段的内容,但该通知内容不会传达给 FCM。也就是说,FirebaseMessage.Notification 将为空。

    基本上,您需要使用与 Firebase 消息传递捆绑的自定义启动活动,而不是默认的 UnityPlayerActivity。这个活动叫做MessagingUnityPlayerActivity,可以在libmessaging_unity_player_activity.jar里面找到。您需要创建一个AndroidManifest.xml 文件来指示应用使用此自定义活动而不是默认的 Unity 活动。

    【讨论】:

    • 实际上我已经根据 FCM 文档修改了我的清单,当我通过单击通知运行我的应用程序时,通知工作正常。我的问题是当我在打开应用程序之前清除通知托盘时,我不希望与它相关的消息被删除所以当我稍后打开应用程序时,可以接收到消息。
    • 对不起,现在我明白你的意思了。在这种情况下,您可能需要为应用程序实现一个 API,以便在它启动时检索消息,并且不要纯粹依赖于通知有效负载。对于我过去工作过的应用程序,我们通常有一个收件箱表,它存储通过推送通知或客户端可以读取和操作的套接字发送的消息。从长远来看,我发现这个解决方案更加强大,尤其是在用户选择退出推送通知的情况下。当然,这一切都取决于您项目的要求,此解决方案可能并非在所有情况下都最适合。
    • 所以没有直接的方法可以做到这一点。在这种情况下,我将不得不修改我的节点 js 服务器。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多