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

And*_*dyB 5 ajax android xmpp websocket android-notifications

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

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

到目前为止,我发现以下选项可以在没有 GCM 的情况下完成任务:

  • 使用 XMPP
  • 网络套接字
  • Ajax 轮询

是否可以将 WebSockets 或 AjaxPolling 包含到原生 Android 应用程序中以触发诸如振动之类的事件?

有没有更简单的解决方案,没有 xmpp 那么多的开销,因为我只需要发送一个简短的通知?到目前为止,我明白我需要像SMACK XMPP for Android + 例如OpenfireXMPPHP在这种情况下的服务器端。

And*_*dyB 2

由于没有人回复,我想向您提供我现在尝试采用的方法。

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

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

Redis::publish('test', json_encode($data));
Run Code Online (Sandbox Code Playgroud)

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

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

redis.subscribe('test');

....

server.listen(3000);
Run Code Online (Sandbox Code Playgroud)

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) {}
}
Run Code Online (Sandbox Code Playgroud)