从pubnub Android

时间:2016-08-17 07:30:35

标签: java android api pubnub groupchat

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

Flow就像: -

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

  2. 使用PubNub数据网络从服务器检索数据

  3. 我为pubnub搞砸了,并且知道如何将它集成到我的应用程序中,因为我将需要 publish_key和subscribe_key 来初始化我的应用程序中的Pubnub SDK。

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

    我还研究过 Subscriber and Publisher ,根据我的理解,我应该订阅我的服务器将在pubnub上构建的频道,以便从Pubnub检索数据并且必须使用如下所述的功能: -

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

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

    由于

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

答案 1 :(得分:1)

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

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

没有要求将history API用于您描述的内容。使用history获取发布时遗漏的邮件。例如,客户端应用程序当时处于脱机状态。

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