【问题标题】:How to programatically stop a ReplayKit 2 system broadcast without RPSystemBroadcastPickerView如何在没有 RPSystemBroadcastPickerView 的情况下以编程方式停止 ReplayKit 2 系统广播
【发布时间】:2020-08-13 06:27:09
【问题描述】:

我正在尝试实现广播上传扩展,我希望用户能够单击我的应用中的按钮来停止广播。

据我从文档中得知,停止系统广播的唯一方法是:

  • 在应用中显示RPSystemBroadcastPickerView,当用户点击它时,他们将被带到系统UI并在那里停止广播。
  • 通过其他方式指示广播扩展停止并在RPBroadcastSampleHandler 中调用finishBroadcastWithError,这将向用户显示错误弹出窗口。这是 Zoom 似乎使用的技巧。

但是,我今天在 Facebook Messenger 上尝试了屏幕共享功能,但他们以某种方式绕过了系统 UI(仅用于停止流)。 当我单击停止按钮时,屏幕共享会立即停止,并且不会显示系统 UI 或错误弹出窗口

他们是怎么做到的? 我最好的猜测是他们以某种方式获得了一个有效的 RPBroadcastController 对象,但我不知道如何。

【问题讨论】:

    标签: ios replaykit


    【解决方案1】:

    终于弄明白了。

    您基本上只需将nil 传递给finishBroadcastWithError。它会引发警告,因为错误不可为空,但您可以使用以下命令使其安静:

    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wnonnull"
        [self finishBroadcastWithError:nil];
    #pragma clang diagnostic pop
    

    【讨论】:

    • 你从哪里得到一个有效的 RPBroadcastController 对象?
    • 我不使用 RPBroadcastController,我认为没有办法获得。我从 RPBroadcastSampleHandler 调用了 finishBroadcastWithError
    • 那么 swift 呢?
    • @Atlante45,我正在使用 RPSystemBroadcastPickerView,如何关闭系统广播?谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2023-01-26
    • 2023-04-04
    • 1970-01-01
    • 2016-06-02
    相关资源
    最近更新 更多