有没有一种在Android上不需要专用服务器就可以使用GCM的方法?

7
我正在构思一款安卓应用程序,可以像发送图片消息一样将数据从一个设备发送到另一个设备,但由于我没有服务器,因此我在寻找其他的消息传递方式。Google Cloud Messaging(GCM)似乎是个不错的选择,因为它是针对安卓开发的且免费使用,但仍需要一个服务器来使用。是否有绕过该要求的方法,例如在应用本身上运行GCM服务器?或者在安卓上实现无服务器通信的更好方法?

购买一台售价25英镑的树莓派(再加上25英镑左右的电源、电缆等),运行自己的小型专用GCM服务器。在上面安装Apache、PHP、MySql并让其全天候运行,它只需要约3瓦特的电力。 - NickT
2
可能更便宜的做法是在Heroku或AWS上建立一个服务器。 - twaddington
SignalR也是一种方式吗?不需要专用服务器,只需将PC作为服务器即可 :) - BNK
2个回答

3
是的,你可以这样做-可以从设备发送与从服务器发送相同的消息。然而,这会产生以下问题:
1.您将API密钥放在应用中,因此某人可以反编译您的APK以获取它。
2.您的用户需要某种方式共享他们的GCM注册ID。如果两个用户的ID同时过期,那么没有办法再次共享它们。
实际上,构建您的应用程序并将其托管在AppEngine上只需要大约一个小时的时间来编写,并且即使对于大量用户,成本也不到每月10美元。
如果想要查看使用Java编写的简单消息服务器示例,请查看支持我的应用程序的服务器。

https://github.com/charlesmunger/touch-to-text-server.git


请注意,Google AppEngine不支持与CCS的连接,它仅适用于仅支持云到设备的HTTP。 - Henrique de Sousa

1

我认为如果没有服务器,想要有效地实现你想要的功能会很困难,但你可以查看Parse的SDK。它是免费试用的,也有一定的免费月度限制。

文档。你可能需要阅读“向频道发送推送”和“使用高级定位”。


谢谢提供链接。这可能是最现实的答案。 - Phil
2
请注意,Parse使用专有的长轮询连接 -- 它不使用GCM。其中一个好处是它可以在Kindle Fire等设备上运行。但这也使它不够高效,因为它无法从共享的Google服务连接中受益。AirBop是另一种Android特定的推送通知服务,它使用GCM,这使得它更节约电池和网络资源,但这也意味着它只能在启用了Google服务(如Gmail和Play)的设备上运行。 - Lorne Laliberte

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接