2016-09-16 9 views
0

Android 앱에서 SendBird 채팅 API를 사용하고 메타 데이터에 둘 이상의 값을 가져올 때 문제가 있습니다. groupchannel 메타 데이터 생성의Android - SendBird 메타 데이터 문제

는 :

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을 반환하는, 내가 주소 또는 소유자를 제거하는 경우, 그것은 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

안녕하세요, 내 build.gradle에서 3.0.2로 업데이트했습니다. 다시 시도했지만 여전히 작동하지 않으며 문서에서와 똑같습니다. 저를 도와주세요?) : –

+0

createMetaData가 콜백 핸들러를 호출하여 마무리 된 후에 getMetaData를 호출합니까? –

+0

코드를 살펴볼 수 있습니까? initGroupChannel() 메소드로 이동합니다. http://pastebin.com/SED3Qydp –