【问题标题】:ReplayKit's RPSystemBroadcastPickerView not showing preferredExtensionReplayKit 的 RPSystemBroadcastPickerView 不显示首选扩展
【发布时间】:2019-02-18 03:15:59
【问题描述】:

我正在使用RPSystemBroadcastPickerView 显示一个选择器视图,用户可以从中选择一个广播服务来记录屏幕。根据文档,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" 是我希望选择器提供的扩展包标识符(我多次检查了它的正确性)。

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

关闭它并再次点击控件后,它会显示正确的扩展名。这仅在安装(或重新安装)应用时发生,在它显示之后,它就会一直显示。

这是 iOS 12 测试版的错误,还是我做错了什么?我可以“预注册”扩展程序来解决这个问题吗?

编辑:

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

现在正式发布。

【问题讨论】:

  • 看起来这也是最终 iOS 12 中的一个错误。
  • @MilanNosáľ 有这方面的消息吗?我在 iOS/iPadOS 13.3.1 上遇到了类似的问题。首播没问题。在我的情况下,第二次广播显示我的扩展 + 照片作为其他选项。在第二种情况下,用于启用/禁用的麦克风按钮也丢失了。如果我第二次开始广播,则无法停止扩展。它继续记录。你有没有注意到类似的经历?
  • @peco 没有消息.. 我已经很久没有体验过了.. 如果您在停止它时遇到问题,问题可能出在您的扩展程序中,但如果它根本没有出现在列表,我对此不确定.. 但我会首先尝试正确结束扩展中的广播 - 可能是您没有正确结束它,理论上可能会导致列表第二次不显示它跨度>
  • 感谢您的回答。我没有解释好。在第二种情况下,有我的 Extension + Photos 作为选项。但是我的扩展程序不起作用。你是对的我应该看看扩展它是如何结束的。如果我发现了什么,我会在这里发布更新。

标签: ios swift ios12 replaykit


【解决方案1】:

如果我没有设置“.preferredExtension”,我会看到列表中的所有扩展名。 我在 iOS12 GM 上测试过。

【讨论】:

  • 这不能回答问题 - 我需要 preferedExtension 属性才能正常工作
  • 使用preferredExtension,replayKit 不提供选择扩展的方法。如果没有首选扩展,ReplayKit 提供了一种从列表中选择扩展的方法。 “首选”是误导性词。它应该是“targetExtension”,因为用户没有选择权。
【解决方案2】:

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

【讨论】:

  • 对我们来说,这不仅仅发生在调试中。如果我们在生产中没有发生这种情况,我不会在意。
  • @MilanNosáľ 你有没有这样的场景,一旦你以旧的方式开始广播,然后你就无法重现这个问题?
  • 我真的不想告诉所有用户先去控制中心等 - 这超出了RPSystemBroadcastPickerView 的全部目的,它应该帮助启动系统范围的重播套件广播从应用内无需通过控制中心..
  • 作为一种快速的解决方案,我可以建议您首先显示不带“preferredExtension”属性的选择器视图以显示所有提供者,并在所有其他情况下使用“preferredExtension”属性。您可以使用 UserDefaults 保存有关首次加载“RPSystemBroadcastPickerView”的信息。您需要以任何方式通知苹果有关 bugreport.apple.com 上的行为。 @MilanNosáľ .
【解决方案3】:

我认为是苹果的bug,但我测试后在iOS 12.2中修复了。

【讨论】:

    【解决方案4】:

    您可以在这里找到您的确切preferedExtension

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

    【讨论】:

      【解决方案5】:

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

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

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

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

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

      【讨论】:

        【解决方案6】:

        对于可能遇到相同问题的任何人,如果您的扩展部署目标高于您正在使用的设备,则在您尝试开始广播会话时它不会显示该应用。为此浪费了一整天。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多