ReplayKit 的 RPSystemBroadcastPickerView 不显示 preferredExtension

ReplayKit's RPSystemBroadcastPickerView not showing preferredExtension

我正在使用 RPSystemBroadcastPickerView 来显示选择器视图,用户可以从中 select 广播服务来录制屏幕。根据文档,preferredExtension 应该允许我设置选择器应该显示哪个广播扩展。

代码超级简单:

let broadcastPickerView = RPSystemBroadcastPickerView(frame: CGRect(x: 0, y: 0, width: 51, height: 51))
view.addSubview(broadcastPickerView)
broadcastPickerView.preferredExtension = "com.milan.nosal.broadcast-extension"
broadcastPickerView.backgroundColor = .clear
broadcastPickerView.showsMicrophoneButton = false

其中 "com.milan.nosal.broadcast-extension" 是我希望选择器提供的扩展包标识符(我多次检查了它的正确性)。

但是,当点击控件时,首先弹出窗口显示为空 selection:

关闭它后,再次点击控件,它会显示正确的扩展名。只有在安装(或重新安装)应用程序时才会出现这种情况,在它显示之后,它总是显示。

这是 iOS 12 测试版错误,还是我做错了什么?我可以 "preregister" 扩展来解决这个问题吗?

编辑:

应用发布后,我们的用户遇到了同样的问题,但这次连多次点击控件都没有帮助——选择器总是空的!似乎扩展安装正确,因为它可以从控制中心启动。

运行 正式发布。

如果我不设置“.preferredExtension”,我会在列表中看到所有扩展名。 我在 iOS12 GM.

上测试过

我有同样的问题,看起来 Xcode 有一些关于如何安装 broadcastExtension 与你的应用程序的问题。对我来说,它只与调试模式有关。要查看正确的 UI,请尝试以旧方式启用一次广播(控制中心 -> 深度触摸 -> 开始广播),之后在你的 BroadcastPickerView 中你将看到正确的 UI(你正在推送 iOS 更新有关扩展的信息)。无法在发布模式下重现。

我认为是苹果的bug,我测试后在iOS12.2中修复了

您可以在此处找到您的 preferedExtension

当您准确添加 pickerView.preferredExtension Bundle Identifier 时,您的应用将显示在录制应用列表中。希望这对您有所帮助!

您将广播上传扩展添加到您的项目中并获取该扩展包标识符。

如何在您的应用中创建广播上传扩展程序?

转到xcode - 文件 - 新建 - 目标 - 广播上传扩展

然后将这一行添加到您的应用中。当您创建 RPSystemBroadcastPickerView 对象时。

broadCastPicker?.preferredExtension = "com.vikrant.YourApp.Extension"

请注意,这适用于任何 iOS 版本:

我为此烧了一整天。添加 BroadCast 扩展时,Apple 会自动为部署目标添加可能的最高 iOS 版本。您需要确保这不高于您物理设备的 iOS 版本。您不会收到任何构建错误,它们只是不会在广播扩展列表中显示您的应用程序。