ReplayKit录屏的坑

一、问题描述
在做手机录屏功能时,运行同一份代码,发现自己的手机(系统13.4)能录制屏幕,而测试机(系统12.4)不能录制屏幕。

二、代码实现
使用iOS12的系统控件RPSystemBroadcastPickerView来实现录屏功能,代码如下:

override func viewDidLoad() {
        super.viewDidLoad()
        let broadcastPicker = RPSystemBroadcastPickerView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
        broadcastPicker.preferredExtension = "com.your-app.broadcast.extension"
        containerView.addSubview(broadcastPicker)
    }

三、问题产生的现象
如下图所示,preferredExtension参数不生效,没有显示当前的app,而extension的bundleId确认过是对的。

使用preferredExtension不生效

四、解决方案
经排查,发现Extension的target配置有问题。

image.png

新建Extension时,target配置的支持最低系统,默认是最新的,现在是13.4(自己手机系统刚好满足),而测试机是12系统,低于13.4,所以录屏时有问题。
把系统改成从12.0开始支持就可以了。

五、解决后的效果图

image.png

推荐阅读更多精彩内容