如何使用Agora iOS SDK实现屏幕共享?官方示例调用无分享选项如何解决
声网iOS SDK屏幕共享功能异常修复方案
1. 确认SDK包版本正确
- 基础精简版AgoraRtcKit不包含屏幕共享能力,需切换为完整SDK包,Podfile中确认依赖配置为
pod 'AgoraRtcEngine_iOS', '~> 你使用的最新版本号',不要引入精简版子模块
2. 新增Broadcast Upload Extension配置
iOS系统限制屏幕采集必须通过系统广播扩展实现,官方基础示例默认未附带该扩展配置,需手动添加:
- 在Xcode主项目中新增Target,选择
Broadcast Upload Extension,扩展的最低支持系统版本和主项目保持一致(至少为iOS 12.0) - 给扩展Target的Podfile添加对应依赖
pod 'AgoraRtcEngine_iOS/BroadcastExtension', '~> 和主SDK完全相同的版本号',执行pod install生效 - 替换扩展中默认的SampleHandler代码,接入声网屏幕采集逻辑,扩展内填写的App ID、频道名、Token需和主项目完全一致
3. 修正主项目触发逻辑
- 确认屏幕共享按钮绑定的触发方法为
startScreenCapture相关接口,而非摄像头切换接口,你当前出现的走普通摄像头流的问题,大概率是按钮事件绑定错误导致 - 开启屏幕共享前需先调用
setVideoSource(.screen)指定视频源为屏幕,再执行推流操作
4. 权限校验
- 除常规的摄像头、麦克风权限外,首次触发屏幕共享时系统会弹出屏幕录制授权申请,需点击「开始直播」完成授权,否则无法正常采集屏幕内容
- 两台测试设备的系统版本都需在iOS 12.0及以上,低于该版本不支持系统屏幕采集能力
5. 订阅端逻辑校验
- 屏幕共享流默认作为单独辅流推送,订阅端需要主动调用
subscribeStream接口指定订阅辅流,默认仅订阅主流(摄像头流)的状态下无法看到屏幕共享画面
内容的提问来源于stack exchange,提问作者mahnoor javed
相关产品推荐
相关产品推荐

