Мой комплект приложений состоит из основного приложения (обычное приложение iOS) и расширения для трансляции (ReplayKit 2). Мое приложение содержит кнопку (RPSystemBroadcastPickerView
), которая открывает всплывающее окно системы, чтобы выбрать расширение для вещания и запустить его.
Один не имеет большого контроля над состоянием широковещательного расширения внутри расширения, однако класс расширения, который наследует RPBroadcastSampleHandler
, имеет один полезный метод (finishBroadcastWithError
), который позволяет нам инициировать сбой из расширения (который, в свою очередь, завершит процесс расширения и покажет всплывающее окно, показывающее ошибку и 2 кнопки).
Метод finishBroadcastWithError
принимает ошибку в качестве аргумента. Однако в документах нет абсолютно никакой информации , как настроить сообщение об ошибке, отображаемое в этом всплывающем окне системы.
Я попытался зайти в Google, чтобы понять, как установить сообщение об ошибке, потому что я видел некоторые приложения (Mobcrush), которые каким-то образом смогли установить пользовательское сообщение об ошибке при появлении этого всплывающего окна. Чтобы получить больше информации, я посмотрел оба видео о ReplayKit 2 из WWDC 2017 и WWDC 2018, единственный слайд, в котором упоминалось что-то об обработке ошибок в Replay Kit 2, был тот, где был продемонстрирован следующий код:
let userInfo = [NSLocalizedFailureReasonErrorKey : "Not Logged In"]
let error = NSError(domain: "RPBroadcastErrorDomain", code: 401, userInfo: userInfo)
finishBroadcastWithError(error)
Я попробовал сразу, но, к сожалению, это не влияет на ошибку, отображаемую во всплывающем окне. Я предполагаю, что это либо какая-то ошибка в Replay Kit 2, либо что-то было изменено и не было задокументировано должным образом (по какой-то причине Replay Kit 2 не так хорошо документирован, и мне пришлось собирать информацию из разных источников, чтобы написать приложение, которое работы).
Я даже пытался установить несколько разных ключей в словаре, надеясь, что хотя бы один из них изменит сообщение об ошибке во всплывающем окне, но ни один из них не сработал.
func stop(message error: String) {
let userInfo = [NSLocalizedDescriptionKey : error,
NSLocalizedRecoverySuggestionErrorKey : error,
NSLocalizedFailureErrorKey : error]
let error = NSError(domain: "RPBroadcastErrorDomain", code: 1, userInfo: userInfo)
finishBroadcastWithError(error)
}
Я что-то пропустил в документах? Есть ли "официальный" способ изменить сообщение об ошибке?