互动 - mengzhuSDK/MengzhuSDK_Android GitHub Wiki

1互动功能集成

MZChatManager manager =MZChatManager.getInstance(this);
manager.registerListener(TestActivity.class.getSimpleName(),new MZChatMessagerListener(){

            @Override
            public void monitorInformResult(String type, Object obj) {
                Log.d(TAG, "monitorInformResult消息: "+obj);
            }

            @Override
            public void monitorInformErrer(String type, int state, String msg) {
                Log.d(TAG, "monitorInformErrer消息: "+msg);
            }

            @Override
            public void dataResult(Object obj, Page page, int status) {
                Log.d(TAG, "消息: "+obj);
            }

            @Override
            public void errorResult(int code, String msg) {
                Log.d(TAG, "错误: "+code);
            }
        });
//获取视频详情后调用 获取历史消息会同时开启消息通道
MZChatManager.getInstance(mActivity).startHistory(mPlayInfoDto);
  • 关闭消息
MZChatManager.getInstance(mActivity).destroyChat();
  • 历史消息翻页
//last_id 在播放详情内获取
MZChatManager.getInstance(mActivity).nextHistory("last_id");
  • 发送消息
MZChatManager.getInstance(this).registerAtPushListener(new IBasePresenterLinstener() {
                    @Override
                    public void dataResult(Object obj, Page page, int status) {
                    }

                    @Override
                    public void errorResult(int code, String msg) {

                    }
                });
                
               ChatMegTxtDto dto = new ChatMegTxtDto();
                dto.setText(msg);
                String avatar = MyUserInfoPresenter.getInstance().getUserInfo().getAvatar();
                dto.setAvatar(avatar);
                dto.setAccountNo(MyUserInfoPresenter.getInstance().getUserInfo().getAccountNo());
                dto.setUser_ext(扩展信息);
//ChatMegTxtDto 新增 user_ext字段,会保存在消息体里面,历史消息依然保留
MZChatManager.getInstance(this).sendMessageExecute(ChatMessageObserver.MESSAGE_TYPE, dto);

2表情键盘

private ViewPager mVpEmoji;

public void initEmoji() {
        List emoji = EmojiUtils.getExpressionRes(90);
        List<View> views = new ArrayList<View>();
        for (int i = 1; i <= 4; i++) {// 20*5
            View view = EmojiUtils.getGridChildView(this, i, emoji, et_input);
            views.add(view);
        }
        mVpEmoji.setAdapter(new EmojiPagerAdapter(views));
    }
    
    private void showEmoji() {
        KeyBoardUtils.closeKeybord(et_input, this);
        new Handler() {//延时0.2秒显示表情
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                mActivityInputEmoji.setImageResource(R.mipmap.icon_keybord);
                mVpEmoji.setVisibility(View.VISIBLE);
            }
        }.sendEmptyMessageDelayed(1, 200);
    }
注意 表情键盘遵循盟主表情图片解析协议,如需替换资源,更改media Module里对应的drawable资源即可

3 礼物

public void showSendGiftDialog(){
        if (mPlayInfoDto != null){
            giftDialogFragment = SendGiftDialogFragment.newInstance(mPlayInfoDto);
            giftDialogFragment.show(getFragmentManager() , "gift_dialog");
        }
    }

3.1 礼物消息监听回调

MZChatManager.getInstance(getContext()).registerListener(GIFT_KEY , new ChatMessageObserver.MesGiftCallback() {
            @Override
            public void monitorGiftResult(ChatMessageDto chatMessageDto) {
                Log.e("Gift", "monitorGiftResult: " + ((ChatCompleteDto)chatMessageDto.getText().getBaseDto()).getName());
            }
        });

3.2

礼物封装一个DialogFragment用于展示和提交发送礼物,后续购买和支付逻辑可自行添加

3.3 礼物列表api

MZApiRequest mzGiftListRequest = new MZApiRequest();
mzGiftListRequest.createRequest(getContext(),MZApiRequest.API_TYPE_GIFT_LIST);
mzGiftListRequest.setResultListener(new MZApiDataListener() {
            @Override
            public void dataResult(String s, Object dto, Page page, int i) {
                if (dto != null) {
                List<GiftDto> mGiftDto = (ArrayList<GiftDto>) dto;
                }
            }

            @Override
            public void errorResult(String s, int i, String s1) {

            }
        });
// api对应type , ticketId,写死的0,100,返回所有礼物        
mzGiftListRequest.startData(MZApiRequest.API_TYPE_GIFT_LIST, mPlayInfoDto.getTicket_id(), 0, 100);

GiftDto
 private String price; //礼物价格
 private String icon; //礼物图标
 private String name; //礼物名称
 private String pay_amount;//实际支付金额
 private long created_at;//礼物创建时间

3.4 发送礼物api

MZApiRequest mzSendGiftRequest = new MZApiRequest();
mzSendGiftRequest.createRequest(getContext() , MZApiRequest.API_TYPE_SEND_GIFT);
mzSendGiftRequest.setResultListener(sendGiftListener);
// api对应type , ticketId,发送礼物的个数       
mzSendGiftRequest.startData(MZApiRequest.API_TYPE_SEND_GIFT , mPlayInfoDto.getTicket_id() , mGift.getId() +"", "1");
MZApiDataListener sendGiftListener = new MZApiDataListener() {
        @Override
        public void dataResult(String apiType, Object dto, Page page, int status) {
            if (status == 200){
                ToastUtils.popUpToast("发送成功");
            }else {
                ToastUtils.popUpToast("发送失败");
            }
        }

        @Override
        public void errorResult(String apiType, int code, String msg) {
            ToastUtils.popUpToast("发送失败");
        }
    };
如需修改样式可参照模板和API文档接口,自行编写。

注意

MZChatManager注册的监听消息回调,key值不可重复

⚠️ **GitHub.com Fallback** ⚠️