Я использую pubnub Adnroid SDK версии 4.20.0, и когда я пытаюсь запустить прослушиватель Subscribeecallback, он всегда входит в PNTimeoutCategory.Мой код инициализации выглядит следующим образом.
private void InitializePubnub()
{
PNConfiguration pnConfiguration = new PNConfiguration();
pnConfiguration.setReconnectionPolicy(PNReconnectionPolicy.LINEAR);
pnConfiguration.setSubscribeKey(GlobalClass.PUBNUB_SUBSCRIBE_KEY);
pnConfiguration.setPublishKey(GlobalClass.PUBNUB_PUBLISH_KEY);
pnConfiguration.setSecure(false);
if (pubnub == null)
{
pubnub = new PubNub(pnConfiguration);
}
}
, и я создаю свой обратный вызов подписчика следующим образом:
SubscribeCallback subscribeCallback;
public void PubnubListener() {
if (subscribeCallback == null) {
subscribeCallback = new SubscribeCallback() {
@Override
public void status(PubNub pubnub, PNStatus status) {
if (status.getCategory() == PNStatusCategory.PNConnectedCategory){
Log.d("TAG", "Category: " + PNStatusCategory.PNConnectedCategory);
}else if (status.getCategory() == PNStatusCategory.PNReconnectedCategory) {
Log.d("TAG", "Category: " + PNStatusCategory.PNReconnectedCategory);
}
else if (status.getCategory() == PNStatusCategory.PNDecryptionErrorCategory) {
Log.d("TAG", "Category: " + PNStatusCategory.PNDecryptionErrorCategory);
} else if (status.getCategory() == PNStatusCategory.PNUnexpectedDisconnectCategory) {
pubnub.reconnect();
} else if (status.getCategory() == PNStatusCategory.PNTimeoutCategory) {
// do some magic and call reconnect when ready
pubnub.reconnect();
} else {
Log.d("TAG", status.getErrorData().getInformation());
}
}
@Override
public void message(PubNub pubnub, PNMessageResult message) {
}
@Override
public void presence(PubNub pubnub, PNPresenceEventResult presence) {
}
};
PubNubClass.getInstance().pubnub.addListener(subscribeCallback);
}
}