控制台获取 UserSig
控制台获取 UserSig
1. 登录实时音视频控制台,进入开发辅助 > UserSig生成&校验。
2. 在签名(UserSig)生成工具下,选择对应的 SDKAppID 和 UserID。
3. 单击生成签名(UserSig),即可计算得到对应的 UserSig。
控制台获取 UserSig
1. 登录实时音视频控制台,进入开发辅助 > UserSig生成&校验。
2. 在签名(UserSig)生成工具下,选择对应的 SDKAppID 和 UserID。
3. 单击生成签名(UserSig),即可计算得到对应的 UserSig。
TRTC SDK 6.6 版本(2019年08月)开始启用新的签名算法 HMAC-SHA256。在此之前已创建的应用,需要先升级签名算法才能获取新的加密密钥。如不升级,您也可以继续使用 老版本算法 ECDSA-SHA256,如已升级,您按需切换为新老版本算法。
升级/切换操作:
1. 登录 实时音视频控制台。
2. 在左侧导航栏选择应用管理,单击目标应用所在行的应用信息。
3. 选择快速上手页签,单击第二步 获取签发UserSig的密钥区域的点此升级、非对称式加密或HMAC-SHA256。
升级:
切换回老版本算法 ECDSA-SHA256:
切换为新版本算法 HMAC-SHA256:
客户端示例代码计算 UserSig
1. 获取 SDKAPPID 和密钥:
1.1 登录实时音视频控制台 > 应用管理。
1.2 单击您需查看的 SDKAppID 对应的应用信息,单击进入快速上手页签。
1.3 查看 第二步 获取签发UserSig的密钥 标签,即可获取用于计算 UserSig 的加密密钥。
1.4 单击复制密钥,可将密钥拷贝到剪贴板中。
说明
若查看密钥时只能获取公钥和私钥信息,请参见 如何获取密钥。
2. 计算 UserSig: 为了方便客户端使用,我们提供各平台计算 UserSig 的源码文件,您可直接下载计算:
适用平台 | 文件源码 | 文件相对路径 |
iOS | Github | TRTC-API-Example-OC/Debug/GenerateTestUserSig.h |
Mac | Github | OCDemo/TRTCDemo/TRTC/GenerateTestUserSig.h |
Android | Github | TRTC-API-Example/Debug/src/main/java/com/tencent/trtc/debug/GenerateTestUserSig.java |
Windows(C++) | Github | TRTC-API-Example-C++/TRTC-API-Example-Qt/src/Util/defs.h |
Windows(C#) | Github | TRTC-API-Example-CSharp/TRTC-API-Example-CSharp/GenerateTestUserSig.cs |
Web | Github | base-js/js/debug/GenerateTestUserSig.js |
微信小程序 | Github | TRTCSimpleDemo/debug/GenerateTestUserSig.js |
Flutter | Github | TRTC-API-Example/lib/Debug/GenerateTestUserSig.dart |
我们在 TRTC SDK 的示例代码中提供了一个叫做 GenerateTestUserSig
的开源模块,您只需要将其中的 SDKAPPID、EXPIRETIME 和 SECRETKEY 三个成员变量修改成您自己的配置,就可以调用 genTestUserSig()
函数获取计算好的 UserSig,从而快速跑通 SDK 的相关功能:
什么是 UserSig?
UserSig 是腾讯云设计的一种安全保护签名,目的是为了阻止恶意攻击者盗用您的云服务使用权。 目前,腾讯云的实时音视频(TRTC)、即时通信(IM)以及移动直播(MLVB)等服务都采用了该套安全保护机制。要使用这些服务,您需要在相应 SDK 的初始化或登录函数中提供 SDKAppID,UserID 和 UserSig 三个关键信息。 其中 SDKAppID 用于标识您的应用,UserID 用于标识您的用户,而 UserSig 则是基于前两者计算出的安全签名,它由 HMAC SHA256 加密算法计算得出。只要攻击者不能伪造 UserSig,就无法盗用您的云服务流量。 UserSig 的计算原理如下所示,其本质就是对 SDKAppID、UserID、ExpireTime 等关键信息进行了一次哈希加密:
//UserSig 计算公式,其中 secretkey 为计算 usersig 用的加密密钥
usersig = hmacsha256(secretkey, (userid + sdkappid + currtime + expire +
base64(userid + sdkappid + currtime + expire)))
腾讯实时音视频(Tencent Real-Time Communication,TRTC),将腾讯多年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案
TRTC SDK 是否支持断线重连?
SDK 支持用户断线情况下自动重连(若持续30分钟都未重连成功,则自动退房并返回-3301错误码),连接过程中具体的连接状态和处理逻辑如下说明。下图展示了从用户 Userid1 加入频道,到连接中断,再到重新加入房间过程中,收到的监听回调事件:
具体说明:
T1:用户侧发起调用 enterRoom
接口发起进房请求。
T2:用户 Userid1 收到 onEnterRoom
回调,Userid2 感知 Userid1 存在延迟,大约300ms后,Userid2 收到 onRemoteUserEnterRoom
回调。
T3:Userid1 客户端因网络问题断网,SDK 会尝试重新加入房间。
T4:Userid1 如果连续8秒没有连接上服务端,Userid1 收到 onConnectionLost
断连回调。
T5:Userid1 接着隔3秒没有连接上服务端,Userid1 收到 onTryToReconnect
重试回调。
T6:Userid1 接着每隔24秒,收到 onTryToReconnect 重试回调。
T7:Userid2 会在收到 Userid1 掉线通知90s后,SDK 判断远端用户 Userid1 掉线,Userid2 收到 onRemoteUserLeaveRoom
回调。
T8:如果Userid1断连期间任意时刻重连成功,Userid1 收到 onConnectionRecovery
恢复回调。
TRTC 怎么监测断网和重连?
通过以下监听回调监听:
onConnectionLost:SDK 跟服务器的连接断开。
onTryToReconnect:SDK 尝试重新连接到服务器。
onConnectionRecovery:SDK 跟服务器的连接恢复。
支持。
如果是简单的信令操作,可以使用 TRTC 的自定义信令接口 sendCustomCmdMsg,开发者自己定义相应的控制信令,收到控制信令的通话方执行对应操作即可。例如,踢人就是定义一个踢人的信令,收到此信令的用户就自行退出房间。
如果是需要实现更完善的操作逻辑,建议开发者通过 即时通信 IM 来实现相关逻辑,将 TRTC 的房间与 IM 群组进行映射,在 IM 群组中收发自定义消息来实现相应的操作。
6.9以前版本:进房时需要构造 json{\"Str_uc_params\":{\"pure_audio_push_mod\":1}}
传入 TRTCParams.businessInfo 中,1表示旁路推流 2表示旁路推流+录制。
TRTC SDK 6.9及以后版本:在进房时选择场景参数为 TRTCAppSceneAudioCall 或 TRTCAppSceneVoiceChatRoom 即可。
TRTC 没有音频和视频通道的区分,只调用 startLocalAudio 不调用 startLocalPreview 时即为纯音频通话模式。
TRTC 进房模式 AppScene 有什么区别?
TRTC 支持四种不同的进房模式,其中视频通话(VideoCall)和语音通话(VoiceCall)统称为通话模式,视频互动直播(Live)和语音互动直播(VoiceChatRoom)统称为 直播模式。
通话模式下的 TRTC,支持单个房间最多300人同时在线,支持最多50人同时发言。适合1对1视频通话、300人视频会议、在线问诊、远程面试、视频客服、在线狼人杀等应用场景。
直播模式下的 TRTC,支持单个房间最多10万人同时在线,具备小于300ms的连麦延迟和小于1000ms的观看延迟,以及平滑上下麦切换技术。适用低延时互动直播、十万人互动课堂、视频相亲、在线教育、远程培训、超大型会议等应用场景。
支持同时并发存在4294967294个房间,累计房间数量无限制。
支持的平台包括 iOS、Android、Windows(C++)、Windows(C#)、Mac、Web、Electron、微信小程序,更多详情请参见
实时音视频是业界真正实现全平台互通的解决方案,具体平台支持及开发环境要求如下表所示:
平台 | 开发环境要求 |
iOS | 支持 iOS 9.0 及以上版本的 iPhone 或 iPad 真机Xcode 9.0+项目已配置有效的开发者签名 |
Android | Android Studio 3.5+建议使用 Android 4.1(SDK API Level 16)及以上系统 |
Windows | 支持 Windows 7 及以上版本Visual Studio 2010及以上版本,推荐使用 Visual Studio 2015.Net Framework 4.0及以上版本 |
Mac OS | Xcode 9.0+OS X10.10+ 的 Mac 真机项目已配置有效的开发者签名 |
Web | 推荐使用桌面端 Chrome 56+,详细开发环境要求请参见 快速集成(Web) |
Electron | 支持 Windows 7 及以上版本、Mac OS 10.10 及以上版本支持 Electron 4.0.0 以上版本,推荐使用最新版 Electron SDK |
微信小程序 | 微信 App iOS 最低版本要求:7.0.9微信 App Android 最低版本要求:7.0.8小程序基础库最低版本要求:2.10.0由于小程序开发者工具不支持原生组件(即 <live-pusher> 和 <live-player> 标签),需要在真机器上运行体验 |
Flutter | iOS 端: 支持 iOS 9.0 及以上版本的 iPhone 或 iPad 真机Xcode 9.0+项目已配置有效的开发者签名 Android 端:Android Studio 3.5+建议使用 Android 4.1(SDK API Level 16)及以上系统 |
支持以下场景:
TRTCAppSceneVideoCall :视频通话场景,适合1对1视频通话、300人视频会议、在线问诊、视频聊天、远程面试等。
TRTCAppSceneLIVE :视频互动直播,适合视频低延时直播、十万人互动课堂、视频直播 PK、视频相亲房、互动课堂、远程培训、超大型会议等。
TRTCAppSceneAudioCall :语音通话场景,适合1对1语音通话、300人语音会议、语音聊天、语音会议、在线狼人杀等。
TRTCAppSceneVoiceChatRoom:语音互动直播,适合:语音低延时直播、语音直播连麦、语聊房、K 歌房、FM 电台等。
只有在直播场景下,可以设置主播和观众角色。主播角色 TRTCRoleAnchor 具有上行和下行音视频的权限,最高并发支持50人,观众 TRTCRoleAudience 只具有下行音视频的权限,最高并发支持10万人。
直播场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom)支持 TRTCRoleAnchor(主播)和 TRTCRoleAudience(观众)两种角色,区别是主播角色可以同时上行、下行音视频数据,观众角色只支持下行播放其他人的数据。您可以通过调用 switchRole() 进行角色切换。
支持,您可以通过 enterRoom 的参数 TRTCParams 指定 streamId,也可以调用 startPublishing 接口传参数 streamId。
为了实现“秒开”效果,默认是进房自动订阅流,可以通过 setDefaultStreamRecvMode 接口切换手动订阅模式。
第一个加入房间的用户为当前房间的所有者,但该用户无法主动解散房间。
通话模式下:所有用户都主动退房时,后台立即解散房间。
直播模式下:最后一个退房的用户是主播角色时,后台立即解散房间;最后一个退房的用户是观众角色时,后台等待10分钟后解散房间。
如果房间内的单个用户异常掉线,90秒后服务端会将该用户清理出当前房间。如果房间内的所有用户都异常掉线,90秒后服务端会自动解散当前房间。用户异常掉线等待时长会被纳入计费用时统计。
当用户要加入的房间不存在时,后台会自动创建一个房间。
UserID 即用户ID,用于在一个实时音视频应用中唯一标识一个用户。取值范围长度建议不超过32字节。请使用英文字母、数字或下划线,区分大小写。