2016-12-21 5 views
1
私は私のアプリにAndroidのSDKを統合し、サブスクライブし、チャネルにメッセージをパブリッシュするために、このチュートリアルを以下のよ

https://www.pubnub.com/docs/android-java/data-streams-publish-and-subscribePubNub遅延が加入チャネルからのメッセージを受信する(アンドロイド)

それだけに接続して、それをチャンネルにサブスクライブすぐに購読したチャンネルからメッセージを受け取ることができますが、私が数分でそれを残すと、私はもうメッセージを得ることができず、時には遅くメッセージが届きます。

メッセージを受信して​​処理するために、メソッドsuccessCallback(String channel、Object message)を使用します。それで誰も私のような問題を抱えていますか?

答えて

6

古いSDKバージョンを使用しているようです。私は単にその

PNConfiguration pnConfiguration = new PNConfiguration(); 
     pnConfiguration.setSubscribeKey(youKey); 
     pnConfiguration.setReconnectionPolicy(PNReconnectionPolicy.LINEAR); 

     pubnub = new PubNub(pnConfiguration); 
     pubnub.addListener(this); 
     pubnub.subscribe() 
      .channels(Arrays.asList(channel)) 
      .execute(); 

PNReconnectionPolicy.LINEARのようにそれを実装した最新1 4.3.0

で試してみてくださいすると、切断しているときに自動的に再接続してメッセージを受信すると便利です(そしてそれがたくさん起こります)

をその後、私のクラスSubscribeCallbackを次のように実装します。

@Override 
public void unsubscribeAndDisconnect() { 
    pubnub.destroy(); 
} 


@Override 
public void status(PubNub pubnub, PNStatus status) { 
    switch (status.getCategory()) { 
     case PNConnectedCategory: 
      logger.debug("Pubnub Connected"); 
      break; 
     case PNReconnectedCategory: 
      logger.debug("Pubnub reconnected"); 
      break; 
     case PNDisconnectedCategory: 
      logger.debug("Pubnub disconnected"); 
      break; 
     case PNUnexpectedDisconnectCategory: 
      logger.debug("Pubnub Unexcpected disconnect"); 
      pubnub.reconnect(); 
      break; 
     case PNTimeoutCategory: 
      logger.debug("Pubnub Timeout"); 
      pubnub.reconnect(); 
      break; 
     default: 
      logger.debug("Pubnub " + status.getCategory().name()); 
      break; 
    } 
} 


@Override 
public void message(PubNub pubnub, PNMessageResult message) { 
    if (message.getMessage() != null) { 
     String msg = message.getMessage().toString(); 
     //do what you want with the received message 
    } 
} 

@Override 
public void presence(PubNub pubnub, PNPresenceEventResult presence) { 
    //not used in my case 
} 

    @Override 
public void unsubscribeAndDisconnect() { 
    pubnub.destroy(); 
} 

これはそれです。遅延が多分あなたがメッセージを送る場所から来るかもしれないかどうか見るために彼らのデバッグコンソールを使用するようにしてください。

+1

PubNub Android SDKの古いバージョンを使用しています。ありがとう! –

+0

明確にするために、再接続呼び出しはどのような形式のメッセージとしてカウントされませんか?メッセージの使用許可を使い切らずに再接続するまでループするのは安全ですか? – Calco

関連する問題