Android - SendBird 元数据问题
Android - SendBird metadata issue
我在 Android 应用程序中使用 SendBird 聊天 API,但在元数据中获取超过 1 个值时遇到问题。
这就是组频道元数据创建:
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 迭代地图,我将得到 "Daniel" 和 "Else Street"。到目前为止还不错吧?
现在的问题是我需要获取元数据:
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() 方法实际上应该返回 0 returns 2。问题是,如果我删除地址或所有者,它 returns 1,这是正确的.
在 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
的任何东西都可以。
我在 Android 应用程序中使用 SendBird 聊天 API,但在元数据中获取超过 1 个值时遇到问题。
这就是组频道元数据创建:
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 迭代地图,我将得到 "Daniel" 和 "Else Street"。到目前为止还不错吧?
现在的问题是我需要获取元数据:
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() 方法实际上应该返回 0 returns 2。问题是,如果我删除地址或所有者,它 returns 1,这是正确的.
在 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
的任何东西都可以。