通过 API 可实现多种类型的内容共享,包括:
各平台实现情况请参考各平台文档详情。 除了基础的内容共享,通过 SDK 还可以实现电子白板、内容标注等高级功能。 开发者可通过各平台高级功能列表查看详情。 共享内容的状态变更将通过事件回调进行通知。(开始支持版本:v2.29.3)
1.分享手机屏幕需要使用苹果提供的ReplayKit框架,结合扩展target(Broadcast Upload Extension)实现屏幕采集,具体做法如下:
第一步:在您项目中创建扩展target(如已创建则忽略此步骤)
点击“+”,选择Broadcast Upload Extension,点next进入创建页面
填写扩展名称,取消勾选 Include UI Extension,点击Finish即可创建成功,同时项目中会自动生成对应的SampleHandler类,将支持的最低版本选择为 iOS 12.0
第二步:在扩展target中集成XYRTCEngineExtension.framework
集成XYRTCEngineExtension.framework后,检查Embed选项,设置为Do Not Embed
第三步:调用XYRTCEngineExtension接口
第四步:在主target中调用开始分享接口开始分享屏幕
[[NemoSDK sharedInstance] startContentSharing:type enableAnnotation:YES bundleID:@"xxx"];
注意:此处的"xxx"为第一步中创建扩展时新生成的bundle id。
- (void)startShareImage {
//开启共享图片
[[NemoSDK sharedInstance] startContentSharing:NemoShareContentType_Image bundleID:nil];
//构造content内容
NemoContent *content = [[NemoContent alloc] init];
content.type = NemoShareContentType_Image; //分享图片
content.image = image; //图片数据(UIImage)
content.imageFrameRate = 5; //发送帧率
//发送共享数据
[[NemoSDK sharedInstance] sendContentMsg:content];
}
- (void)nemoSDKDidContentShareStateChanged:(NemoShareContentType)type state:(NemoShareContentState)state {
if (state == NemoShareContentState_Sending) {
//正在发送共享数据
}
if (_dualState == NemoShareContentState_Sending &&
state == NemoShareContentState_Idle) {
//共享结束
}
//记录当前共享的状态
_dualState = state;
}
- (void)stopShareImage {
//停止共享图片
[[NemoSDK sharedInstance] stopContentSharing];
}
内容共享