2016-09-16 55 views
0

我在我的Android應用程序中使用SendBird聊天API,並且在元數據中獲得超過1個值時遇到問題。Android - SendBird元數據問題

這就是groupchannel元數據創建:

final HashMap<String, String> data = new HashMap<String, String>(); 
     data.put("owner", "Daniel"); 
     data.put("address", "Else Street"); 

    groupChannel.createMetaData(data, new BaseChannel.MetaDataHandler() { 
          @Override 
          public void onResult(Map<String, String> map, SendBirdException e) { 
           if(e != null) { 
            Toast.makeText(ctx, "" + e.getCode() + ":" + e.getMessage(), Toast.LENGTH_SHORT).show(); 
            return; 
           } 

如果我重複在onResult地圖,我會說:「丹尼爾」和「否則街」。到目前爲止,這很好,對吧?現在

問題是,當我需要的元數據:

List<String> keys = new ArrayList<String>(); 

        keys.add("owner"); 
        keys.add("address"); 
mGroupChannel.getMetaData(keys, new BaseChannel.MetaDataHandler() { 
         @Override 
         public void onResult(Map<String, String> map, SendBirdException e) { 
          if (e != null) { 
           Toast.makeText(ChatActivity.this, "" + e.getCode() + ":" + e.getMessage(), Toast.LENGTH_SHORT).show(); 
           return; 
          } 
          Toast.makeText(getBaseContext(), String.valueOf(map.size()), Toast.LENGTH_LONG).show(); 
         } 
        }); 

map.size()methos將返回0時,它實際上應該返回2的問題是,如果我刪除地址或所有者,它返回1,這是正確的。

回答

0

在3.0.0有類似的問題,但它現在已經修復。

而關於你粘貼的代碼,它應該看起來像這樣。

mGroupChannel.createMetaData(data, new BaseChannel.MetaDataHandler() { 
    @Override 
    public void onResult(Map<String, String> map, SendBirdException e) { 
     // Toast.makeText(getContext(), String.valueOf(map.size()), Toast.LENGTH_LONG).show(); 

     List<String> keys = new ArrayList<String>(); 

     keys.add("address"); 
     keys.add("owner"); 

     mGroupChannel.getMetaData(keys, new BaseChannel.MetaDataHandler() { 
      @Override 
      public void onResult(Map<String, String> map, SendBirdException e) { 
       Toast.makeText(getContext(), String.valueOf(map.size()), Toast.LENGTH_LONG).show(); 
      } 
     }); 
    } 
}); 

或任何可確保createMetaData完成將被罰款後打電話getMetaData

+0

嗨兄弟,我更新到3.0.2在我的build.gradle再次嘗試,仍然無法正常工作,我做的是完全相同的,因爲它是在文檔中。你能幫我麼? ): –

+0

您是否在createMetaData通過調用其回調處理程序完成後調用getMetaData? –

+0

你可以看看代碼嗎?轉到initGroupChannel()方法http://pastebin.com/SED3Qydp –