Начиная с iOS 14, операционная система будет применять новые ограничения и разрешения, влияющие на работу пользователей с Cast. Это также повлияет на то, как вы встроите Cast SDK в свое приложение. Чтобы ваше приложение поддерживало функциональность Cast с последними версиями iOS, вы должны сделать обновления для обработки этих изменений разрешений.
iOS 14
Разработчикам следует обновить свои приложения-отправители iOS Cast до Google Cast SDK версии 4.6.0 или более поздней. Эти версии обеспечивают поддержку iOS 14 и ее требований.
Начиная с iOS 14, приложения, которые сканируют устройства в локальной сети, теперь будут предлагать пользователям одноразовое диалоговое окно разрешений для поиска и подключения к локальным сетевым устройствам. Платформа Cast использует локальную сеть для обнаружения и управления устройствами Cast, поэтому, если пользователь откажет в разрешении, он не сможет транслировать.
Чтобы улучшить взаимодействие с пользователем, мы вносим некоторые изменения UX в SDK для тех приложений, которые используют стандартное средство выбора устройств. Эти модификации UX делают пользователей более очевидными, почему необходимы разрешения на доступ к локальной сети, а также то, как включить трансляцию, если доступ к локальному сетевому устройству отключен.
Приложения, созданные с помощью версий Cast SDK с использованием версии 4.4.8 или более ранней, будут продолжать работать до тех пор, пока они созданы с помощью Xcode 11.7 или более ранней версии. Если вы выполняете сборку для iOS 14 с Xcode 12 или более поздней версии, мы рекомендуем вам обновить Cast SDK версии 4.6.0 или более поздней версии, чтобы ваше приложение Cast продолжало работать должным образом.
Cast iOS SDK версии 4.6.0 или более поздней версии можно загрузить с помощью CocoaPods, выполнив настройку CocoaPods , или вручную, выполнив настройку вручную . Этот выпуск включает изменения в базовый механизм обнаружения, позволяющие приложениям, созданным с помощью Xcode 12, находить устройства Cast в сети. Кнопка Cast теперь должна отображаться всегда. Если никакие устройства недоступны, когда пользователь нажимает кнопку трансляции, отображается диалоговое окно с инструкциями о том, почему устройства могут быть недоступны, включая информацию о том, как повторно включить разрешение на доступ к локальной сети.
Трансляция изменений SDK
Первый кастинг
При первой попытке пользователя выполнить трансляцию появится межстраничное диалоговое окно доступа к локальной сети (LNA), объясняющее, почему необходим доступ к локальной сети, а затем появится запрос разрешений на доступ к локальной сети, предоставленный Apple iOS. Макеты ниже иллюстрируют поток:
Трансляция недоступна
Начиная с iOS Sender SDK 4.6.0, кнопка Cast всегда появляется, когда пользователь подключен к Wi-Fi. Когда устройства Cast недоступны, нажатие на кнопку Cast открывает диалоговое окно, которое дает пользователю подсказки относительно возможных причин, по которым Cast недоступен, как показано на макетах ниже:
Обновление вашего приложения на iOS 14
- Добавьте Cast iOS SDK 4.7.0 в свой проект.
Если вы используете CocoaPods, используйте
pod update
, чтобы добавить SDK 4.7.0 в свой проект.В противном случае загрузите SDK вручную .
- Добавьте
NSBonjourServices
в свойInfo.plist
Укажите
NSBonjourServices
в вашемInfo.plist
, чтобы разрешить успешное обнаружение локальной сети в iOS 14.Вам потребуется добавить
_googlecast._tcp
и_<your-app-id>._googlecast._tcp
в качестве служб, чтобы обнаружение устройств работало правильно.AppID — это ваш ReceiverID, который является тем же идентификатором, который определен в вашем
GCKDiscoveryCriteria
.Обновите определение
NSBonjourServices
в следующем примере и замените «ABCD1234» своим идентификатором приложения. - Добавьте
NSLocalNetworkUsageDescription
в свойInfo.plist
.Мы настоятельно рекомендуем вам настроить сообщение, отображаемое в приглашении локальной сети, добавив строку разрешения для конкретного приложения в файл
Info.plist
вашего приложения дляNSLocalNetworkUsageDescription
, например, для описания обнаружения Cast и других служб обнаружения, таких как DIAL.Это сообщение появится как часть диалогового окна доступа к локальной сети iOS, как показано на макете.
- Повторно выпустите свое приложение в Apple App Store.
Мы рекомендуем вам также как можно скорее повторно выпустить приложение с использованием версии 4.7.0.
Настройки
Инициация обнаружения устройства трансляции
По умолчанию обнаружение устройства трансляции инициируется при первом нажатии пользователем кнопки трансляции ( GCKUICastButton
). Если это первая попытка пользователя использовать приложение Cast в локальной сети после обновления до iOS 14, появится новое межстраничное объявление LNA, а затем диалоговое окно разрешений доступа к локальной сети iOS.
Доступен новый флаг, позволяющий управлять запуском обнаружения устройств и поведением определенных элементов пользовательского интерфейса:
startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)
Значение по умолчанию — true
. Этот флаг применим только в том случае, если для флага GCKCastOptions::disableDiscoveryAutostart
установлено значение false
.
Если установлено значение true
, обнаружение устройства Cast начинается, когда пользователь впервые нажимает кнопку GCKUICastButton
. Информационное сообщение будет отображаться для пользователя, сообщая им, почему требуется разрешение локальной сети. После этого сообщения будет отображаться сообщение iOS 14 LNA. Обнаружение устройства трансляции начинается после подтверждения сообщения.
При последующих запусках приложения всегда отображается GCKUICastButton
.
Если установлено значение false
, обнаружение устройств начнется на основе значения флага GCKCastOptions::disableDiscoveryAutostart
.
Часто задаваемые вопросы
Что произойдет, если я повторно выпущу свое приложение отправителя Cast с Cast SDK v4.4.8 и Xcode 12?
Возможно, ваше приложение не сможет обнаруживать устройства Cast в локальной сети, если вы не получили разрешение на многоадресную рассылку от Apple. Обратите внимание, что Apple не будет предоставлять права многоадресной рассылки исключительно для поддержки Cast. Если вы планируете создавать с помощью Xcode 12, вы должны выпустить свое приложение с Cast 4.6.0.
Если я повторно выпущу свое приложение с новым Cast SDK, что получат мои пользователи, работающие на iOS 13 или более ранней версии?
Они по-прежнему будут видеть тот же пользовательский интерфейс, который был у них до повторного выпуска вашего приложения. Изменения, видимые пользователю, ограничены пользователями, работающими на iOS 14.
Что мне нужно будет сделать, чтобы обновить свое приложение после выпуска новой версии Cast SDK?
- Обновите
Info.plist
вашего приложения, чтобы включить описание использования локальной сети. - Добавьте
NSBonjourServices
вInfo.plist
вашего приложения и укажите имена служб Bonjour для Cast и идентификатор вашего приложения. - Обновите приложение отправителя, чтобы использовать Cast SDK 4.6.0.
- Перевыпустите свое приложение в магазине приложений Apple.
Почему устройства перестали отображаться в моем пользовательском средстве выбора устройств после обновления до версии 4.6.0?
Это известная проблема, которая может возникнуть при использовании пользовательского средства выбора устройств вместо стандартного средства выбора устройств. В версии 4.4.8 Cast SDK и более ранних версиях сканирование устройств было автоматическим. Начиная с версии 4.6.0 вам потребуется явно вызывать метод startDiscovery
в классе GCKDiscoveryManager
, чтобы инициировать обнаружение устройства.
Причина этого изменения заключается в том, что после первого сканирования приложением появится запрос на доступ к локальной сети (LNA). Это может привести к появлению диалоговых окон разрешений в случайных местах вашего приложения.
Ожидается, что разработчики, создающие собственное средство выбора устройств для своего приложения, предоставят одноразовое межстраничное объявление перед первым запуском сканирования устройства в iOS 14.
iOS 13
В iOS 13 были введены новые требования к разрешениям, которые влияют на приложения, использующие Google Cast SDK.
Начиная с Google Cast SDK версии 4.4.3, доступен дополнительный SDK без поддержки гостевого режима , для которого не требуется разрешение Bluetooth®. Это доступно как на сайте разработчика , так и на новых google-cast-sdk-no-bluetooth
Cocoapods. Напоминаем, что функция гостевого режима — это возможность приложения-отправителя обнаруживать транслируемые устройства в пределах определенной физической близости, не находясь в той же сети, используя PIN-код, отображаемый на устройствах с поддержкой гостевого режима.
Чтобы подготовить приложение для iOS 13, вам нужно решить, будете ли вы:
Необходимо сохранить поддержку гостевого режима
- Необходимо добавить ключ
Privacy - Bluetooth Always Usage Description
. - Добавьте строку, объясняющую использование Bluetooth® вашими пользователями, в свой
Info.plist
.
Необходимо удалить поддержку гостевого режима
- Не позволяет вашему приложению требовать требований Cast Bluetooth®.
- Интегрируйте последнюю версию Google Cast SDK без поддержки Bluetooth®.
- Это доступно как на сайте разработчика , так и на новых
google-cast-sdk-no-bluetooth
Cocoapods.
Разбивка приложения
Вот разбивка в зависимости от используемой версии iOS SDK:
Приложения, созданные с помощью iOS 12 SDK или более ранней версии
- Рекомендуемое действие . Производительность обнаружения устройств может снизиться при работе на iOS 13, но по-прежнему будет работать. Мы настоятельно рекомендуем разработчикам обновить Cast SDK до версии 4.4.4, если она доступна.
- iOS 13 предложит пользователям предоставить приложению разрешения Bluetooth®.
Приложения, созданные с помощью iOS 13 SDK
- Требуется действие . Обновите Cast SDK 4.4.4, иначе кнопка трансляции может не отображаться, если пользователь не предоставил разрешение на определение местоположения. Обновление до Cast SDK 4.4.4 необходимо для обеспечения надежной трансляции на iOS 13.
- Дополнительную информацию о том, как интегрировать гостевой режим или отказаться от гостевого режима с помощью Google Cast SDK и без поддержки Bluetooth®, см. в документации для разработчиков .