全时实时音视频 SDK(HarmonyOS)合规使用说明

前言

《中华人民共和国个人信息保护法》自 2021 年 11 月 1 日起正式施行后,监管部门、各行业参与方和终端消费者越来越关注用户的隐私保护问题。为了有效治理 App 违规收集使用个人信息的现象,监管部门也陆续出台相关标准规范,对违规的行为进行通报并要求限期整改。

您必须遵守适用的法律法规,履行个人信息保护义务,并遵循合法、正当、必要和诚信的原则处理用户个人信息,包括但不限于《中华人民共和国个人信息保护法》、《中华人民共和国网络安全法》、《中华人民共和国数据安全法》以及其他适用的法律法规等。

此文档用于帮助您更好地了解 HarmonyOS 实时音视频 SDK(TangRTCSDK) 并合规使用 SDK 服务,仅适用于开发者的业务区域为中国大陆地区的场景。

我们高度重视 SDK 的功能优化、个人信息安全和保护,将适时升级迭代 SDK 版本以提升产品的安全性和稳定性,确保符合相关法律法规及监管标准的最新合规要求。强烈建议您升级使用最新版本 SDK,以便保障您正常使用 SDK 最新功能、避免因您更新不及时产生的不利影响(例如 App 被通报或下架等)。

特别提示

本 《SDK 合规指南》 是对全时实时音视频 SDK 的合规性和安全性描述与要求,仅为我们向您提供的服务说明及使用建议,不构成也不应被视为我们对于任何法律法规及政策文件的及时的、完整的、全面的、甚至完全准确的分析,亦不构成我们对应用软件开发工具包产品和/或服务的承诺和保证。本《指南》不能作为判断您与您所开发、运营的 App 是否满足合规与安全要求的可依赖的标准,您应当自行、独立地对前述 App 承担合规与安全责任。

SDK 收集个人信息说明

产品功能类型

个人信息类型及字段

是否必须

用途和目的

配置方式

基本功能

网络状态

必选

用于检测网络连接,保障通话质量

SDK 内部自动获取,无需额外配置

基本功能

SDK 收集音频

可选

用于 SDK 音频通话功能,进行语音采集与传输

通过 ChannelMediaOptions.publishMicrophoneTrack控制是否发布麦克风音频,默认 true

基本功能

SDK 收集视频

可选

用于 SDK 视频通话功能,进行视频采集与传输

通过 ChannelMediaOptions.publishCameraTrack控制是否发布摄像头视频,默认 true

SDK 所需系统权限与功能关系,以及权限申请时机

申请权限说明:对于全时实时音视频 SDK 可选申请的系统权限,您可以参考如下表格内容,详细了解相关权限与业务功能的关系。因相关权限的不申请将会对其对应功能造成影响,您可以结合实际需求进行合理配置。

权限

是否可选

用途

申请时机

ohos.permission.INTERNET

必选

SDK 进行网络通信,不配置 SDK 无法正常工作

启用 SDK 时

ohos.permission.MICROPHONE

可选

用于音频通话、语音连麦

启用 SDK 后,需要麦克风发言时

ohos.permission.CAMERA

可选

用于视频通话、本地视频预览

启用 SDK 后,需要使用摄像头时

ohos.permission.KEEP_BACKGROUND_RUNNING

可选

用于切换后台时保持音频通话

启用 SDK 后,应用切到后台时

权限声明示例

在应用 module.json5 中按需声明权限:

"requestPermissions": [
  {
    "name": "ohos.permission.INTERNET",
    "reason": "$string:Internet_reason",
    "usedScene": {
      "abilities": ["EntryAbility"],
      "when": "always"
    }
  },
  {
    "name": "ohos.permission.MICROPHONE",
    "reason": "$string:Audio_reason",
    "usedScene": {
      "abilities": ["EntryAbility"],
      "when": "inuse"
    }
  },
  {
    "name": "ohos.permission.CAMERA",
    "reason": "$string:Video_reason",
    "usedScene": {
      "abilities": ["EntryAbility"],
      "when": "inuse"
    }
  },
  {
    "name": "ohos.permission.KEEP_BACKGROUND_RUNNING",
    "reason": "$string:Background_reason",
    "usedScene": {
      "abilities": ["EntryAbility"],
      "when": "inuse"
    }
  }
]

建议在 abilities 中配置后台音频模式:

"backgroundModes": ["audioRecording", "audioPlayback", "voip"]

SDK 初始化及各项业务功能接口合规调用时机

3.1 调用时机

请务必在用户同意您 App 中的隐私政策后,再调用 SDK 初始化及加入频道接口。

SDK 典型调用流程如下:

  1. 用户同意 App 隐私政策
  2. 用户触发加入频道操作
  3. 申请麦克风/摄像头权限(按需)
  4. 创建 RtcEngine 并加入频道
import { common } from '@kit.AbilityKit'
import { RtcEngine, RtcEngineConfig, ChannelMediaOptions, Constants } from 'TangRTCSDK'

// 1. 创建引擎(建议在用户同意隐私政策后、加入频道前调用)
let config = new RtcEngineConfig()
config.mAppId = 'YOUR_APP_ID'
config.mContext = getContext(this) as common.UIAbilityContext
config.mEventHandler = { /* 注册事件回调 */ }
let rtcEngine = RtcEngine.create(config)

// 2. 开启音视频模块
rtcEngine.enableAudio()
rtcEngine.enableVideo()

// 3. 配置频道参数并加入
let mediaOption = new ChannelMediaOptions()
mediaOption.publishMicrophoneTrack = true   // 是否发布麦克风
mediaOption.publishCameraTrack = true       // 是否发布摄像头
mediaOption.autoSubscribeAudio = true
mediaOption.autoSubscribeVideo = true
mediaOption.channelProfile = Constants.ChannelProfile.COMMUNICATION
mediaOption.clientRoleType = Constants.ClientRole.BROADCASTER

rtcEngine.joinChannelWithOptions(token, channelName, uid, mediaOption)

3.2 启用/禁用音频采集

通过 ChannelMediaOptions 控制是否发布麦克风音频:

let mediaOption = new ChannelMediaOptions()
mediaOption.publishMicrophoneTrack = true   // true:发布麦克风;false:不发布
mediaOption.autoSubscribeAudio = true       // true:订阅远端音频

加入频道后,也可通过接口动态控制:

rtcEngine.muteLocalAudioStream(true)   // 静音本地麦克风
rtcEngine.muteLocalAudioStream(false)  // 取消静音

3.3 启用/禁用视频采集

通过 ChannelMediaOptions 控制是否发布摄像头视频:

let mediaOption = new ChannelMediaOptions()
mediaOption.publishCameraTrack = true   // true:发布摄像头;false:不发布
mediaOption.autoSubscribeVideo = true   // true:订阅远端视频

加入频道后,也可通过接口动态控制:

rtcEngine.muteLocalVideoStream(true)   // 关闭本地视频
rtcEngine.muteLocalVideoStream(false)  // 开启本地视频

3.4 离开频道与销毁引擎

用户离开频道或退出页面时,应及时释放资源:

rtcEngine.stopPreview()    // 视频场景
rtcEngine.leaveChannel()
RtcEngine.destroy()

告知最终用户的文案示例

在您接入、使用全时实时音视频 SDK 服务前,我们要求您在隐私政策中向用户告知 SDK 的名称、SDK 提供方名称、收集个人信息类型、使用目的、隐私政策链接,并获取用户的同意或取得其他合法性基础。您可以参考如下方式提供条款内容:

4.1 以文字方式向用户告知

第三方 SDK 名称:全时实时音视频 SDK

第三方公司名称:全时云商务服务股份有限公司

收集个人信息类型:屏幕分辨率,设备类型,网络状态,SDK 收集音频,SDK 收集视频。

使用目的

  1. 提供 SDK 基础实时音视频通话功能
  2. 进行 App 性能统计与分析,优化用户体验

隐私政策链接https://developer.quanshi.com/cn/api/670

4.2 以表格方式向用户告知

第三方 SDK 名称

第三方公司名称

收集个人信息类型

使用目的

隐私政策链接

全时实时音视频 SDK

全时云商务服务股份有限公司

屏幕分辨率,设备类型,网络状态,SDK 收集音频,SDK 收集视频

提供 SDK 基础实时音视频功能;进行 App 性能统计与分析,优化用户体验

隐私政策

最终用户同意方式的说明

App 首次运行时应当有隐私弹窗,隐私弹窗中应公示简版隐私政策内容并提供完整版隐私政策链接,并明确提示最终用户阅读并选择是否同意隐私政策;隐私弹窗应提供同意按钮和拒绝按钮,由最终用户主动选择。

如涉及敏感个人信息(如麦克风、摄像头),应在取得最终用户的单独授权同意后再调用 SDK 相关功能,可以通过单独弹窗的形式来实现最终用户的授权,并在 App 的《隐私政策》中针对敏感个人信息通过字体加粗或其他显著标识显示。

如何联系我们

如果您对全时实时音视频 SDK 数据收集有任何疑问、意见或建议,亦或者需要全时协助关闭某项数据收集,请联系我们的客服热线:400-810-5222