目录
一、开通声网账号
1.注册账号
2.新建项目
3.开启小程序服务
二、对接声网小程序
1.前提条件
2.跑通API示例项目
3.合并两个项目
三、嵌入声网web网页
1.准备html页面
2.web-view组件
开发的微信小程序项目里面有多人会议,对接声网,有两种实现方式,各有利弊,下面分别说一下。
一、开通声网账号
1.注册账号
声网官网https://sso.shengwang.cn/cn/v4/signup/with-sms https://sso.shengwang.cn/cn/v4/signup/with-sms点击链接,注册账号。
https://sso.shengwang.cn/cn/v4/signup/with-sms点击链接,注册账号。
 
注册后,登录,进入声网首页:
 
2.新建项目
首先实名认证,然后创建项目。
 
      
 
每个月有免费的10000分钟。
我的项目用的灵动课堂,你可以选择通用项目。
创建完成后,首页左上角选择创建好的项目,如果有多个项目,在这个切换。
 
查看当前项目信息:
 
3.开启小程序服务
 
二、对接声网小程序
1.前提条件
对接声网小程序,你的微信小程序账号需要具备两个条件:
①企业认证,个人的不行。
②拥有以下类目中的一种,这样才能开通实时音视频媒体组件。
 
小程序官方文档,关于开通实时音视频权限 https://developers.weixin.qq.com/miniprogram/dev/component/live-player.html
https://developers.weixin.qq.com/miniprogram/dev/component/live-player.html
 
对接声网小程序,要求你的开发代码是微信原生框架(Vanilla)。如果你使用的uniapp,而且你项目已经开发了一部分那也不要慌。说一下解决办法;
uniapp经过编译才在微信开发者工具执行,编译后的代码就是微信原生框架代码,可以在这个基础上对接声网小程序,但是一定注意,把代码拷贝出去,要不然你哪次忘了,重新编译,那对接的代码就没了。
 
你的uniapp项目运行到微信开发者工具,运行一次后,在你的uniapp项目找到unpackage文件夹,dev文件夹,下面的mp-weixin,就是编译后的微信原生框架代码,拷贝一份出去,直接用微信开发者工具打开,在这个基础上进行接入声网小程序。
2.跑通API示例项目
如果从0开始一点一点往自己的项目集成声网小程序,肯定花费时间更多,我们可以跑通他的示例项目,然后把我们的代码移植过来,改一下路由跳转以及首页即可。
跑通声网小程序API示例项目 https://doc.shengwang.cn/doc/rtc/mini-program/get-started/run-demo运行起来之后,用手机扫微信开发者工具预览功能的二维码,进行预览:
https://doc.shengwang.cn/doc/rtc/mini-program/get-started/run-demo运行起来之后,用手机扫微信开发者工具预览功能的二维码,进行预览:
注:你需要先在后端创建一个房间,才能获得房间号。
声网创建一个会议房间 https://doc.shengwang.cn/doc/flexible-classroom/restful/api/api-classroom#%E5%88%9B%E5%BB%BA%E8%AF%BE%E5%A0%82
https://doc.shengwang.cn/doc/flexible-classroom/restful/api/api-classroom#%E5%88%9B%E5%BB%BA%E8%AF%BE%E5%A0%82
 
      
3.合并两个项目
如果你的你的项目已经开发了一部分,使用uniapp编译成微信原生框架后。
现在需要合并两个项目,最好是将你的项目移植到声网小程序示例项目上,只需要注意以下几点:
①pinia / vuex 的store文件夹移植。
②对接后端api的封装api文件夹移植。
③app.js、app.json,引入的文件,在声网小程序再添加一下。
④package.json、package-lock.json,将你下载的一些依赖,在声网小程序再下载一下。
三、嵌入声网web网页
小程序对接声网音视频还有一种方式,就是嵌入声网web网页,但是此种方法有很大弊端:
①声网不建议这么做,用户体验不好。
②无法适配手机端样式,画面左侧被截掉一部分,剩余部分需要左右滚动屏幕。我这个是灵动课堂,你在声网选择的实时音视频产品,如果不是声网,则跟我这个显示不一样。但是接入方法一样。滚动前左侧图片,滚动后右侧图片。
 
      
1.准备html页面
在阿里云或腾讯云,开一个存储桶(也就几块钱),把下面这个html文件放进去。权限设置为所有都可以访问。
enterSW.html:
<!DOCTYPE html>
<html lang="">
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width,initial-scale=1.0">
  <!-- 请把 script的src 的版本号替换为你的灵动课堂版本号,例如 2.9.40。你可以通过发版说明或 GitHub 仓库分支查看最新版本号。 -->
		<script src="https://download.agora.io/edu-apaas/release/edu_sdk@2.9.40.bundle.js"></script>
	</head>
	<body>
		<div class="videoContainer"></div>
		<style>
			.videoContainer {
				width: 100vw;
				height: 100vh;
				overflow: auto;
			}
		</style>
		<script type="text/javascript">
			var fullUrl = window.location.href;
			let data = String(decodeURIComponent(fullUrl)).split('*&=&*')[1];
			let agoraData = data.split(',');
			AgoraEduSDK.config({
				appId: '你的声网appid,在声网项目详情查看',
				region: 'cn'
			});
			// 启动在线课堂。
			AgoraEduSDK.launch(document.querySelector('.videoContainer'), {
				userUuid: agoraData[2],
				userName: agoraData[3],
				roomUuid: agoraData[4],
				roleType: Number(agoraData[5]), // 用户角色:1 为老师,2 为学生, 3助教。
				roomType: Number(agoraData[7]), // 房间类型:0 为一对一,2 为大班课,4 为小班课。
				roomName: agoraData[1],
				pretest: true, // 是否开启课前设备检测。
				rtmToken: agoraData[6],
				language: 'zh', // 课堂界面的语言。如需界面为英文,设为 'en' 即可。
				duration: 60 * 30, // 课程时间,单位为秒。
				// recordUrl: 'https://teaching-research-1314823014.cos.ap-nanjing.myqcloud.com/js/shengwang/edu_sdk.bundle.gz.js',
				courseWareList: [],
				webrtcExtensionBaseUrl: 'https://solutions-apaas.agora.io/static', // WebRTC 插件部署地址
				uiMode: 'light', // 设置课堂界面为明亮模式。如需界面为暗黑模式,设为 'dark' 即可。
				platform: 'H5',
			});
		</script>
	</body>
</html>2.web-view组件

要想使用web-view组件,需要先在微信公众平台,也就是小程序后台,填写业务域名。需要是企业认证账号,个人不行。然后填写上一步enterSW.html所在域名,并根据提示进行校验。

在你的小程序项目里面,使用web-view组件,引入上面的html,并给他传参。
index.vue
<template>
	<web-view :src="'你的存储桶地址/enterSW.html?data*&=&*' + encodeURI(videoData)"></web-view>
</template>
<script setup>
import { reactive, toRefs } from 'vue';
const state = reactive({
	videoData: []
});
const { videoData} = toRefs(state);
// 从后端获得videoData数组,并赋值给state.videoData 。
// videoData包含这些数据(theme(房间名字)、userUuid、userName、roomUuid、rtmRole、rtmToken、roomType)
</script>
<style scoped lang="scss">
</style>
后端创建一个房间,并传参给前端,此时就可以进入房间了。如果你想从enterSW.html,给小程序页面传参,参考这个:
web-view组件能力 https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html
https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html
如果你是web网页项目想对接声网web,参考这个文章:
Vue3_对接声网实时音视频_多人视频会议 https://blog.csdn.net/zxy19931069161/article/details/140824129?spm=1001.2014.3001.5501
https://blog.csdn.net/zxy19931069161/article/details/140824129?spm=1001.2014.3001.5501

![洛谷 P1548 [NOIP1997 普及组] 棋盘问题 题解](https://img-blog.csdnimg.cn/img_convert/7e3c789a7f47a8744a18798bdb5dd8e0.png)


















