Ios 如何在没有RPSystemBroadcastPickerView的情况下以编程方式停止ReplayKit 2系统广播

Ios 如何在没有RPSystemBroadcastPickerView的情况下以编程方式停止ReplayKit 2系统广播,ios,replaykit,Ios,Replaykit,我正在尝试实现广播上载扩展,我希望用户能够单击我的应用程序中的按钮停止广播 据我从文档中了解,停止系统广播的唯一方法是: 在应用程序中显示RPSystemBroadcastPickerView,当用户单击它时,他们会被带到系统界面并在那里停止广播 通过其他方式向广播分机发送停止信号,并在RPBroadcastSampleHandler中调用finishBroadcastWithError,这将向用户显示一个错误弹出窗口。这是Zoom似乎使用的技巧 然而,我今天在Facebook Messen

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

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

  • 在应用程序中显示
    RPSystemBroadcastPickerView
    ,当用户单击它时,他们会被带到系统界面并在那里停止广播
  • 通过其他方式向广播分机发送停止信号,并在
    RPBroadcastSampleHandler
    中调用
    finishBroadcastWithError
    ,这将向用户显示一个错误弹出窗口。这是Zoom似乎使用的技巧
然而,我今天在Facebook Messenger上尝试屏幕共享功能,他们不知何故绕过了系统用户界面(仅用于停止流)。 当我单击停止按钮时,屏幕共享立即停止,并且不显示系统UI或错误弹出窗口

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

最终找到了答案

您基本上只需要将
nil
传递到
finishRor
。它将抛出警告,因为错误不可为null,但您可以使用以下命令使其安静:

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

最后终于弄明白了

您基本上只需要将
nil
传递到
finishRor
。它将抛出警告,因为错误不可为null,但您可以使用以下命令使其安静:

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

从哪里获得有效的RPBroadcastController对象?我不使用RPBroadcastController,我认为没有办法获得一个。我从RPBroadcastSampleHandler调用finishBroadcastWithError swift呢?从哪里获得有效的RPBroadcastController对象?我不使用RPBroadcastController,我认为没有办法获得一个。我从RPBroadcastSampleHandler打电话给finishBroadcastWithError swift呢?