iOS 学习笔记之ReplayKit

2019-08-17  本文已影响0人  Kity_Pei

前言

最近一段时间在准备上线一款自己的App,想用一个屏幕录制功能做个简易的用法说明,所以有了这么一篇的学习笔记。在iOS 9 之前录制屏幕可能需要借用一些第三方库或者越狱,当然现在iOS12了已经,越狱这么“严重的”事,谁去做呀,能用到系统库当然不会用第三方库了,正统多重要呀。直接进正文吧,ReplayKit才是本篇学习笔记的重点。

正文

简介

录屏功能是iOS 10 新推出的特性,苹果在iOS 9的 ReplayKit保存录屏的基础上,增加了视频流的实时直播功能,官方说明。iOS 11又再次增强成ReplayKit 2,进一步的提升了ReplayKit的易用性和通用性,并且可以对整个手机实现屏幕录制。

应用场景

介绍

RPPreviewViewController

描述

RPPreviewViewController是屏幕录制之后用来展示预览和编辑的视图对象。有两个mode控制的,一个是preview(预览),一个是share(分享)。

常用代理说明

当用户完成对屏幕记录的更改时,应用程序负责关闭表示用户界面的视图控制器。

func previewControllerDidFinish(_ previewController: RPPreviewViewController)

当用户完成对屏幕记录的更改时,应用程序负责关闭表示用户界面的视图控制器。

func previewController(_ previewController: RPPreviewViewController, didFinishWithActivityTypes activityTypes: Set<String>)

RPScreenRecorder

描述

RPScreenRecorder是主要录制屏幕的类,RPScreenRecorder是一个单例对象,但是RPScreenRecorder不能从AVPlayer录制视频。

常用代理说明

当录制出现错误或记录可用性更改而发生的停止,会调用如下方法

func screenRecorder(RPScreenRecorder, didStopRecordingWith: RPPreviewViewController?, error: Error?)

屏幕录制可用性改变(由于不支持硬件、用户的设备通过Airplay或者TVOut会话显示信息,或正在录制其他的应用程序,屏幕记录可能无法使用)

func screenRecorderDidChangeAvailability(_ screenRecorder: RPScreenRecorder)

用法

描述

1.由于iOS 9才开始支持ReplayKit框架,所以需要判断设备是否支持ReplayKit;

以下方法可以判断屏幕录制是否可用

RPScreenRecorder.shared().isAvailable

2.开始录制

通过RPScreenRecorder的单例对象调用以下方法进行开始录制。microphoneEnabled这个参数表示在录制过程中是否激活麦克风状态,默认是false。

func startRecording(withMicrophoneEnabled microphoneEnabled: Bool, handler: ((Error?) -> Void)? = nil)

3.停止录制

通过RPScreenRecorder的单例对象调用以下方法进行停止录制。当记录因错误或者录制可用性更改而停止,会调用这个回调方法,如果停止录制的时候有可用的内容时,会返回一个RPPreviewViewController对象。

func screenRecorder(_ screenRecorder: RPScreenRecorder, didStopRecordingWith previewViewController: RPPreviewViewController?, error: Error?)

总结

上一篇下一篇

猜你喜欢

热点阅读