本文由有赞技术团队原创分享,原题“有赞 APP IM SDK 组件架构设计”,即时通讯网收录时有修订和改动,感谢原作者的无私分享。
if (requestCallBack != null) { mCallBackMap.put(requestId, requestCallBack); }
private void IMResponseOnSuccess(String requestid, String response) { if (mCallBackMap != null) { IMCallBack callBack = mCallBackMap.get(requestid); if (callBack == null) { return; } if (callBack instanceof JsonResultCallback) { final JsonResultCallback resultCallback = (JsonResultCallback) callBack; if (resultCallback.mType == String.class) { callBack.onResponse(response); } else { Object object = new Gson().fromJson(response, resultCallback.mType); callBack.onResponse(object); } removeCallBack(requestid); } } }
RequestApi requestApi = new RequestApi(IMConstant.REQ_TYPE_GET_CONVERSATION_LIST, EnumsManager.IMType.IM_TYPE_WSC.getRequestChannel()); requestApi.addRequestParams("limit", 100); requestApi.addRequestParams("offset", 0); IMEngine.getInstance().request(requestApi, new JsonResultCallback<List<ConversationEntity>>() { @Override public void onResponse(List<ConversationEntity> response) { mSwipeRefreshLayout.setRefreshing(false); mAdapter.mDataset.clear(); mAdapter.mDataset.addAll(response); mAdapter.notifyDataSetChanged(); } @Override public void onError(int statusCode) { //do something } });
public interface IMListener { /** * 连接成功 */ void connectSuccess(); /** * 连接失败 */ void connectFailure(EnumsManager.DisconnectType type); /** * 鉴权成功 */ void authorSuccess(); /** * 鉴权失败 */ void authorFailure(); /** * 接收数据成功 */ void receiveSuccess(int reqType, String msgId, String requestChannel, String message, int statusCode); /** * 接收数据失败 */ void receiveError(int reqType, String msgId, String requestChannel, int statusCode); }
private void distributeData(IMEntity imEntity) { if (mIMListener != null && imEntity != null) { // 省略部分逻辑代码 …… if (status == Response.SUCCESS) { switch (responseModel.reqType) { case IMConstant.REQ_TYPE_AUTH: // 鉴权成功 mIMListener.authorSuccess(); return; case IMConstant.REQ_TYPE_OFFLINE: // 服务端踢客户端下线 mIMListener.connectFailure(EnumsManager.DisconnectType.SERVER); break; case IMConstant.REQ_TYPE_HEARTBEAT: // 心跳成功 case IMConstant.REQ_TYPE_RECEIVER_MSG: // 收到回调消息 handleMessageID(responseModel.body); break; default: break; } mIMListener.receiveSuccess(responseModel.reqType, msgId, responseModel .requestChannel, responseModel.body, 0); } else { mIMListener.receiveError(responseModel.reqType, msgId, responseModel .requestChannel, status); } } }
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="limit"> <!--每屏展示的条数--> <item name="swiplimit">5</item> ...... </style> ...... ...... <style name="itembox"> <item name="showvoice">true</item> ...... ...... <item name="more" show="true"> <more> <icon style="mipmap">im_plus_image</icon> <itemname>测试</itemname> <callback>false</callback> </more> ...... ...... <more> <icon style="mipmap">ic_launcher</icon> <itemname>测试</itemname> <callback>true</callback> </more> </item> ...... ...... </style> </resources>
<?xml version="1.0" encoding="utf-8"?> <resources> <!--im 聊天背景--> <style name="imui_background"> <item name="android:background">@android:color/holo_red_dark</item> </style> ...... ...... <!--气泡背景--> <style name="bubble_background"> <item name="android:background">@mipmap/bubble_right_green</item> </style> <!--背景和和字段颜色定制--> <style name="bg_and_textcolor" parent="bubble_background"> <item name="android:textColor">@android:color/holo_red_dark</item> </style> ...... ...... </resources>
public class Entity { public String action1; public String action2; public String aciton3; ...... }
来源:即时通讯网 - 即时通讯开发者社区!
轻量级开源移动端即时通讯框架。
快速入门 / 性能 / 指南 / 提问
轻量级Web端即时通讯框架。
详细介绍 / 精编源码 / 手册教程
移动端实时音视频框架。
详细介绍 / 性能测试 / 安装体验
基于MobileIMSDK的移动IM系统。
详细介绍 / 产品截图 / 安装体验
一套产品级Web端IM系统。
详细介绍 / 产品截图 / 演示视频
引用:卡瑞吉 发表于 2020-10-09 11:36 感谢楼主的分享,非常有用!
精华主题数超过100个。
连续任职达2年以上的合格正式版主
为论区做出突出贡献的开发者、版主等。
Copyright © 2014-2024 即时通讯网 - 即时通讯开发者社区 / 版本 V4.4
苏州网际时代信息科技有限公司 (苏ICP备16005070号-1)
Processed in 0.125000 second(s), 48 queries , Gzip On.