我正在将Android SDK集成到我的应用中,并按照本教程的操作来订阅和发布消息到频道:https://www.pubnub.com/docs/android-java/data-streams-publish-and-subscribe
当它只是连接并订阅频道时,它可以立即从订阅的频道接收消息,但是如果我在几分钟后离开,则无法再收到消息,有时消息会到达。
我使用方法successCallback(String channel,Object message)来接收和处理消息。那么,有人遇到像我这样的问题吗?
最佳答案
似乎您使用的是过时的SDK版本。尝试使用最新的4.3.0
我就是这样实现的
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
对断开连接时自动重新连接并接收消息很有用(这种情况经常发生)然后我的班级实现
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();
}
就是这样。尝试使用其调试控制台以查看延迟是否可能来自您发送消息的位置。