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 的任何东西都可以。