uniapp开发小程序遇到的问题,持续更新中

一、uniapp引入全局scss

在App.vue中引入uni.scss

<style lang="scss">
	/* #ifndef APP-NVUE */
		@import "uni.scss";
	/* #endif */
</style>

注意:nvue页面的样式在编译时,有很多样式写法被限制了,容易报错。所以使用了 #ifndef App-NVUE 判断一下

在uni.scss中引入自定义scss

@import "@/static/style/common.scss";

通过uni.scss引入的样式表。可以继承其中的样式

例如 common.scss中的样式

common.scss
.common{background:#f00}

在index.vue中可以继承其中的央视

index.vue
<style lang="scss">
	.test-common{
		@extend .common
	}
</style>

二、引入iconfont阿里巴巴图标库

1.下载项目图标

在这里插入图片描述

2.将所需文件放入到项目中

在这里插入图片描述

一般放在static文件夹下

3.全局引用

在这里插入图片描述
在app.vue中全局引用

注意:小程序不支持tabBar引用iconfont

//pages.json
	"tabBar": {
		"color": "#7A7E83",
		"selectedColor": "#3cc51f",
		"borderStyle": "black",
		"backgroundColor": "#ffffff",
		"height": "50px",
		"fontSize": "10px",
		"iconWidth": "24px",
		"spacing": "3px",
		"iconfontSrc":"static/icon/iconfont.ttf", // list设置 iconfont 属性时,需要指定字体文件路径,支持App 3.4.4+、H5 3.5.3+
		"list": [{
			"pagePath": "pages/index/index",
			"text": "首页",
			//"iconPath":'',图片路径,各平台无差异
			"iconfont": {//不支持微信小程序,App(3.4.4+)、H5 (3.5.3+)
				"text": "\ue66c",
				"color": "#515151",
				"selectedText": "\ue66c",
				"selectedColor": "#1296db"
			}
		}]
	},

三、实时音视频

1.文档及demo

官方文档:
https://www.tencentcloud.com/zh/document/product/647/35150
https://cloud.tencent.com/document/product/647/32399
demo:https://github.com/LiteAVSDK/Live_WXMini

2.引入trtc-room微信组件

在这里插入图片描述

注意:微信组件一定要放在wxcomponents目录中,否则打包的时候会报错。在根目录下创建wxcomponents目录,将trtc-room放进去。

3.代码

<trtc-room id="trtcroom" :config="trtcConfig"></trtc-room>

data
trtcConfig: {
	sdkAppID: '',// 注册腾讯云账号写入自己的SDKAppID
	userID: '',// 用户ID
	userSig: '',// 身份签名
	template: 'grid',// 画面排版'1v1' 'grid' 'custom',1v1一般用于双人通话,grid适用于多人,custom是自定义面板
	enableCamera: true,// 是否开启摄像头
	enableMic: true,// 是否开启麦克风
	videoHeight: "453", // 视频高
	videoAspect: '3:4',
}
//进入房间,监听网络状态和error
videoStart () {
	var that = this
	let trtcRoomContext = this.$scope.selectComponent('#trtcroom')
	trtcRoomContext.enterRoom({roomID: 12345})//roomId的数据类型为数字
	
	let EVENT = trtcRoomContext.EVENT
	// 监听远端用户的视频流的变更事件
	trtcRoomContext.on(EVENT.REMOTE_VIDEO_ADD, (event)=>{
		// 订阅(即播放)远端用户的视频流
	})
	// 本地网络相关状态变更
	trtcRoomContext.on(EVENT.LOCAL_NET_STATE_UPDATE, (event)=>{
		//netQualityLevel网络质量:0:未定义 1:最好 2:好 3:一般 4:差 5:很差 6:不可用
		const netQualityLevel = event.data.detail.info.netQualityLevel
		if(netQualityLevel > 3){
			 uni.showToast({
				title: '您的网络状态较差',
				icon:'none',
				duration: 1500
			 });
		}
		console.log('本地网络相关状态变更', netQualityLevel)
	})
	// 远端网络相关状态变更
	trtcRoomContext.on(EVENT.REMOTE_NET_STATE_UPDATE, (event)=>{
		  // netQualityLevel 对应网络状态的好坏,1 代表最好,数字越大代表网络越差
		  let netQualityLevel = event.data.detail.info.netQualityLevel
		  if(netQualityLevel > 3){
				 uni.showToast({
					title: '对方的网络状态较差',
					icon:'none',
					duration: 1500
				 });
		  }
		   console.log('远端用户网络相关状态变更', netQualityLevel)
	})

	trtcRoomContext.on(EVENT.ERROR,(event)=>{
	  console.log('error',event)
	  const code = event.code;
	  const msg = event.msg;
	  let that = this;
	  switch (code){
	  	case -3301://进入房间失败
			uni.showModal({
				title: '进入房间失败',
				content: '请点击刷新按钮',
				showCancel:false,
				confirmText:'刷新',
				success: function (res) {
					if (res.confirm) {
						that.updateVideo()
					} 
				}
			});
		break;
		case -1307://网络断连,且经多次重连抢救无效
			uni.showModal({
				title: '网络连接异常',
				confirmText:'继续复诊',
				success: function (res) {
					if (res.confirm) {
						//先停止再重新播放渲染
						that.updateVideo()
						//判断是否断网
						that.getNetworkType()
					} else if (res.cancel) {
						//判断是否断网
						that.getNetworkType()
					}
				}
			});
			break;
	  }
	})

	// 进房成功后发布本地音频流和视频流 
	trtcRoomContext.publishLocalVideo()
	trtcRoomContext.publishLocalAudio()
	
},
//退出房间重新推流
updateVideo(){
	const that=this;
	let trtcRoomContext = that.selectComponent('#trtcroom')
	trtcRoomContext.exitRoom()
    that.videoStart();	   	
},
//获取网络情况
getNetworkType(){
	wx.getNetworkType({
	  success (res) {
	    const networkType = res.networkType;
		if (networkType != "none") {  //对方网络异常或异常退出
			uni.showToast({
				title: '对方网络不佳,正在努力恢复',
				icon:'none',
				duration: 2000
			});
		
		} else { //客户自个儿的网络异常
			uni.showToast({
				title: '请检查你的网络连接是否正常',
				icon:'none',
				duration: 2000
			});
		}
	  }
	})
}
  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值