我在我的 Android 应用程序中使用 SendBird 聊天 API,并且在元数据中获得超过 1 个值时遇到问题。
这就是 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 处迭代地图,我将得到“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() 方法在实际应该返回 2 时返回 0。问题是,如果我删除地址或所有者,它返回 1,这是正确的。