Отображение пользовательского сообщения об ошибке из расширения широковещания iOS - PullRequest
0 голосов
/ 08 апреля 2019

Мой комплект приложений состоит из основного приложения (обычное приложение 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)
}

Я что-то пропустил в документах? Есть ли "официальный" способ изменить сообщение об ошибке?

1 Ответ

1 голос
/ 19 апреля 2019

Я получаю персонализированную ошибку с этим набором параметров: (домен: "ScreenShare", код: -1, userInfo: [NSLocalizedFailureReasonErrorKey: "не удалось передать, потому что ...."]))

...