iOS ReplayKit的使用

/ 0评 / 0

项目中要用到录屏功能,就研究了一下iOS的ReplayKit框架,这里简单说一下使用,在需要使用录屏的地方引入头文件,添加代理 RPPreviewViewControllerDelegate:

#import 
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIButton *liveButton;
@property (weak, nonatomic) IBOutlet UIButton *stopButton;
@end

因为 iOS 9.0 以下 不能使用此框架 , 而且模拟器也不能使用,所以在使用之前最好做个判断 :

if ([RPScreenRecorder sharedRecorder].available) {

}else{
    NSlog(@"该设备不支持录屏");
}

因为 iOS 10 以后开启录屏的方法与之前不一样了,所以需要判断一下

- (IBAction)startRecord:(UIButton *)sender {
    // 开启录屏
    // iOS 10.0 以上
    if (([UIDevice currentDevice].systemVersion.floatValue >= 10.0f)) {
        [[RPScreenRecorder sharedRecorder]startRecordingWithHandler:^(NSError * _Nullable error) {
            if (error) {
                NSLog(@"error: %@",error);
            }else{
                NSLog(@"开始录屏");
            }
        }];
    }else{
        // iOS 10.0 以下
        [[RPScreenRecorder sharedRecorder] startRecordingWithMicrophoneEnabled:YES handler:^(NSError * _Nullable error) {
            if (error) {
                NSLog(@"error: %@",error);
            }else{
                NSLog(@"开始录屏");
            }
        }];
    }
}

- (IBAction)stopRecord:(UIButton *)sender {
    /// 结束录屏
    NSLog(@"结束录屏");
    [[RPScreenRecorder sharedRecorder] stopRecordingWithHandler:^(RPPreviewViewController * _Nullable previewViewController, NSError * _Nullable error) {
        if (error) {
            NSLog(@"error: %@", error);
        }else{
            NSLog(@"结束录屏");
            if (previewViewController) {
                //设置预览页面到代理
                previewViewController.previewControllerDelegate = self;
                [self presentViewController:previewViewController animated:YES completion:nil];
            }
        }
    }];
}

回放预览界面的代理方法

- (void)previewControllerDidFinish:(RPPreviewViewController *)previewController {
    //用户操作完成后,返回之前的界面
    [previewController dismissViewControllerAnimated:YES completion:nil];
}

这里要注意一下,因为开启录屏的时间可能会有好几秒,需要稍微等待一下。

评论已关闭。