Приложение отправителя iOS для Google Cast Обзор MediaControl
Это вторая статья из серии из трех, где я покажу вам, как добавить управление мультимедиа, когда ваше приложение iOS имеет активный сеанс трансляции. Вы можете прочитать мою предыдущую статью о базовой интеграции для iOS Sender App от Google cast здесь. Я предполагаю, что вы прочитали предыдущую статью и у вас есть минимум кода, который может транслировать видео в Chrome Cast. Теперь, когда мы можем транслировать видео, мы можем показать большой и малый медиа-контроллер внутри нашего приложения, как это делает Netflix (добавление снимка экрана ниже).
Расширенный медиа-контроллер
Открыть расширенный медиа-контроллер в приложении-отправителе очень просто. Google Cast предоставляет простой метод, который можно использовать для открытия этого контроллера. Добавьте код ниже после строки, в которую вы загрузили запрос трансляции.
GCKCastContext.sharedInstance().presentDefaultExpandedMediaControls()
Таким образом, ваш блок кода будет выглядеть примерно так после того, как вы добавите медиа-контроллер.
Теперь транслируйте любое видео, и вы увидите расширенный медиа-контроллер, как на этом скриншоте. Это контроллер по умолчанию, предоставляемый Google Cast. Вы можете настроить этот контроллер в соответствии с вашими требованиями, обратившись к официальной документации.
Мини-медиа-контроллер
Согласно контрольному списку дизайна от Google Cast, приложение-отправитель должно обеспечивать постоянный контроль, известный как мини-контроллер, который должен появляться, когда пользователь уходит. Однако это полностью зависит от вашего приоритета / выбора, где вы хотите это показать или скрыть. Есть два способа добавить этот мини-контроллер мультимедиа.
- Вариант 1. Позвольте платформе Cast управлять компоновкой мини-контроллера, обернув существующий контроллер представления его собственным контроллером представления. Для этого вам необходимо подключить мини-контроллер представления мультимедиа к вашему Контроллер навигации.
- Вариант 2. Управляйте компоновкой виджета мини-контроллера самостоятельно, добавляя его к существующему контроллеру представления, предоставляя вложенное представление в раскадровке. Выбрав этот вариант, вы можете добавить мини-контроллер мультимедиа к любому существующего контроллера представления, добавив его как subview.
Вариант 1: переход к существующему контроллеру представления
Внутри своего делегата приложения получите экземпляр контроллера навигации (не контроллер представления) и позвольте SDK Google Cast взять на себя все функции по подключению мини-контроллера мультимедиа.
let appStoryboard = UIStoryboard(name: "Main", bundle: nil) let navigationController = appStoryboard.instantiateViewController(withIdentifier: "MainNavigation") let castContainerVC = GCKCastContext.sharedInstance().createCastContainerController(for: navigationController) castContainerVC.miniMediaControlsItemEnabled = true window = UIWindow(frame: UIScreen.main.bounds) window!.rootViewController = castContainerVC window!.makeKeyAndVisible()
Теперь этот код выглядит очень простым и легким, но что делать, если вы не хотите добавлять мини-медиа в свою основную навигацию. Что делать, если у вас несколько раскадровок и ваш контроллер навигации другой. Что делать, если у вас есть TabView. Этот поток немного сложен, и вы, конечно, не захотите добавлять его непосредственно в основную навигацию.
Варианты 2: Добавить в качестве подзаголовка
Вы также можете добавить мини-контроллер мультимедиа в качестве подпредставления внутри любого контроллера представления, который покажется вам более элегантным по сравнению с вариантом 1. Создайте две переменные внутри контроллера представления, как показано ниже.
private var miniMediaControlsViewController: GCKUIMiniMediaControlsViewController! var mediaView: UIView!
и внутри viewDidLoad программно добавьте этот mediaView
mediaView = UIView(frame: CGRect(x: 0, y: self.view.frame.height - 70 - (UIApplication.shared.keyWindow?.safeAreaInsets.bottom)!, width: self.view.frame.width, height: 70)) self.view.addSubview(mediaView!)
Теперь пора создать мини-контроллер представления мультимедиа и добавить его к существующему контроллеру представления и установить его как представление контейнера в существующий контроллер представления.
let castContext = GCKCastContext.sharedInstance() sessionManager.add(self) miniMediaControlsViewController = castContext.createMiniMediaControlsViewController() miniMediaControlsViewController.delegate = self installViewController(miniMediaControlsViewController, inContainerView: mediaView!) func installViewController(_ viewController: UIViewController?, inContainerView containerView: UIView) { if let viewController = viewController { addChild(viewController) viewController.view.frame = containerView.bounds containerView.addSubview(viewController.view) viewController.didMove(toParent: self) } }
Теперь ваш блок кода будет выглядеть примерно так, как показано на скриншоте ниже.
Вы можете контролировать видимость базы мини-медиа-контроллера по своему усмотрению. Метод updateControlBarVisibility используется для обеспечения видимости контроллера. Теперь запустите приложение и начните трансляцию. Это даст вам мини-медиа, как показано на скриншоте ниже.
Хорошо !! Итак, теперь ваше приложение полностью соответствует требованиям контрольного списка Google Cast для приложения-отправителя. Вы можете настроить пользовательский интерфейс контроллера в соответствии с вашими потребностями при изучении Google Cast SDK.
На этом я заканчиваю статью и добавляю ссылку Github этого проекта. Вы можете клонировать его и поиграть, изменив код.