【问题标题】:java signalr don't receive message when app is closed关闭应用程序时java信号器没有收到消息
【发布时间】:2020-01-06 06:57:05
【问题描述】:

我正在使用SignalR。当应用程序打开或在后台时,我可以接收消息并显示通知。但是当关闭应用程序时,我无法接收消息。有没有人可以解决这个问题?

我在 MainActivity OnCreate 中有以下代码:

ActivityChat.connection.received(json -> runOnUiThread(new Runnable() {
            @RequiresApi(api = Build.VERSION_CODES.O)
            public void run() {

                JsonObject jsonObject = json.getAsJsonObject();
                if (jsonObject != null && jsonObject.has("A")) {
                    jsonArray = jsonObject.getAsJsonArray("A");
                    String method = jsonObject.get("M").getAsString();
                    //PushNotifications(method,jsonArray);
                    if (method.equals("addNewMessage")) {
                        if (jsonArray != null && jsonArray.size() != 0) {
                            if (jsonArray.get(2).getAsString().equals(driverID)) {
                                if (TransportClass.showCaseView != null && !TransportClass.showCaseView.isShowing()) {
                                    Notificate();
                                }
                            }
                        }
                    }
                }
            }
        }));

【问题讨论】:

  • 这不是答案,但是当我使用 firebase 实现通知时,我遇到了类似的问题。问题是,当应用程序不是活动/后台时,通知会传递到设备的系统托盘,数据有效负载会在启动器活动的意图的附加内容中传递。正如我所说,这不是一个解决方案,但也许它是您应该考虑的一个选项

标签: android android-studio signalr


【解决方案1】:

这是设计使然,而不是 SignalR 客户端本身的设计;这是在原生 iOS 或 Android 上构建移动应用程序时的设计考虑因素。当应用程序不在焦点上时,应用程序也不会在后台运行。 AFAIK,在大多数情况下,该应用程序仅在您在手机上打开时才运行。这是 SignalR 连接处于活动状态的时间 - 在您关闭应用程序的那一刻,您也关闭了连接。

您想在这里使用通知之类的东西来告诉用户打开应用程序,然后当他们打开应用程序时,实时连接将再次出现。

【讨论】:

  • 假设应用程序已关闭并且数据库中有更改,我想通知用户此更改。如何实时完成?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-15
  • 2015-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多