【问题标题】:Retrieve Data from pubnub Android从 pubnub Android 中检索数据
【发布时间】:2016-08-17 07:30:34
【问题描述】:

我之前从未使用过 pubnub,所以只是想从大家那里得到一些指导,因为我的要求有点像,我需要制作群聊应用程序,我将使用 RestFull API 将数据从我的应用程序传递到服务器和服务器会将数据推送到 Pubnub,我将从 pubnub 检索数据以在应用程序内显示数据。

流程类似于:-

  1. 使用 RESTful API 将数据从应用程序传递到服务器

  2. 使用 PubNub 数据网络将数据从服务器检索到应用程序

我对 pubnub 进行了深入研究,并了解了如何将其集成到我的应用程序中,因为我需要 publish_key 和 subscribe_key 来在我的应用程序中初始化 Pubnub SDK。

 Pubnub pubnub = new Pubnub("Your Publish Key Here", "Your Subscribe Key Here");

我还研究了 订阅者和发布者,根据我的理解,我是否必须订阅我的服务器将在 pubnub 构建的频道才能从 Pubnub 检索数据并且必须使用如下所述的功能:-

    pubnub.history("channel_name", 100, new Callback() {
    public void successCallback(String channel, Object message) {
        System.out.println(message);
    }
});

这正是我需要在我的应用程序的代码部分中做的事情,请给我一些指导,如果有人处理这种类型的要求,那将非常有帮助,因为我没有太多时间花研发。

谢谢

【问题讨论】:

    标签: java android api pubnub groupchat


    【解决方案1】:

    如果您想将数据从您的客户端应用程序发送到您的服务器应用程序,您可以使用传统的 Web 应用程序技术直接将其 POST 到您的服务器。

    然后你的服务器可以publish messages 到你的client apps are subscribed to 的 PubNub 频道。

    您所描述的内容不需要使用history API。使用history 获取在发布时遗漏的消息。例如,当时客户端应用处于离线状态。

    您似乎正在使用 PubNub Java SDK v3.x。请使用latest PubNub 4.x SDK

    【讨论】:

      【解决方案2】:

      1.使用 RESTful API 将数据从应用程序传递到服务器。

      如果您想将数据从客户端应用程序发送到服务器应用程序,您可以使用传统的 Web 应用程序技术直接将其 POST 到您的服务器。

      然后您的服务器可以将消息发布到您的客户端应用订阅的 PubNub 频道。

      2。使用 PubNub 数据网络将数据从服务器检索到应用程序。

      您可以使用利用许多 PubNub 功能的 pubnub-android-Lolli-chat 应用程序。

      git 仓库 https://github.com/GleasonK/pubnub-android-lolli-chat

      http://kevingleason.me/pubnub-android-lolli-chat/

      使用流动代码从 PubNub 中检索数据:

      pubnub.history(this.channel,100,false,new Callback() {
          @Override
          public void successCallback(String channel, final Object message) {
              try {
                  JSONArray json = (JSONArray) message;
                  Log.d("History", json.toString());
                  final JSONArray messages = json.getJSONArray(0);
                  final List<ChatMessage> chatMsgs = new ArrayList<ChatMessage>();
                  for (int i = 0; i < messages.length(); i++) {
                      try {
                          if (!messages.getJSONObject(i).has("data")) continue;
                          JSONObject jsonMsg = messages.getJSONObject(i).getJSONObject("data");
                          String name = jsonMsg.getString(Constants.JSON_USER);
                          String msg = jsonMsg.getString(Constants.JSON_MSG);
                          long time = jsonMsg.getLong(Constants.JSON_TIME);
                          ChatMessage chatMsg = new ChatMessage(name, msg, time);
                          chatMsgs.add(chatMsg);
                      } catch (JSONException e) { // Handle errors silently
                          e.printStackTrace();
                      }
                  }
      
                  MainActivityPubnub.this.runOnUiThread(new Runnable() {
                      @Override
                      public void run() {
                        //  Toast.makeText(MainActivityPubnub.this,"RUNNIN",Toast.LENGTH_SHORT).show();
                          mChatAdapter.setMessages(chatMsgs);
                      }
                  });
              } catch (JSONException e) {
                  e.printStackTrace();
              }
          }
      
          @Override
          public void errorCallback(String channel, PubnubError error) {
              Log.d("History", error.toString());
          }
      });
      

      【讨论】:

      • 感谢@Craig 和 Sahir,感谢您提供宝贵的反馈意见,如果我在使用您提到的代码时遇到任何问题,我会告诉您:)
      猜你喜欢
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-05
      相关资源
      最近更新 更多