0

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

流程类似于:-

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

  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);
    }
});

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

谢谢

4

2 回答 2

1

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

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

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

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

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

git repo 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());
    }
});
于 2016-08-17T16:13:38.503 回答
1

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

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

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

看来您正在使用 PubNub Java SDK v3.x。请使用最新的 PubNub 4.x SDK

于 2016-08-17T16:47:54.567 回答