Как программно остановить трансляцию системы ReplayKit 2 без RPSystemBroadcastPickerView

Я пытаюсь реализовать расширение для широковещательной загрузки и хочу, чтобы пользователь мог нажать кнопку в моем приложении, чтобы остановить трансляцию.

Насколько я могу судить из документации, единственные способы остановить системную трансляцию:

  • Показывать RPSystemBroadcastPickerView в приложении, когда пользователь нажимает на него, они попадают в пользовательский интерфейс системы и останавливают трансляцию там.
  • Сообщите широковещательному добавочному номеру об остановке другими способами и вызовите finishBroadcastWithError в RPBroadcastSampleHandler, который покажет пользователю всплывающее окно с ошибкой. Кажется, что это уловка, которую использует Zoom.

Однако сегодня я пробовал использовать функцию совместного использования экрана в Facebook Messenger, и они каким-то образом обходят системный пользовательский интерфейс (только для остановки потока). Когда я нажимаю кнопку остановки, демонстрация экрана немедленно прекращается и не отображается ни системный интерфейс, ни всплывающее окно с ошибкой.

Как они это делают? Я предполагаю, что они каким-то образом получают действительный объект RPBroadcastController, но я не могу понять, как это сделать.


person Atlante45    schedule 13.08.2020    source источник


Ответы (1)


Закончил выяснять это.

Вам просто нужно передать nil finishBroadcastWithError. Он выдаст предупреждение, потому что ошибка не может быть обнулена, но вы можете успокоить ее следующим образом:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wnonnull"
    [self finishBroadcastWithError:nil];
#pragma clang diagnostic pop
person Atlante45    schedule 13.08.2020
comment
Откуда вы взяли действительный объект RPBroadcastController? - person Pratik Jamariya; 06.10.2020
comment
Я не использую RPBroadcastController, я не думаю, что есть способ получить его. Я вызвал finishBroadcastWithError из RPBroadcastSampleHandler - person Atlante45; 06.10.2020
comment
А как насчет Свифта? - person Tanay Mondal; 06.05.2021