腾讯云 im sdk,腾讯会议sdk
腾讯云即时通讯(三)---自定义消息
腾讯云IM的sdk中主要提供了以下几个消息类
TIMTextElem (文本消息)
TIMImageElem (图片消息)
TIMFileElem (文件消息)
TIMSoundElem(语音消息)
TIMLocationElem (地理位置)
TIMFaceElem (表情消息类型)
TIMVideoElem(微视频消息)
TIMUGCElem (UGC视频)
一般来说这些消息类都可以满足我们的需求,然而产品和boss才是老大,他们定方案了,苦逼的程序员还得费力去实现.
这个时候自定义消息就派的上用场了.我们先来来看看这个自定义的消息类 TIMCustomElem
注释已经很明显主要是有个属性是NSData类型的 ,就是我们需要把自定义的消息封装转化成NSData传递过去.
楼主的需求中是需要自定义个消息,展示订单信息,需要显示下单者的联系方式,地址信息收货人,商品图片,商品价格,商品名等信息
构造过程
构造后的消息体形式为
这样自定义的消息插入就成功了,但是要把自定义的消息正确显示在界面上还要自定义一个消息显示的cell类
我们在 ChatTableViewCell增加一个类ChatCustomOrderTableViewCell让它继承于ChatBaseTableViewCell
//然后实现该这个类
//遇到的坑是之前设置约束时使用相对于兄弟控件来布局一直不正确,后来采用这种死板的布局才达到要求。。。
uni-app 使用腾讯云im开发app聊天室
组件地址:
哪找教程引入就行,开发什么端看什么端文档
npm install tim-wx-sdk@2.15.0--save
npm install cos-wx-sdk-v5@0.7.11--save
----------------------------------------------------------
import TIM from'tim-wx-sdk';
import COS from"cos-wx-sdk-v5";
import logger from'./utils/logger';// app.js
import{ genTestUserSig} from'./debug/GenerateTestUserSig.js'
在app.vue文件下onLaunch周期里面:
/// userInfo为判断用户是否登录
if( userInfo!=''|| userInfo!= undefined){
if( uni.getStorageSync('zuserInfo').role== 1|| uni.getStorageSync('zuserInfo').role== 2){
//连接im
//如果您已经接入 tim,请将 uni.tim修改为 uni.$TUIKit。
uni.$TUIKit= TIM.create({
SDKAppID:' ' //填写你申请的AppID
});
uni.$TUIKit.registerPlugin({
'cos-wx-sdk': COS
});
uni.$resetLoginData= this.resetLoginData(userInfo)
uni.$TUIKitTIM= TIM;
uni.$TUIKitEvent= TIM.EVENT;
uni.$TUIKitVersion= TIM.VERSION;
uni.$TUIKitTypes= TIM.TYPES;//监听系统级事件
uni.$TUIKit.on(uni.$TUIKitEvent.SDK_NOT_READY, this.onSdkNotReady);
uni.$TUIKit.on(uni.$TUIKitEvent.KICKED_OUT, this.onKickedOut);
uni.$TUIKit.on(uni.$TUIKitEvent.ERROR, this.onTIMError);
uni.$TUIKit.on(uni.$TUIKitEvent.NET_STATE_CHANGE, this.onNetStateChange);
uni.$TUIKit.on(uni.$TUIKitEvent.SDK_RELOAD, this.onSDKReload);
uni.$TUIKit.on(uni.$TUIKitEvent.SDK_READY, this.onSDKReady);
}
}
// TODO:
resetLoginData(info){
let _this= this
this.globalData.expiresIn='';
this.globalData.sessionID='';
this.globalData.userInfoIm={
userID: info.userId,
userSig: info.txSig,
token: info.token,
phone: info.phone
};
this.globalData.userProfile= null;
uni.$TUIKit.login({userID: info.userId.toString(), userSig: info.txSig.toString()})
.then(function(imResponse){
// console.log(imResponse.data);//登录成功
// _this.getUpdateMyProfile()
if(imResponse.data.repeatLogin=== true){
//标识帐号已登录,本次登录操作为重复登录。v2.5.1起支持
// console.log(imResponse.data.errorInfo);
}
})
.catch(function(imError){
console.warn('login error:', imError);//登录失败的相关信息
});
},
onTIMError(){},
onNetStateChange(){},
onSDKReload(){},
onSDKReady(event){
let _this= this
_this.getUpdateMyProfile()
_this.getImUnread()
},
onSdkNotReady(){
this.getImLogin()
},
onKickedOut(){
uni.showToast({
title:'您被踢下线',
icon:'error'
});
let userinfo=''
uni.setStorageSync('zuserInfo', userinfo)
setTimeout(()=>{
uni.redirectTo({
url:'/pages/login/login'
});
},2000)
// uni.navigateTo({
// url:'./pages/TUI-Login/login'
//});
},
logoutTim(){
uni.$TUIKit.logout()
},
uni.navigateTo({
url:'/pages/TUI-Chat/chat?conversationID=C2C'+ this.info.user_id
});
getImUnread(){
uni.$TUIKit.getConversationList().then(res=>{
// console.log(res.data.conversationList)
for( let i of res.data.conversationList){
if( i.unreadCount!= 0){
uni.showTabBarRedDot({index:2})
return
}
}
}).catch(fail=>{
// console.log(fail)
});
},
腾讯云IM简介和使用流程
一,准备工作
首先,访问腾讯云官网,点击登录或注册账号。对于无账号用户,请注册后关联,已拥有账号的用户直接登录并关联。
然后,选购腾讯云IM服务。
二,腾讯云IM简介
即时通信(IM)是一种能够即时发送和接收互联网消息的服务,自1998年问世以来,功能日益丰富,集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。它已经发展成为集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务为一体的综合信息平台。重要即时通信提供商如微软、腾讯、AOL、Yahoo等,提供了手机接入互联网即时通信的业务,用户可通过手机与安装相应客户端软件的设备进行消息交互。
三,腾讯云IM使用流程
直接访问即时通信IM的Demo页面,进入IM控制台。首次访问时,会指引用户下载Demo压缩包,解压后使用微信开发者工具运行,仅需输入SDKAppID和密钥。在控制台获取相关参数,实现聊天功能。
四,使用腾讯云即时通信IM SDK
集成SDK至项目中,推荐通过npm方式。使用npm将IM SDK集成到Web、小程序或uni-app项目。借助tim-upload-plugin实现更快、更安全的富文本消息资源上传功能。利用tim-profanity-filter-plugin在客户端本地检测文本内容,支持敏感词拦截或替换,保障产品体验和业务安全。
通过npm安装依赖,对于Web项目,说明并引入模块。对于小程序或uni-app项目,同样说明引入模块并初始化。
利用script标签集成SDK,并在项目脚本中进行初始化操作。