6

uni-app技术分享| uni-app常见问题(一)

 2 years ago
source link: https://blog.51cto.com/u_15232255/5043872
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

uni-app技术分享| uni-app常见问题(一)

原创

1. 运行无法使用插件

  • 查看控制台提示是否存在以下提示, 请根据控制台提示操作

    [JS Framework] 当前运行的基座不包含原生插件[AR-RtcModule],请在manifest中配置该插件,重新制作包括该原生插件的自定义运行基座
    
  • 使用的是 标准运行基座

    • 需要制作自定义运行基座
    • 运行时选择自定义基座运行(HBuilder 默认标准运行基座)
  • 插件仅支持 APP;

2.场景使用

3.用户 uid 与自身业务结合

  • 用户 uid:
    • 必须为字符串
    • 标识用户,独一无二
    • 不能设置为中文
    • 长度在 64 字节以内的字符串,范围(26 个小写字母 a-z;26 个大写字母 A-Z;10 个数字 0-9;空格;“!”, “#”, “$”, “%”, “&”, “(”, “)”, “+”, “-”, “:”, “;”, “<”, “=”, “.”, “>”, “?”, “@”, “[”, “]”, “^”, “*”, “{”, “}”, “|”, “~”, “,”;等)
    • 可使用自身业务 id,但必须符合用户 uid

4.频道房间 channelId 与自身业务结合

与 uid 需求一致;

5.token 相关

调试项目时建议暂不开启
appid 开启 token 校验时,加入频道时必须要填入

6.加入频道,设置 uid 或 channelId

加入房间前进行设置

rtcModule.joinChannel({
  		"token": 开启 token 校验时填入(必须字符串)|| '',
  		"channelId": 自行设置(必须字符串)|| '',
  		"uid": 自行设置(必须字符串)|| '',
  	}, (res) => {
  		console.log('RTC joinChannel 方法调用', (res.code === 0 ? '成功' : '失败:') + res);
  	});

7.功能第一次有效,在次操作发生错误

  • 重复创建实例(多在调试阶段出现),多次调用 rtmModule.createInstance
    • 每次都要重启应用
    • 功能结束后要销毁对应实例

8.ios、Android 意外闪退

查看方法参数是否符合,如:
* rtcModule.joinChannel 的参数 uid 设置的不是字符串

9.无画面、无声音

  • 查看手机权限是否开启

  • 音视频页面必须是nvue页面

  • 本地视频渲染:

    <AR-CanvasView ref="location" style="flex: 1;" />
    
    • 必须要获取到视频容器
    • 调用对应方法
    this.$refs.location.setupLocalVideo({
    			"renderMode": 1,
    			"channelId": 同一个房间,
    			"uid": 用户 uid,
    			"mirrorMode": 0
    		}, (res) => {
    			console.log('渲染视频', res);
    		});
    		// 本地预览
    this.$refs.location.startPreview((res) => {
    			console.log('本地预览', res);
    		})
    
  • 远端视频渲染:
    1.通过远端视频首帧回调 onFirstRemoteVideoDecoded
    2.然后显示远端视频容器

     <AR-CanvasView ref="remote" style="flex: 1;" />
    

    3.对应方法(必须要获取远端视频容器)

    this.$refs.remote.setupRemoteVideo({
      	"renderMode": 1,
      	"channelId": 同一个房间,
      	"uid":远端 uid,
      	"mirrorMode": 0
      }, (res) => {
      	console.log('渲染远端视频', res);
      })
    

10.uniapp 在通信过程中获取对方的网络状态

插件仅能通过  anyRTC实时消息SDK插件 获取对应用户状态: 在线/不在线
如需获取更详细的网络状态:
uni.onNetworkStatusChange 获取网络
通过 实时消息SDK插件 ,向对方发送信息
对方收到后,在将网络信息返回给查询者

11.多人视频展示

每一位用户都有自己的视频容器
渲染视频时必须获取到对应容器

12.是否可转换多端

  • 使用插件仅支持App
  • 如需转成小程序,可使用 Web SDK进行转换(建议使用小程序对应的sdk)

uni-app技术分享| uni-app常见问题(一)_webrtc

  • 打赏
  • 1
  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK