2016-09-16 3 views
0

Ich verwende die SendBird-Chat-API in meiner Android-App, und ich habe Probleme, wenn ich mehr als einen Wert in Metadaten erhalte.Android - SendBird-Metadaten-Problem

Das ist die group Erstellung von Metadaten ist:

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; 
           } 

Wenn ich die Karte auf onResult laufen, werde ich "Daniel" und "Else Street" erhalten. So weit so gut, oder? Jetzt

Das Problem ist, wenn ich Metadaten erhalten müssen:

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 wird 0 zurückkehrt, wenn es tatsächlich zurückkehrt sollte 2. Das Problem ist, dass, wenn ich entfernen Adresse oder Eigentümer, Es gibt 1 zurück, was korrekt ist.

Antwort

0

Es gab ein ähnliches Problem bei 3.0.0, aber es ist jetzt behoben.

Und in Bezug auf Ihren eingefügten Code sollte es so aussehen.

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(); 
      } 
     }); 
    } 
}); 

oder alles, was getMetaData nach anrufen createMetaData beendet wird gut macht sicher.

+0

Hey bro, ich aktualisiert auf 3.0.2 in meinem build.gradle versuchte es wieder und funktioniert immer noch nicht und ich mache das genau so, wie es in der Dokumentation ist. Kannst du mir bitte helfen?): –

+0

Rufen Sie getMetaData auf, nachdem createMetaData abgeschlossen wurde, indem Sie den Callback-Handler aufrufen? –

+0

Können Sie sich den Code ansehen? Gehe zu initGroupChannel() Methode http://pastebin.com/SED3Qydp –

Verwandte Themen