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);
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资源即可
public void showSendGiftDialog(){
if (mPlayInfoDto != null){
giftDialogFragment = SendGiftDialogFragment.newInstance(mPlayInfoDto);
giftDialogFragment.show(getFragmentManager() , "gift_dialog");
}
}
MZChatManager.getInstance(getContext()).registerListener(GIFT_KEY , new ChatMessageObserver.MesGiftCallback() {
@Override
public void monitorGiftResult(ChatMessageDto chatMessageDto) {
Log.e("Gift", "monitorGiftResult: " + ((ChatCompleteDto)chatMessageDto.getText().getBaseDto()).getName());
}
});
礼物封装一个DialogFragment用于展示和提交发送礼物,后续购买和支付逻辑可自行添加
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;//礼物创建时间
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值不可重复