消息监听整理完善
This commit is contained in:
@@ -12,8 +12,9 @@ import {
|
||||
|
||||
const initIm = (KEY) => {
|
||||
RongIMLib.init(KEY)
|
||||
// CallLib.init()
|
||||
addListeners()
|
||||
CallLib.init()
|
||||
listeners.imLibListeners()
|
||||
listeners.callLibListeners()
|
||||
// 初始化的时候 自动链接
|
||||
if (store.getters.getToken !== '') {
|
||||
getImToken().then(res => {
|
||||
@@ -59,7 +60,7 @@ const connect = (token, userInfo, callback) => {
|
||||
// 设置未读消息数量
|
||||
setNotifyBadge()
|
||||
// 首次运行获取好友列表
|
||||
const FK = 'ZHK_' + userInfo.targetId
|
||||
const FK = 'ZHKD_' + userInfo.targetId
|
||||
|
||||
uni.getStorage({
|
||||
key: FK,
|
||||
@@ -100,142 +101,6 @@ const disconnect = () => {
|
||||
})
|
||||
}
|
||||
|
||||
// 允许通知的消息类型,触发更新消息列表操作
|
||||
const notifyMsgTypes = [
|
||||
'RC:TxtMsg',
|
||||
'RC:VcMsg',
|
||||
'RC:HQVCMsg',
|
||||
'RC:ImgMsg',
|
||||
'RC:GIFMsg',
|
||||
'RC:ImgTextMsg',
|
||||
'RC:FileMsg',
|
||||
'RC:LBSMsg',
|
||||
'RC:SightMsg',
|
||||
'RC:ReferenceMsg',
|
||||
'RC:CombineMsg',
|
||||
]
|
||||
|
||||
function inArray(search, array) {
|
||||
for (var i in array) {
|
||||
if (array[i] == search) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
const addListeners = () => {
|
||||
// 添加连接状态监听函数
|
||||
RongIMLib.addConnectionStatusListener((res) => {
|
||||
console.log('连接状态监听', res.data.status)
|
||||
uni.$emit('onConnectionStatusChange', res.data.status)
|
||||
})
|
||||
// 添加消息监听函数
|
||||
RongIMLib.addReceiveMessageListener((res) => {
|
||||
const message = res.data.message
|
||||
console.log('收到消息', message)
|
||||
if (inArray(message.objectName, notifyMsgTypes)) {
|
||||
if (!store.getters.contactIsExist(message.targetId)) {
|
||||
getUserInfo(message.targetId).then(res => {
|
||||
store.dispatch('initContact', res)
|
||||
}).catch(err => {
|
||||
console.log('ERR', err)
|
||||
})
|
||||
}
|
||||
if (!store.getters.contactIsExist(message.senderUserId)) {
|
||||
getUserInfo(message.senderUserId).then(res => {
|
||||
store.dispatch('initContact', res)
|
||||
}).catch(err => {
|
||||
console.log('ERR', err)
|
||||
})
|
||||
}
|
||||
newMessage(message)
|
||||
} else if (message.objectName === RongIMLib.ObjectName.ProfileNotification) {
|
||||
// 更新会话信息
|
||||
store.dispatch('updateContact', JSON.parse(message.content.data))
|
||||
// 调用完更新之后,删除这条消息
|
||||
RongIMLib.deleteMessagesByIds([message.messageId], ({
|
||||
code
|
||||
}) => {
|
||||
console.log('消息删除结果', code)
|
||||
})
|
||||
} else if (message.objectName === RongIMLib.ObjectName.ContactNotification) {
|
||||
// 触发一个新好友的通知事件
|
||||
uni.$emit('onContactNotification', message)
|
||||
} else if (message.objectName === RongIMLib.ObjectName.GroupNotification) {
|
||||
// 解散群
|
||||
if (message.content.operation === 'Dismiss') {
|
||||
RongIMLib.cleanHistoryMessages(message.conversationType, message.targetId,
|
||||
message.sentTime - 1, false, () => {})
|
||||
// 解散了就删了吧
|
||||
RongIMLib.removeConversation(message.conversationType, message.targetId, () => {})
|
||||
uni.$emit('onGroupDismiss', message.targetId)
|
||||
}
|
||||
uni.$emit('onReceiveMessage', message)
|
||||
}
|
||||
})
|
||||
|
||||
// 监听消息回执
|
||||
RongIMLib.addReadReceiptReceivedListener(({
|
||||
data
|
||||
}) => {
|
||||
uni.$emit('onReadReceiptReceived', data)
|
||||
})
|
||||
|
||||
// 音视频通话相关的
|
||||
// 监听通话呼入
|
||||
// CallLib.onCallReceived(({
|
||||
// data
|
||||
// }) => {
|
||||
// uni.navigateTo({
|
||||
// url: '/pages/im/private/call?targetId=' + data.targetId + '&mediaType=' +
|
||||
// data.mediaType
|
||||
// })
|
||||
// })
|
||||
// // 通话建立成功
|
||||
// CallLib.onCallConnected(() => {
|
||||
// uni.$emit('onCallConnected')
|
||||
// })
|
||||
// // 外呼
|
||||
// CallLib.onCallOutgoing((res) => {
|
||||
// uni.$emit('onCallOutgoing')
|
||||
// })
|
||||
// // 远端响铃
|
||||
// CallLib.onRemoteUserRinging((res) => {
|
||||
// uni.$emit('onRemoteUserRinging')
|
||||
// })
|
||||
// // 远端加入
|
||||
// CallLib.onRemoteUserJoined((res) => {
|
||||
// uni.$emit('onRemoteUserJoined')
|
||||
// })
|
||||
// // 断开链接
|
||||
// CallLib.onCallDisconnected((res) => {
|
||||
// console.log('断开链接', res)
|
||||
// uni.$emit('onCallDisconnected')
|
||||
// })
|
||||
// // 远端挂断
|
||||
// CallLib.onRemoteUserLeft((res) => {
|
||||
// console.log('远端离开', res)
|
||||
// uni.$emit('onRemoteUserLeft')
|
||||
// })
|
||||
}
|
||||
|
||||
// 维护消息列表,检查是否需要通知声音,设置新消息提醒的数量
|
||||
const newMessage = (msg) => {
|
||||
RongIMLib.getConversationNotificationStatus(msg.conversationType, msg.targetId, ({
|
||||
code,
|
||||
status
|
||||
}) => {
|
||||
if (code === 0) {
|
||||
if (status) {
|
||||
triTone()
|
||||
}
|
||||
}
|
||||
})
|
||||
setNotifyBadge()
|
||||
uni.$emit('onReceiveMessage', msg)
|
||||
}
|
||||
|
||||
// 播放状态
|
||||
let tipState = false
|
||||
|
||||
@@ -256,7 +121,8 @@ const triTone = () => {
|
||||
|
||||
export default {
|
||||
initIm,
|
||||
connect,
|
||||
connect,
|
||||
disconnect,
|
||||
setNotifyBadge,
|
||||
...message
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user