android - 如何使用 FCM 在应用程序之间发送通知
问题描述
我有一个应用程序需要将数据(单个整数)发送到另一部具有相同应用程序的手机。此数据将在另一部手机上作为通知弹出。
我已经能够通过控制台使用 FCM 向应用程序发送通知。但是,我通过发送消息手动执行此操作。我现在需要将数据从应用程序本身发送到另一部手机上的同一个应用程序。我无法在文档中弄清楚 FCM 如何做到这一点。
我意识到我需要一些如何从一部手机的应用程序获取令牌并让另一个应用程序监听任何通知的方法。令牌非常大,所以我认为我不应该让用户输入令牌来收听来自其他应用程序的通知。我怎样才能实现我的目标?
解决方案
由于这是一种学习体验,因此无缝体验/用户友好性可能不是什么大问题。如果您没有中央服务器并且不打算拥有中央服务器,请启用令牌上的标准“共享”接口,并让用户通过任何受支持的人与人之间的通信方式(短信、电子)发送它邮件,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)。我对这两个都没有经验,对不起。我只知道它们存在:)
推荐阅读
- python-3.x - Twint 模块并从推文创建数据框
- dax - DAX 时间智能函数 - 有没有办法获取底层 DAX 代码?
- java - java 8中Date对象的after函数问题
- python - 循环从列表中创建多个数据框
- c# - 如何返回使用布局的空剃须刀页面?
- java - SimpleDateFormat 从 Firestore 时间戳返回错误的时间 - 为什么?
- python - Django 在错误的目录中查找模板
- css - Reactjs 组件中的 CSS 冲突问题
- google-maps - 从 Google 地图搜索中获取邮政编码
- r - 您可以使用 R 中的 ar 函数拟合非平稳模型吗