使用iOS ReplayKit屏幕记录您的应用程序以进行错误报告

继续探索一些不常见的iOS框架的尝试,我们将尝试研究一个有趣但不受欢迎的候选者ReplayKit

ReplayKit使应用程序开发人员可以在其应用程序中记录活动的视频。 您也可以使用麦克风捕捉声音。 此框架自iOS 9起可用。从iOS 10开始,此框架使您可以为视频添加面部时间记录(例如实时评论)。 您甚至可以现场直播该应用程序的屏幕录像。

在wwdc会议中,Apple主要强调使用ReplayKit从游戏内部录制/直播您的游戏。

在任何应用程序中使用ReplayKit的一种可能性是错误报告。 如果测试人员可以选择记录导致错误的流程以及对缺陷的解释,那么事情会变得很容易。 但是您将无法使用ReplayKit报告任何崩溃。 我们稍后再讨论。

让我们来看一个示例,展示如何在这种情况下使用ReplayKit

项目概况

我们的项目由一个视图控制器组成,该控制器在表格中显示书籍及其作者的列表。 由于没有可供浏览的详细信息屏幕,因此当您单击书本条目时,在表格视图单元格上显示选择内容毫无意义。 但是默认情况下,表格视图单元格是可选的。 这可能是我们试图报告的错误。

BookListVC :显示书籍和作者的列表。

我们完成的BookListVC看起来像这样。

设置屏幕录像机

要设置屏幕录像机,我们使用ReplayKit的RPScreenRecorder类。

var screenRecorder:RPScreenRecorder?

RPPreviewViewControllerDelegate

RPPreviewViewController的代表在被关闭时会收到通知。 从屏幕快照中可以看到,有两种方法可以关闭视图控制器,既可以将记录保存为照片,也可以选择不选择。 如果应通知您的视图控制器如何解雇预览视图控制器,则应使用以下委托方法。

func PreviewController(RPPreviewViewController,didFinishWithActivityTypes:Set )

从活动类型中,您可以找出如何解雇控制器。 如果集合包含saveToCameraRoll,则记录已保存到相机胶卷中。 如果集合为空,则仅关闭预览视图控制器。 如果您不熟悉活动类型,请遍历UIActivityType内置活动类型

如您所见,预览视图控制器已关闭。 当应用程序导航到预览视图控制器时,我们将隐藏包含记录指示的窗口。 一旦将其关闭,就必须显示它,因为它是主UI的一部分。

您可以在下面查看我们的应用程序的录像。

崩溃报告失败!!!

现在回到为什么无法使用ReplayKit记录崩溃的原因 。 如果应用程序崩溃,整个录制流程将中断,并且永远无法将录制内容保存到“照片”中。 同样,涉及到移至后台然后弹回应用程序中的错误也无法正确记录。 在应用程序进入后台之前和应用程序进入前台之前,您将获得记录,而不是在应用程序外部花费的时间。

如果需要更清晰的说明,则可以自由浏览源代码

参考文献

ReplayKit上线– WWDC 2016 –视频– Apple Developer
ReplayKit是一个易于使用的框架,使玩家可以共享游戏记录或向…开发者直播游戏。 ReplayKit | Apple开发人员文档
ReplayKit框架提供了在应用程序中录制视频和音频的功能。 然后,用户可以共享… developer.apple.com

由Y Labs创新实验室开发