安卓推送通知服务

3
目前我有一个Spring后端,我的安卓应用上有一个WebSocket在监听变化。如果有变化,新数据将被添加到我的应用布局中。现在我想在应用没有运行的情况下通知用户发生了变化。

阅读了一些文章后,我发现可以通过GCM(FCM)来实现这个目的。 但我不想仅因此更改我的后端。 那么我的问题是:

如何保持WebSocket连接,即使应用程序没有运行?

如果服务是解决方案-我怎样才能将WebSocket实例从Activity传递到Service?

如果有人能给我一些想法,那会帮助我很多。 感谢您的帮助:)

1个回答

1
如果您想实现后台运行服务,您需要创建一个前台服务。因为Google在Android O上限制了后台执行。
您可以在onStartCommand方法中处理套接字:
public class SocketService extends Service {

    ...

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        try {
            WebSocketClient client = new WebSocketClient(new URI("http://myserver.hu")) {

                @Override
                public void onOpen(ServerHandshake handshakedata) {

                }

                @Override
                public void onMessage(String message) {

                }

                @Override
                public void onClose(int code, String reason, boolean remote) {

                }

                @Override
                public void onError(Exception ex) {

                }
            }

        } catch (URISyntaxException e) {
           e.printStackTrace();
        }
        return START_STICKY;
    }
}

但我认为FCM是更好的推送消息选择。

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