2016-11-24 3 views
2

Недавно я обновил приложение для поддержки последних version twilio chat 0.11.1. После этого, когда я вызываю currentChannel.getMessages() его возвращающий null. Я делаю какполучение null при вызове сообщений на текущем канале в Twilio chat android

 Channels channelsObject = basicClient.getIpMessagingClient 
     channelsObject.getChannel(channelId, new CallbackListener<Channel>() { 
        @Override 
        public void onSuccess(final Channel channel) { 
         currentChannel = channel; 
         setupRecyclerView(); 
        } 
       }); 
     private void setupRecyclerView() { 
       currentChannel.addListener(ChatFragment.this); 
       currentChannel.synchronize(new com.twilio.chat.CallbackListener<Channel>() { 
       @Override 
       public void onError(ErrorInfo errorInfo) { 
       Application.get().logErrorInfo("Channel sync failed", errorInfo); 
       } 

       @Override 
       public void onSuccess(Channel result) { 
       logger.d("Channel sync success for " + result.getFriendlyName()); 
      } 
     }); 
     Messages messagesObject = currentChannel.getMessages(); 

я получил предупреждения как

| WARNING | ChatUtils(native) | ListenerWrapper default onSuccess() not found 
| WARNING | Channel(native) | No messages available, maybe you forgot to synchronize the channel? 

ответ

1

сообщений нет в наличии, может быть, вы забыли синхронизировать канал?

Это именно то, что происходит. Канал будет синхронизирован только тогда, когда вы получите обратный вызов CallbackListener.onSuccess(). Он выполняется асинхронно, и ваш вызов getMessages() выполняется до срабатывания обратного вызова.

 currentChannel.synchronize(new com.twilio.chat.CallbackListener<Channel>() { 
      @Override 
      public void onError(ErrorInfo errorInfo) { 
      Application.get().logErrorInfo("Channel sync failed", errorInfo); 
      } 

      @Override 
      public void onSuccess(Channel result) { 
      logger.d("Channel sync success for " + result.getFriendlyName() + " now can get messages and members objects"); 
      Messages messagesObject = result.getMessages(); 
      // should be non-null now 
      } 
     }); 
+0

Спасибо, что у меня есть. Но требуется синхронизация в первый раз (3 или 4 секунды). Ожидается ли это? –

+0

Это то, что нужно оптимизировать в SDK - вы получаете 3-4 секунды на пустом канале? – Berkus

+0

есть. Его занимает 3-4 секунды для пустого канала. –

Смежные вопросы