Android 没有我自己的 GCM 服务器的客户端到客户端消息传递

Android client to client messaging without my own server for GCM

我正在做一个涉及客户端之间消息传递的原型。

我想做什么 - 从设备 1 上的 MyApp,能够向设备 2 上的 MyApp 发送消息。 Device2 应收到此消息并显示通知。

我没有自己的应用程序服务器来将通知从 GCM 推送到 GCM clients.Is这可能吗?怎么做?

我调查的内容 - PubNub,它有一个试用许可证,似乎可以满足我在不需要服务器的情况下在频道上发送消息的需要。

SO 上的讨论没有太大帮助。

sending client to client messages without server interaction

谁能提出更好的方法?

您基本上必须以某种方式使用服务器。我认为 Firebase would be perfect for your purposes. It has an Android plugin you can use that will basically alert your app when something changes in the database. Here is the documentation for that feature. Take a look at this example for implementation. Before you can use the plugin, you need to create an account and whatnot (basic one is free). Here are the instructions.

PubNub 实时消息和推送通知

(不需要服务器)

使用 PubNub,您不需要您自己的 服务器来进行实时消息传递或移动推送通知。您可能有自己的数据库服务器(MySQL 或类似的传统 RDBMS,无 SQL 数据库,如 MongoDB,或实时数据库同步,如 Firebase)来验证用户等.

对于实时数据库或 non-DB 类型的更改通知和信号(任何类型的实时消息),PubNub 使 receive messages in realtime with a mobile push notification fallback in one publish action 变得超级简单。因此 GCM 消息将与实时消息一起发送。如果应用程序处于活动状态 运行,您会实时获得它(平均 < 1/4 - 通常更快),如果应用程序未处于活动状态(后台或根本未启动),则会收到 GCM 消息。

PubNub's free plan is not a trial (anymore). It is free (including all add-ons) for as long as you stay within the free plan limits.

如果您对入门有任何进一步的疑问,或者在您的应用实施过程中遇到任何问题,请参阅 PubNub Android docs for more details and contact PubNub support

另一种可能是使用短信。

Android Send and Recieve Messages

"发送二进制(数据)短信

我们可以使用 sendDataMessage() 将二进制消息(与我们之前介绍的基于文本的消息相反)发送到特定的应用程序端口。根据这个 Stack Exchange 线程数据短信是通过 2G/3G 和 GSM 发送的。我已经在关闭移动数据的情况下对其进行了测试,并且它可以正常向我收取相同的费用,所以不太确定它是否使用 2G/3G,但通常术语数据在与网络相关时用于电话(tcp/ip).无论如何,SMS 通常会发送到设备上的特定端口(可能是端口 0 [零])。但是使用 sendDataMessage() 我们可以将 SMS 发送到其他一些随机端口,我们的应用程序可以在该端口上侦听传入的 SMS 并对其进行处理。在这种情况下,默认的消息传递应用程序不会将 SMS 存储在发件人和收件人的收件箱中。 “