产品经理的需求是,App端须要集成腾讯云IM来接收消息。在技术层面有两个实现方案:javascript
- 若是App端只须要收发IM消息,不涉及远程推送功能,则能够使用腾讯云IM的WebSDK来实现。
- 但若是App端除了接收IM消息以外,还须要接收腾讯云的远程推送消息,因为HBuilder默认只集成了个推和小米推送,并未集成腾讯云的推送功能,此时只能本身去集成iOS/Android的SDK来实现。WebSDK没法实现远程推送。
配置腾讯云通讯IM后台
首先须要登陆腾讯云通讯后台并进行配置,生成AppID和AccountType。html
H5+集成腾讯云IM的WebSDK
注意:WebSDK没法获取远程推送,只能收发消息。
下载WebSDK,解压并将js文件放入项目工程中。
App端要想实现云通讯,首先须要先登陆腾讯云。将webim.js引入到html页面,并调用webim.login()函数。java
<script type="text/javascript" src="js/imsdk/webim.js"></script> <script type="text/javascript" charset="utf-8"> webim.login({ sdkAppID: "1234567890", //填入后台生成的AppID appIDAt3rd: "1234567890", //填入后台生成的AppID identifier: userId, //用户惟一标示 userSig: userSig, //用户签名 accountType: "12345" //填入后台生成的AccountType }, { "onMsgNotify": onMsgNotify //指定一个接收并处理IM消息的函数 }, { isAccessFormalEnv: true, isLogOn: false }, function (resp) { mui.toast("IM登陆成功!!!" + resp); }, function (err) { mui.toast("IM登陆失败。" + err.ErrorInfo); } ); </script>
webim.login()函数须要填入相关信息,以及指定用于响应IM消息的函数,以及登陆成功和失败的回调函数,具体请参阅webim.login接口文档。
下一步就是建立响应IM消息的函数。web
//监听新消息事件 //newMsgList 为新消息数组,结构为[Msg] function onMsgNotify(newMsgList) { // console.warn(newMsgList); var newMsg; //获取全部聊天会话 // var sessMap = webim.MsgStore.sessMap(); for (var j in newMsgList) {//遍历新消息 newMsg = newMsgList[j]; var elems = newMsg.getElems();//获取消息包含的元素数组 for (var i in elems) { let elem = elems[i]; let type = elem.getType();//获取元素类型 let content = elem.getContent();//获取元素对象 switch (type) { case webim.MSG_ELEMENT_TYPE.TEXT: const messageText = content.getText(); alert("收到IM消息:" + messageText); //进行处理 break; // case webim.MSG_ELEMENT_TYPE.FACE: // html += convertFaceMsgToHtml(content); // break; // case webim.MSG_ELEMENT_TYPE.IMAGE: // html += convertImageMsgToHtml(content); // break; // case webim.MSG_ELEMENT_TYPE.SOUND: // html += convertSoundMsgToHtml(content); // break; // case webim.MSG_ELEMENT_TYPE.FILE: // html += convertFileMsgToHtml(content); // break; // case webim.MSG_ELEMENT_TYPE.LOCATION://暂不支持地理位置 // //html += convertLocationMsgToHtml(content); // break; // case webim.MSG_ELEMENT_TYPE.CUSTOM: // html += convertCustomMsgToHtml(content); // break; // case webim.MSG_ELEMENT_TYPE.GROUP_TIP: // html += convertGroupTipMsgToHtml(content); // break; default: webim.Log.error('未知消息元素类型: elemType=' + type); break; } } } }
集成iOS/Android的腾讯云通讯IMSDK
待整理数组