此产品是本人耗时12day开发出来的,采用的是uniapp框架开发出来的,可快速云打包上线,也可以进行二次开发符合自己的具体需求。
为什么要选择uni-app框架去开发?
跨端、周期快、满足需求
1、跨端:uniapp可同时发布H5、APP(安卓、IOS)微信小程序等....
2、周期:减轻开发成本,如果你用原生安卓和IOS、小程序去开发,周期长,成本高
3、应用层的业务需求可以满足,底层的东西可通过插件去完成,定义基座
1、实时监听:全局监听好友发送过来的会话消息,并置顶在上面更新消息会话
2、好友列表:获取头像、昵称、聊天记录回显
3、时间计算:计算好友是什么时候发送过来的会话消息 如:刚刚、分钟、天数...
1、基础通讯:文字聊天、表情发送、录音发送、拍摄照片、发送照片、拍摄视频、发送视频
2、拓展通讯:常用语、发送订单、服务评价(可二次开发自定义添加发红包转账等等功能)
3、高级通讯:语音通话、视频通话
1、实时监听:全局监听新好友列表更新
2、好友列表:获取头像、昵称、发消息、删除好友
3、新的朋友:添加好友、实时监听别人添加你为好友
4、手机通讯录:获取本机手机通讯录
1、我的信息:头像、昵称、ID
2、查看头像、切换登录、退出登录
3、个人资料:个人信息更新修改
### 文字发送
sendTextMessage(msg, flag) {
const to = this.getToAccount();
const text = flag ? msg : this.inputText;
const message = uni.$TUIKit.createTextMessage({
to,
conversationType: this.conversation.type,
payload: {
text
}
});
this.setData({
inputText: '',
sendMessageBtn: false
});
this.$sendTIMMessage(message);
},
### 录音发送
switchAudio() {
this.setData({
isAudio: !this.isAudio,
text: '按住说话'
});
},
handleLongPress(e) {
this.recorderManager.start({
duration: 60000,
// 录音的时长,单位 ms,最大值 600000(10 分钟)
sampleRate: 44100,
// 采样率
numberOfChannels: 1,
// 录音通道数
encodeBitRate: 192000,
// 编码码率
format: 'aac' // 音频格式,选择此格式创建的音频消息,可以在即时通信 IM 全平台(Android、iOS、微信小程序和Web)互通
});
this.setData({
startPoint: e.touches[0],
title: '正在录音',
// isRecording : true,
// canSend: true,
notShow: true,
isShow: false,
isRecording: true,
popupToggle: true,
recordTime: 0
});
this.recordTimer = setInterval(() => {
this.recordTime++;
}, 1000)
},
// 录音时的手势上划移动距离对应文案变化
handleTouchMove(e) {
if (this.isRecording) {
if (this.startPoint.clientY - e.touches[e.touches.length - 1].clientY > 100) {
this.setData({
text: '抬起停止',
title: '松开手指,取消发送',
canSend: false
});
} else if (this.startPoint.clientY - e.touches[e.touches.length - 1].clientY > 20) {
this.setData({
text: '抬起停止',
title: '上划可取消',
canSend: true
});
} else {
this.setData({
text: '抬起停止',
title: '正在录音',
canSend: true
});
}
}
},
### 图片发送#
sendImageMessage(type) {
uni.chooseImage({
sourceType: [type],
count: 1,
success: res => {
if (res) {
const message = uni.$TUIKit.createImageMessage({
to: this.getToAccount(),
conversationType: this.conversation.type,
payload: {
file: res
},
onProgress: percent => {
message.percent = percent;
}
});
this.$sendTIMMessage(message);
}
}
});
},
### 发送视频
sendVideoMessage(type) {
uni.chooseVideo({
sourceType: [type],
// 来源相册或者拍摄
maxDuration: 60,
// 设置最长时间60s
camera: 'back',
// 后置摄像头
success: res => {
if (res) {
const message = uni.$TUIKit.createVideoMessage({
to: this.getToAccount(),
conversationType: this.conversation.type,
payload: {
file: res
},
onProgress: percent => {
message.percent = percent;
}
});
this.$sendTIMMessage(message);
}
}
});
},
### 双人音视频通话
TUICalling.call({
userID: 'user1',
type: 1
},(res) => {
console.log(JSON.stringify(res))
})
后续再更新文章.......