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

时间:2016-01-20 08:12:43

标签: android google-cloud-messaging pubnub

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

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

我没有自己的应用服务器将通知从GCM推送到GCM客户端。这可能吗?怎么做?

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

在SO的讨论没有多大帮助。

sending client to client messages without server interaction

有人可以提出更好的方法吗?

3 个答案:

答案 0 :(得分:2)

您基本上必须以某种方式使用服务器。我认为Firebase对你的目的来说是完美的。它有一个你可以使用的Android插件,它会在数据库发生变化时基本警告你的应用。以下是feature的文档。请查看此example以了解实施情况。在使用插件之前,您需要创建一个帐户和诸如此类的东西(基本的是免费的)。以下是instructions

答案 1 :(得分:2)

PubNub实时消息传递和推送通知

(服务器不需要)

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

对于实时数据库或非数据库类型更改通知和信令(任何类型的实时消息),PubNub使receive messages in realtime with a mobile push notification fallback in one publish action变得非常简单。因此GCM消息将与实时消息一起发送。如果应用程序正在运行,您可以实时获取(平均<&lt; 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,如果您对应用实施进展中遇到的任何问题有任何疑问,请参阅contact PubNub support

答案 2 :(得分:1)

另一种可能性是使用SMS。

Android Send and Recieve Messages

&#34;发送二进制(数据)短信

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