Отображение пользовательского интерфейса (возможно, раскадровки) с расширением Broadcast UI - PullRequest
0 голосов
/ 16 февраля 2019

Я немного новичок в программировании на IOS, я пытаюсь запустить прямую трансляцию с помощью Replaykit, я добился определенного прогресса в вызове представления выбора службы вещания из приложения, а также в создании 2 расширений (загрузка вещания)Расширение и расширение Broadcast UI).Очевидно, что расширение Broadcast UI должно быть загружено после того, как расширение будет выбрано из представления выбора, а другое получает данные после начала трансляции. Сначала я попытался создать представление, создав раскадровку и присвоив ей собственный класс, такой жес расширением Broadcast UI, однако, когда я нажимаю на расширение в окне выбора, я сразу получаю ошибку The user declined application recording (не уверен, что здесь пропущен какой-либо шаг), получаю эту же ошибку и без раскадровки, япопробовал print() в override func viewDidLoad() контроллера представления расширения Broadcast UI и не получил журналов в области отладки, так что я даже не знаю, загружается ли он вообще.

Мне нужно отобразить простойПользовательский интерфейс, который затем вызывает функцию контроллера представления расширенного пользовательского интерфейса (func userDidFinishSetup()), которая затем начинает вещание.Я также приму, если трансляция может быть запущена непосредственно в приложении без пользовательского интерфейса, в Replaykit docs Я увидел функцию startBroadcast, я думал, что может достичь этого, получил ошибку broadcastInvalidSession = -5808, что означаетЯ «попытался начать трансляцию без предварительной сессии».Помощь очень признателен, спасибо.

Broadcast UI view controller

import ReplayKit

class BroadcastSetupViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        print("WASSUP?");
    }

    // Call this method when the user has finished interacting with the view controller and a broadcast stream can start
    func userDidFinishSetup() {
        print("GET IN!!!");
        // URL of the resource where broadcast can be viewed that will be returned to the application
        let broadcastURL = URL(string:"http://apple.com/broadcast/streamID")

        // Dictionary with setup information that will be provided to broadcast extension when broadcast is started
        let setupInfo: [String : NSCoding & NSObjectProtocol] = ["broadcastName": "example" as NSCoding & NSObjectProtocol]

        // Tell ReplayKit that the extension is finished setting up and can begin broadcasting
        self.extensionContext?.completeRequest(withBroadcast: broadcastURL!, setupInfo: setupInfo)
    }

    func userDidCancelSetup() {
        let error = NSError(domain: "YouAppDomain", code: -1, userInfo: nil)
        // Tell ReplayKit that the extension was cancelled by the user
        self.extensionContext?.cancelRequest(withError: error)
    }
}

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Так что я обратился к инциденту технической поддержки Apple (к сожалению), они предложили добавить «NSExtensionMainStoryboard» в список info.plist расширения пользовательского интерфейса вещания, аналогичный ответу Грега, когда это не сработало, я отправил свой код имы выяснили, что мне также пришлось удалить ключ «NSExtensionPrincipalClass» из того же места, где он не загружался, после этого он работал нормально.

0 голосов
/ 03 марта 2019

Настроена ли раскадровка вашего широковещательного расширения в информационном списке расширения?

В словаре NSExtension вы должны добавить ключ с именем "NSExtensionMainStoryboard", а значением должно быть имя вашей раскадровки, т.е. - "MainInterface"

Вы можете установить точки останова, которые также вызываются в расширениях?

...