位置: IT常识 - 正文

记录--uniapp开发安卓APP视频通话模块初实践(uniapp开发总结)

编辑:rootadmin
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 视频通话SDK用的即构的,uniapp插件市场地址 推送用的极光的,uniapp插件市场地址 即构音视频SDK uniapp插件市场的貌似是有些问题,导入不进项目,直接去官网下载,然后放到项目下的 nativeplugins 目录下,在配 ... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

推荐整理分享记录--uniapp开发安卓APP视频通话模块初实践(uniapp开发总结),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:uniapp开发app视频教程,使用uniapp开发app,uniapp开发实例,uniapp开发总结,uniapp 开发,uniapp开发项目,uniapp开发技巧,uniapp app开发,内容如对您有帮助,希望把文章链接给更多的朋友!

记录--uniapp开发安卓APP视频通话模块初实践(uniapp开发总结)

视频通话SDK用的即构的,uniapp插件市场地址推送用的极光的,uniapp插件市场地址即构音视频SDKuniapp插件市场的貌似是有些问题,导入不进项目,直接去官网下载,然后放到项目下的 nativeplugins 目录下,在配置文件中填入即构后台的appID和AppSign,接下来就可以开干了准备两个页面首页:/pages/index/index// 新建一个按钮<button @click="sendVideo">发送视频邀请</button>// 发送事件,主动发送直接进入下一个页面即可sendVideo(){uni.navigateTo({url: '/pages/call/call'})}通话页:pages/call/call这个页面会复杂一点注意这个页面为nvue页面先把所有代码都列出来,再一一做说明<template><view><view v-if="status === 1" class="switch-bg" :style="{'height': pageH + 'px'}"><view class="top-info u-flex"><image src="https://www.yuucn.com/wp-content/uploads/2022/11/1668749350-6c49bb0403761c1.jpeg" class="avatar"></image><view class="info u-flex u-flex-col u-col-top"><text class="text">值班中心</text><text class="text">正在呼叫</text></view></view><view class="switch-handle u-flex u-row-center"><image src="" class="img" @click="hangUp"></image></view></view><view v-if="status === 2" class="switch-bg" :style="{'height': pageH + 'px'}"><view class="top-info u-flex"><image src="https://www.yuucn.com/wp-content/uploads/2022/11/1668749350-6c49bb0403761c1.jpeg" class="avatar"></image><view class="info u-flex u-flex-col u-col-top"><text class="text">值班中心</text><text class="text">邀请您视频聊天</text></view></view><view class="switch-handle"><view class="u-flex"><text>切到语音接听</text><image src=""></image></view><view class="u-flex u-row-center u-row-between"><image src="" class="img" @click="hangUp"></image><image src="" class="img" @click="switchOn"></image></view></view></view><view v-if="status === 3" :style="{'height': pageH + 'px'}"><view><zego-preview-view class="face"></zego-preview-view><view v-for="(stream, index) in streamList" :key="index"><zego-view :streamID="stream.streamID"></zego-view></view></view><view class="switch-handle"><view><text>{{minute}}:{{seconds}}</text></view><view><view><view class="icon-round"><image src="" class="icon1" mode=""></image></view><text class="h-text">切到语音通话</text></view><view><image src="" class="img" @click="hangUp"></image><text class="h-text">挂断</text></view><view><view class="icon-round" @click="changeCamera"><image src="" class="icon2" mode=""></image></view><text class="h-text">转换摄像头</text></view></view></view></view></view></template><script>// #ifdef APP-PLUSvar jpushModule = uni.requireNativePlugin("JG-JPush")import ZegoExpressEngine from '../../zego-express-video-uniapp/ZegoExpressEngine';import {ZegoScenario} from '../../zego-express-video-uniapp/impl/ZegoExpressDefines'import {AppID,AppSign} from '../../zegoKey.js'var instance = ZegoExpressEngine.createEngine(AppID, AppSign, true, 0);// #endifexport default {data() {return {status: 1, // 1: 主动呼叫;2: 被呼叫pageH: '',// 页面高度innerAudioContext: null, //音乐对象streamList: [],msg_id: '',// 推送消息idmsg_cid: '',// 推送cidroomID: 'dfmily110001',publishStreamID: uni.getStorageSync('userinfo').nickname,userID: uni.getStorageSync('userinfo').nickname,userName: uni.getStorageSync('userinfo').nickname,camera_dir: 'before', // 摄像头 before 前置,after 后置};},destroyed: () => {console.log('destroyed');ZegoExpressEngine.destroyEngine();},mounted() {var client = uni.getSystemInfoSync()if (client.platform == 'android') {//安卓事先请求摄像头、麦克风权限var nativeEngine = uni.requireNativePlugin('zego-ZegoExpressUniAppSDK_ZegoExpressUniAppEngine');nativeEngine.requestCameraAndAudioPermission();}},onLoad(opt) {this.getSysInfo();this.playAudio();if(opt.status == 2){// 带参数 status=2时代表被呼叫this.status = parseInt(opt.status)}if(!opt.status){// 主动呼叫、需要发推送消息this.getPushCid();}this.initZegoExpress();},onBackPress() {// return true;this.innerAudioContext.stop();this.logout();},methods: {getSysInfo() { // 获取手机信息let sys = uni.getSystemInfoSync()this.pageH = sys.windowHeight},playAudio() { // 播放音乐this.innerAudioContext = uni.createInnerAudioContext();this.innerAudioContext.autoplay = true;this.innerAudioContext.src = '/static/message.mp3';this.innerAudioContext.onPlay(() => {console.log('开始播放');});},stopAudio(){// 停止播放音乐if (this.innerAudioContext) {this.innerAudioContext.stop()}},hangUp() { // 挂断this.stopAudio();this.sendCustomCommand(500)this.revocationPushMsg();this.logout();uni.navigateBack({delta:1})},switchOn() { // 接通this.stopAudio();this.status = 3this.sendCustomCommand(200)},changeCamera() { // 切换摄像头var instance = ZegoExpressEngine.getInstance();if (this.camera_dir == 'before') {instance.useFrontCamera(false)this.camera_dir = 'after'} else if (this.camera_dir == 'after') {instance.useFrontCamera(true)this.camera_dir = 'before'}},sendCustomCommand(msg){// 发送自定义信令var instance = ZegoExpressEngine.getInstance();instance.sendCustomCommand(this.roomID, msg, [{"userID": this.userID,"userName": this.userName}], res => {console.log(res)});},getPushCid(){// 极光推送cid获取uni.request({url: 'n-round {align-items: center;justify-content: center;width: 136rpx;height: 136rpx;border: 1rpx solid #fff;border-radius: 50%;.icon1 {width: 64rpx;height: 52rpx;}.icon2 {width: 60rpx;height: 60rpx;}}.h-text {margin-top: 10rpx;font-size: 26rpx;color: #fff;}}</style>说明:

代码中的masterSecret需要修改为极光后台的masterSecret,appKey需要修改为极光后台的appKey

view 部分:status=1 中的为主动呼叫方进入页面是初始显示内容,最重要的是 hangUp 方法,用来挂断当前邀请status=2 中的为被邀请者进入页面初始显示的内容,有两个按钮,一个hangUp挂断,一个switchOn 接听status=3中为接听后显示的内容(显示自己与对方视频画面)script 部分:最开始五行是引入相关SDK的。极光推送、即构音视频在 onLoad 中有一个判断语句,这个就是用于判断进入页面时是主动呼叫方还是被动答应方的,显示不同内容if(opt.status == 2){// 带参数 status=2时代表被呼叫this.status = parseInt(opt.status)}if(!opt.status){// 主动呼叫、需要发推送消息this.getPushCid();}sendCustomCommand 是用来在房间内发送自定义信令的,用于通知另一个人是接听了还是挂断了通话getPushCid 是获取极光推送的cid,避免重复发送推送消息(极光推送)changeCamera 切换摄像头revocationPushMsg 撤销推送(主动呼叫方挂断通话)sendPushMsg 发推送消息initZegoExpress 初始化即构音视频SDK相关,与官网demo,此处我做了小改动login 登录即构房间logout 退出即构房间publish 推流destroyEngine 销毁音视频实例removeStreams 删除流encode base64转码在App.vue中进行极光推送的初始化onLaunch: function() {console.log('App Launch')// #ifdef APP-PLUSif (uni.getSystemInfoSync().platform == "ios") {// 请求定位权限let locationServicesEnabled = jpushModule.locationServicesEnabled()let locationAuthorizationStatus = jpushModule.getLocationAuthorizationStatus()console.log('locationAuthorizationStatus', locationAuthorizationStatus)if (locationServicesEnabled == true && locationAuthorizationStatus < 3) {jpushModule.requestLocationAuthorization((result) => {console.log('定位权限', result.status)})}jpushModule.requestNotificationAuthorization((result) => {let status = result.statusif (status < 2) {uni.showToast({icon: 'none',title: '您还没有打开通知权限',duration: 3000})}})jpushModule.addGeofenceListener(result => {let code = result.codelet type = result.typelet geofenceId = result.geofenceIdlet userInfo = result.userInfouni.showToast({icon: 'none',title: '触发地理围栏',duration: 3000})})jpushModule.setIsAllowedInMessagePop(true)jpushModule.pullInMessage(result => {let code = result.codeconsole.log(code)})jpushModule.addInMessageListener(result => {let eventType = result.eventTypelet messageType = result.messageTypelet content = result.contentconsole.log('inMessageListener', eventType, messageType, content)uni.showToast({icon: 'none',title: JSON.stringify(result),duration: 3000})})}jpushModule.initJPushService();jpushModule.setLoggerEnable(true);jpushModule.addConnectEventListener(result => {let connectEnable = result.connectEnableuni.$emit('connectStatusChange', connectEnable)});jpushModule.addNotificationListener(result => {let notificationEventType = result.notificationEventTypelet messageID = result.messageIDlet title = result.titlelet content = result.contentlet extras = result.extrasconsole.log(result)this.$util.router(`/pages/public/answer?status=2`)});jpushModule.addCustomMessageListener(result => {let type = result.typelet messageType = result.messageTypelet content = result.contentconsole.log(result)uni.showToast({icon: 'none',title: JSON.stringify(result),duration: 3000})})jpushModule.addLocalNotificationListener(result => {let messageID = result.messageIDlet title = result.titlelet content = result.contentlet extras = result.extrasconsole.log(result)uni.showToast({icon: 'none',title: JSON.stringify(result),duration: 3000})})// #endif},不要忘了在最开始引入极光推送的插件

var jpushModule = uni.requireNativePlugin("JG-JPush")

官方demo的代码,直接拿过来了。。其中最重要的就是下面这段,用来监听获取推送消息的,这里如果收到推送消息自动跳转至通话页面,也就是上面status=2的状态下jpushModule.addNotificationListener(result => {let notificationEventType = result.notificationEventTypelet messageID = result.messageIDlet title = result.titlelet content = result.contentlet extras = result.extrasconsole.log(result)this.$util.router(`/pages/call/call?status=2`)});

https://juejin.cn/post/6954172658195906567如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

本文链接地址:https://www.jiuchutong.com/zhishi/310125.html 转载请保留说明!

上一篇:微擎框架破解版v2.7.7去授权一键安装纯净商业版(微擎纯净框架,无任何限制)-电脑学习网(微擎框架可以干什么)

下一篇:java中public修饰符是什么(java中public修饰什么)

  • 企查查企业信息查询怎么查营业执照

    企查查企业信息查询怎么查营业执照

  • 超温馨动人的11段励志小故事(超温馨动人的110字作文)

    超温馨动人的11段励志小故事(超温馨动人的110字作文)

  • opporeno7pro处理器多少(opporeno7pro处理器和IQOO9Pro处理器比较)

    opporeno7pro处理器多少(opporeno7pro处理器和IQOO9Pro处理器比较)

  • 华为m6电脑模式有什么用(华为M6电脑模式打不开)

    华为m6电脑模式有什么用(华为M6电脑模式打不开)

  • 苹果a1863是什么型号(苹果a1863是苹果几)

    苹果a1863是什么型号(苹果a1863是苹果几)

  • 微信视频号怎么搜索用户(微信视频号怎么看浏览记录)

    微信视频号怎么搜索用户(微信视频号怎么看浏览记录)

  • oppo手机微信运动步数为0怎么办(oppo手机微信运动为什么数据都是0)

    oppo手机微信运动步数为0怎么办(oppo手机微信运动为什么数据都是0)

  • word中如何删除尾注(word中如何删除整页)

    word中如何删除尾注(word中如何删除整页)

  • 电脑能上钉钉吗(电脑能不能上钉钉)

    电脑能上钉钉吗(电脑能不能上钉钉)

  • WPS幻灯片版式在哪个选项卡(wps幻灯片版式在哪里)

    WPS幻灯片版式在哪个选项卡(wps幻灯片版式在哪里)

  • iphone6电池掉电很快(教你一招iphone6掉电太快如何解决)

    iphone6电池掉电很快(教你一招iphone6掉电太快如何解决)

  • 加湿器算大功率电器吗(加湿器额定功率大好还是小好)

    加湿器算大功率电器吗(加湿器额定功率大好还是小好)

  • wps支持mp4视频格式吗(wps2019支持什么格式视频)

    wps支持mp4视频格式吗(wps2019支持什么格式视频)

  • 文本框填充色怎么设置(文本框里填充颜色)

    文本框填充色怎么设置(文本框里填充颜色)

  • OPPO k5怎么关闭来电语音报号(oppok5怎么关闭盲人模式)

    OPPO k5怎么关闭来电语音报号(oppok5怎么关闭盲人模式)

  • 为什么抖音保存到相册失败(为什么抖音保存不了本地视频)

    为什么抖音保存到相册失败(为什么抖音保存不了本地视频)

  • 钉钉怎么显示工作中(钉钉怎么显示工作天数)

    钉钉怎么显示工作中(钉钉怎么显示工作天数)

  • 华为的芯片是自己的吗(华为的芯片是自主研发的吗)

    华为的芯片是自己的吗(华为的芯片是自主研发的吗)

  • ipad退出耳机模式(ipad退出耳机模式怎么退出)

    ipad退出耳机模式(ipad退出耳机模式怎么退出)

  • 苹果笔记本蓝牙在哪里(苹果笔记本蓝牙耳机怎么连接)

    苹果笔记本蓝牙在哪里(苹果笔记本蓝牙耳机怎么连接)

  • win10电脑记事本怎么保存(win10电脑记事本在哪)

    win10电脑记事本怎么保存(win10电脑记事本在哪)

  • Echarts直角坐标系x轴y轴属性设置大全(echart横坐标)

    Echarts直角坐标系x轴y轴属性设置大全(echart横坐标)

  • YOLOV5更换轻量级的backbone:mobilenetV2(yolov5使用)

    YOLOV5更换轻量级的backbone:mobilenetV2(yolov5使用)

  • 电脑学习网强推wordpress专业缓存插件Redis Object Cache Pro对象缓存专业授权版傻瓜化使用教程(网上学电脑的软件)

    电脑学习网强推wordpress专业缓存插件Redis Object Cache Pro对象缓存专业授权版傻瓜化使用教程(网上学电脑的软件)

  • 增值税专用发票使用规定 最新
  • 汇算清缴时房企毛利额有差异如何调整
  • 运输途中的合理损耗
  • 政府回购土地免税政策
  • 境内公司代付境外货款
  • 计提代扣个人工会经费怎么做账
  • 房地产企业汇算清缴要点
  • 原材料盈亏会计分录怎么写
  • 不动产发票怎么填写
  • 公司和个人大额往来怎么办
  • 企业完税凭证入账后怎么办理退税?
  • 账本印花税计税金额或件数怎么申报2023
  • 企业向关联方借款是否可以无偿
  • 劳务外包公司代发工资能正常发吗
  • 简化丢失专用发票的处理流程
  • 小规模企业企业所得税优惠政策2022年
  • 公司新增注册资本
  • 食堂充值管理制度
  • 科技服务业是怎么分类的
  • 解除劳动关系取公积金
  • 专柜公司货什么意思
  • php怎么转换
  • vue项目使用
  • 今日冬至有什么讲究吗
  • 企业自查补税怎么报税
  • nvm for window
  • 企业所得税是地税申报还是国税申报
  • python绘制一条直线
  • 中央空调的维护和保养
  • 外汇核销是什么意思
  • php定义变量的方法
  • 编制科目余额表的方法
  • 挂靠到运输公司的车转让给个人如何交增值税
  • 工会经费上缴流程
  • 个税手续费返还计入哪个科目
  • 银行支付利率的含义是什么
  • 小额支出没有发票怎么办
  • 公司的资金管理模式是什么?
  • db2运维命令
  • mysql客户端程序的功能是什么
  • 不动产经营租赁包括哪些内容
  • 劳务公司账务处理实操
  • 小规模纳税人在哪里查
  • 无形资产减值准备借贷方向增减
  • 暂估入库结转成本后如何冲红
  • 什么情况下固定资产进项税不能抵扣
  • 购买税控盘费用能全额抵扣吗
  • 小规模纳税人购进商品会计分录
  • 去年漏记了收入,可以记今年吗
  • 无形资产未取得发票
  • 没有申报未开票收入怎么办
  • 工程行业收到工程发票
  • 增值税留抵退税申请流程
  • 营业外收入明细账图片
  • 财务软件服务费合同印花税
  • 利税总额怎么算?
  • debian系统教程
  • window怎么升级系统
  • xp系统玩英雄联盟出现win32
  • ubuntu设置u盘启动项
  • win10预览版21277
  • 如何修复hosts文件
  • win8.1连接wifi
  • 苹果Mac系统怎么用光盘安装
  • mac屏保怎么换
  • centos如何安装yum
  • pmropn.exe
  • win101909的02累积更新
  • unitysharder
  • ftql
  • js动态引入css文件
  • perl快速入门
  • formatter参数
  • shader入门
  • Unity3D值Input Manager
  • 工商电话号码客服投诉热线
  • 四川地方税务局网址是什么
  • 煤炭资源税税率选煤税率多少黑龙江
  • 在发票软件里开出发票第二天打印可以么?
  • 生产企业出口退税账务处理会计分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设