加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
app.js 6.43 KB
一键复制 编辑 原始数据 按行查看 历史
襄阳老农 提交于 2021-01-30 09:39 . 页面修改
import TIM from 'tim-wx-sdk';
import COS from 'cos-wx-sdk-v5';
import { genTestUserSig } from './utils/GenerateTestUserSig'
let tim
App({
onLaunch: function () {
tim = TIM.create({
SDKAppID: 1400384871
})
tim.setLogLevel(0)
// 注册 COS SDK 插件
tim.registerPlugin({ 'cos-wx-sdk': COS });
/**
* TIM.EVENT.SDK_READY - sdk 处于 ready 状态时触发
* TIM.EVENT.SDK_NOT_READY - sdk 处于 not ready 状态时触发
* 调用该接口发送消息实例,需要 sdk 处于 ready 状态,否则将无法发送消息实例。
* sdk 状态,可通过监听以下事件得到:
*/
tim.on(TIM.EVENT.SDK_READY, this.onReadyStateUpdate)
tim.on(TIM.EVENT.SDK_NOT_READY, this.onReadyStateUpdate)
/**
* TIM.EVENT.CONVERSATION_LIST_UPDATED
* 收到会话列表更新通知
* 可通过遍历 event.data 获取会话列表数据并渲染到页面
*/
tim.on(TIM.EVENT.CONVERSATION_LIST_UPDATED, this.getChatRoomList);
/**
* TIM.EVENT.MESSAGE_RECEIVED
* 收到推送的单聊、群聊、群提示、群系统通知的新消息,
* 可通过遍历 event.data 获取消息列表数据并渲染到页面
*/
tim.on(TIM.EVENT.MESSAGE_RECEIVED, this.getMessageList);
},
globalData: {
userName: null,
// 获取会话列表
chatRoomList: [],
// 消息详情数据
messageList: [],
// 用于续拉,分页续拉时需传入该字段
nextReqMessageID: null,
// 表示是否已经拉完所有消息
isCompleted: false,
// 会话id
conversationID: null,
// sdk状态
isSDKReady: false,
},
// 获取会话列表
getChatRoomList(event) {
console.log(event)
this.globalData.chatRoomList = event.data
},
// 获取会话消息数据
getMessageList() {
// this.login()
if (!this.globalData.conversationID) return
tim.getMessageList({ conversationID: this.globalData.conversationID, nextReqMessageID: this.globalData.nextReqMessageID, count: 15})
.then(res => {
console.log(res)
if (res.code != 0) return wx.showToast({ title: '获取消息信息失败', icon: 'none'})
// 消息列表
this.globalData.messageList = [...this.globalData.messageList, ...res.data.messageList]
// 用于续拉,分页续拉时需传入该字段
this.globalData.nextReqMessageID = res.data.nextReqMessageID || null
// 表示是否已经拉完所有消息
this.globalData.isCompleted = res.data.isCompleted
})
.catch(err => {console.log(err)})
},
// 登录
login(name) {
tim.login({
userID: name,
userSig: genTestUserSig(name).userSig
}).then((res) => {
console.log(res)
this.globalData.userName = name
wx.switchTab({ url: '/pages/contact/contact' })
}).catch((err) => {
console.log(err)
})
},
// 发送会话消息
sendMessage(messageInfo, groupInfo) {
// let type = TIM.TYPES.CONV_GROUP
console.log('1---')
const message = tim.createTextMessage({
to: groupInfo.type == 'C2C' ? groupInfo.name : this.globalData.conversationID,
conversationType: groupInfo.type,
payload: {
text: messageInfo
}
})
console.log(message)
tim.sendMessage(message)
.then(res => {
console.log(res)
this.globalData.conversationID = res.data.message.conversationID
this.globalData.messageList = []
this.globalData.isCompleted = false
this.globalData.nextReqMessageID = null
this.getMessageList()
}).catch(err => {
console.log(err)
})
},
// 监听 sdk 状态
onReadyStateUpdate(event) {
console.log(event)
if (event.name == 'sdkStateReady') {
this.globalData.isSDKReady = true
} else {
this.globalData.isSDKReady = false
}
},
// 创建群组
addGroupRoom(type, id, name) {
tim.createGroup({
type: type,
groupID: id,
name: name,
})
.then(res => {
console.log(res)
if (res.code == 0) {
let promise = tim.joinGroup(
{
groupID: id,
type: type
}
)
promise.then(res => {
console.log(res)
switch(res.data.status) {
case TIM.TYPES.JOIN_STATUS_WAIT_APPROVAL: // 等待管理员同意
break;
case TIM.TYPES.JOIN_STATUS_SUCCESS: // 加群成功
console.log(imResponse.data.group); // 加入的群组资料
break;
case TIM.TYPES.JOIN_STATUS_ALREADY_IN_GROUP: // 已经在群中
break;
default:
break;
}
wx.switchTab({
url: '/pages/contact/contact',
})
}).catch(err => {
console.log(err)
})
}
}).catch(err => {
console.log(err)
})
},
// 解散群组
dismissGroup(groupID) {
tim.dismissGroup(groupID).then(res => {
console.log(res)
if(res.code !=0) {
this.showToast({
title: '操作失败',
icon: none
})
return
}
}).catch(err => {
console.log(err)
})
},
// 退出群 (私有群)
quitGroup(groupID) {
tim.quitGroup(groupID).then((res) => {
console.log(res)
if (res.code != 0) {
this.showToast({
title: '操作失败',
icon: none
})
return
}
}).catch(err => {
console.log(err)
})
},
// 获取会话信息
getConversationProfile(item) {
if(!this.globalData.isSDKReady) {
this.login(this.globalData.userName)
}
tim.getConversationProfile(item.conversationID)
.then(({ data: { conversation}}) => {
this.globalData.conversationID = item.conversationID
console.log(conversation)
let name = ''
switch (conversation.type) {
case TIM.TYPES.CONV_C2C:
name = conversation.userProfile.nick || conversation.userProfile.userID
break
case TIM.TYPES.CONV_GROUP:
name = conversation.groupProfile.name || conversation.groupProfile.groupID
break
default:
name = '系统通知'
}
wx.navigateTo({
url: `/pages/chatRoom/chatRoom?type=${item.type}&name=${name}`,
})
}).catch(err => {
console.log(err)
})
},
// 删除会话
deleteConversation(conversationID) {
tim.deleteConversation(conversationID)
.then(res => {
console.log(res)
}).catch(err => {
console.log(err)
})
}
})
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化