智慧服务,成就美好体验 项目咨询

主页 > 服务与支持 > 开发平台 > 客户端SDK参考 > iOS UI SDK > 业务开发 会议中屏幕共享

入门使用

会议中屏幕共享

更新时间:2019-11-20

描述

iOS端屏幕共享需要进行iOS Extension的开发进行实现,以下步骤用于说明如何集成SDK进行屏幕共享Extension的开发,另外由于相关特性对系统能力的依赖,因此需要iOS12及以上版本才能支持屏幕共享功能。

业务流程

  1. 准备过程:iOS应用主工程、Extension的开发所需要的证书和文件。
  2. 以下以CloudLinkMeetingDemo为例进行说明,打开主工程中的AppGroup开关,并设置在1中申请到的可用的appid。

  3. 创建新的Extensions Target,选择File---New---Target--Broadcast Upload Extension,创建Extension target。

  4. 打开Extensions里面的appgroup开关。

  5. 设置entitlements文件中的appGroups为1中申请的值。

  6. 在Extensions 的“Build Phases > Link Binary With Libraries”中添加如下库。

    ReplayKit.framework:系统库

    CloudLinkMeetingScreenShare.framework:SDK提供的库

  7. 在Extensions 的SampleHandler.m文件中添加代码如下。
    #import "SampleHandler.h"
    #import <CLoudLinkMeetingScreenShare/ScreenShareManager.h>
    
    @interface SampleHandler()<ScreenShareManagerDelegate>
    @property (strong, nonatomic) ScreenShareManager *screenShareManager;
    
    @end
    
    @implementation SampleHandler
    
    - (instancetype)init {
        if (self = [super init]) {
            self.screenShareManager = [[ScreenShareManager alloc] initWithAppGroupIdentifier:自己申请的appGroupIdentifier];
            self.screenShareManager.delegate = self;
        }
        return self;
    }
    
    
    - (void)broadcastStartedWithSetupInfo:(NSDictionary<NSString *,NSObject *> *)setupInfo {
        // User has requested to start the broadcast. Setup info from the UI extension can be supplied but optional.
        [self.screenShareManager broadcastStartedWithSetupInfo:setupInfo];
    }
    
    - (void)dealloc {
        self.screenShareManager = nil;
    }
    
    - (void)broadcastPaused {
        // User has requested to pause the broadcast. Samples will stop being delivered.
        [self.screenShareManager broadcastPaused];
    }
    
    - (void)broadcastResumed {
        // User has requested to resume the broadcast. Samples delivery will resume.
        [self.screenShareManager broadcastResumed];
    }
    
    - (void)broadcastFinished {
        // User has requested to finish the broadcast.
        [self.screenShareManager broadcastFinished];
    }
    
    - (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType {
    
        switch (sampleBufferType) {
            case RPSampleBufferTypeVideo:
                // Handle video sample buffer
                [self.screenShareManager processSampleBuffer:sampleBuffer withType:RPSampleBufferTypeVideo];
                break;
            case RPSampleBufferTypeAudioApp:
                // Handle audio sample buffer for app audio
                break;
            case RPSampleBufferTypeAudioMic:
                // Handle audio sample buffer for mic audio
                break;
    
            default:
                break;
        }
    }
    
    - (void)screenShareManagerFinishBroadcastWithError:(NSError *)error {
        [self finishBroadcastWithError: error];
    }
    
    @end
     
  8. 在主工程中设置groupId,在clm_init之前配置跟extension中相同的groupId,示例代码如下:
    CloudLinkMeeting *clm = [CloudLinkMeeting sharedInstance];
    clm.screenShareGroupId = 跟extension中相同的groupId;
    //开始ClooudLinkMeeting的其他接口调用
     
  9. 完成编码。
  10. 屏幕共享有两种开启方式,只能在会议中进行。
    1. 会议中点击下方的屏幕共享按钮,选择应用进行屏幕共享。

       

    2. 会议中打开手机的控制中心,长按录制按钮,弹出菜单中选择。