首页 > 解决方案 > 如何使用 FCM 在应用程序之间发送通知

问题描述

我有一个应用程序需要将数据(单个整数)发送到另一部具有相同应用程序的手机。此数据将在另一部手机上作为通知弹出。

我已经能够通过控制台使用 FCM 向应用程序发送通知。但是,我通过发送消息手动执行此操作。我现在需要将数据从应用程序本身发送到另一部手机上的同一个应用程序。我无法在文档中弄清楚 FCM 如何做到这一点。

我意识到我需要一些如何从一部手机的应用程序获取令牌并让另一个应用程序监听任何通知的方法。令牌非常大,所以我认为我不应该让用户输入令牌来收听来自其他应用程序的通知。我怎样才能实现我的目标?

标签: androidfirebasefirebase-cloud-messaging

解决方案


由于这是一种学习体验,因此无缝体验/用户友好性可能不是什么大问题。如果您没有中央服务器并且不打算拥有中央服务器,请启用令牌上的标准“共享”接口,并让用户通过任何受支持的人与人之间的通信方式(短信、电子)发送它邮件,WhatsApp,任何东西。

在目标设备上,让他们将其粘贴到应用程序 UI 中。

调用标准“共享...” UI 的逻辑如下:

String TheToken; //Comes from the FCM registration callback...
startActivity(
    Intent.createChooser(
    new Intent(Intent.ACTION_SEND)
        .setType("text/plain")
        .putExtra(Intent.EXTRA_TEXT, TheToken), ""));

这个片段假定它在一个Activity方法中,即当前this对象是一个Context实例。

在现实生活中的应用程序中,您可能需要一个中央服务器。

另一种途径是 - 有一些选择依赖于物理接近。阅读网络服务发现 (NSD);这是应用程序查找在同一 Wi-Fi 设备上运行的同一应用程序的其他实例的一种方式。在内部,它是由 DNS 多播促进的 Zeroconf/Bonjour 协议。这种逻辑涉及的比较多;您必须在自定义端口上启动自己的网络服务器。

与附近设备通信的其他选项包括蓝牙 PAN 和近场通信 (NFC)。我对这两个都没有经验,对不起。我只知道它们存在:)


推荐阅读