在没有互联网访问的情况下从服务器端向Android应用程序发送警报/通知

时间:2016-01-22 12:26:30

标签: android ajax websocket xmpp android-notifications

我需要从webapp发送推送通知到Android应用程序。 基本上我只是想通知android客户端服务器上有新数据。所以它只需要是手机的字符串+振动/声音。

这里的(大)问题是我在无法访问互联网的企业网络中。这就是我无法使用GCM的原因。

到目前为止,我找到了以下选项来完成没有GCM的任务:

  • 使用XMPP
  • 的WebSockets
  • Ajax Polling

是否可以将WebSockets或AjaxPolling包含到原生Android应用中以触发振动等事件?

是否有更简单的解决方案,没有像xmpp那样多的开销,因为我只需要发送一个简短的通知?到目前为止,我理解我需要像Android +的 SMACK XMPP 这样的想法,例如:针对此方案,服务器端的 Openfire XMPPHP

1 个答案:

答案 0 :(得分:1)

由于没有人回复,我想为您提供我现在尝试追求的方法。

我使用 Laravel 编写API。它为Redis提供了开箱即用的支持,这对广播活动来说非常棒 - > https://laravel.com/docs/5.1/events

以下只是一个简单的例子:

Redis::publish('test', json_encode($data));

这些事件是从同一台机器上运行的 Socket.IO 服务器实例接收的。

var Redis = require('ioredis');
var redis = new Redis();

redis.subscribe('test');

....

server.listen(3000);

Socket.IO 有一个Android客户端实现,它允许我连接到本机Android应用程序中的socket.io服务器。 以下是一个示例:http://socket.io/blog/native-socket-io-and-android/

private Socket mSocket;
{
    try {
        mSocket = IO.socket("http://localhost:3000");
    } catch (URISyntaxException e) {}
}