Начиная с iOS 14, операционная система будет применять новые ограничения и разрешения, влияющие на пользовательский интерфейс Cast. Это также повлияет на то, как вы встроите Cast SDK в своё приложение. Чтобы ваше приложение поддерживало функциональность Cast в последних версиях iOS, необходимо обновить его, чтобы учитывать эти изменения разрешений.
iOS 14
Разработчикам следует обновить свои приложения для отправки Cast на iOS до версии Google Cast SDK 4.6.0 или более поздней. Эти версии поддерживают iOS 14 и её требования.
Начиная с iOS 14, приложения, сканирующие устройства в локальной сети, теперь предлагают пользователям однократно запросить разрешения для поиска и подключения к устройствам в локальной сети. Платформа Cast использует локальную сеть для обнаружения и управления устройствами Cast, поэтому, если пользователь откажется от разрешения, трансляция будет невозможна.
Чтобы улучшить пользовательский опыт, мы вносим некоторые UX-изменения в SDK для приложений, использующих стандартный выбор устройств. Эти изменения делают необходимость доступа к локальной сети более очевидной для пользователей, а также объясняют, как включить трансляцию, если доступ к локальному сетевому устройству отключен.
Приложения, созданные с использованием 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 теперь должна отображаться всегда. Если при нажатии кнопки Cast нет доступных устройств, будет отображено диалоговое окно с инструкциями о причинах их отсутствия, включая информацию о том, как повторно включить разрешение на доступ к локальной сети.
Изменения в Cast SDK
Первый кастинг
При первой попытке трансляции появится промежуточное диалоговое окно доступа к локальной сети (LNA), объясняющее необходимость доступа к локальной сети, а затем — запрос на разрешение доступа к локальной сети iOS от Apple. Примеры ниже иллюстрируют процесс:
Трансляция недоступна
Начиная с версии iOS Sender SDK 4.6.0, кнопка Cast всегда отображается при подключении пользователя к Wi-Fi. Если устройства Cast недоступны, нажатие на кнопку Cast открывает диалоговое окно с подсказками о возможных причинах недоступности Cast, как показано на примерах ниже:
Обновление приложения на iOS 14
- Добавьте Cast iOS SDK 4.8.3 в свой проект
Если вы используете CocoaPods, используйте
pod update
, чтобы добавить SDK 4.8.3 в свой проект.В противном случае загрузите SDK вручную .
- Добавьте
NSBonjourServices
в вашInfo.plist
Укажите
NSBonjourServices
вInfo.plist
, чтобы разрешить успешное обнаружение локальной сети на iOS 14.Для корректной работы обнаружения устройств вам потребуется добавить
_googlecast._tcp
и_<your-app-id>._googlecast._tcp
в качестве служб.appID — это ваш receiverID, который совпадает с идентификатором, определенным в
GCKDiscoveryCriteria
.Обновите следующий пример определения
NSBonjourServices
и замените «ABCD1234» на ваш appID. - Добавьте
NSLocalNetworkUsageDescription
в вашInfo.plist
Мы настоятельно рекомендуем вам настроить сообщение, отображаемое в приглашении локальной сети, добавив строку разрешений, специфичную для приложения, в файл
Info.plist
вашего приложения дляNSLocalNetworkUsageDescription
, например для описания обнаружения Cast и других служб обнаружения, таких как DIAL.Это сообщение появится как часть диалогового окна «Доступ к локальной сети» iOS, как показано в макете.
- Повторно выпустите свое приложение в Apple App Store
Мы рекомендуем вам как можно скорее перевыпустить приложение с версией 4.8.3.
Настройки
Инициирование обнаружения Cast-устройства
По умолчанию обнаружение устройства Cast запускается при первом нажатии пользователем кнопки Cast ( GCKUICastButton
). Если пользователь впервые пытается использовать приложение Cast в локальной сети после обновления до iOS 14, появится новое промежуточное окно LNA, а затем диалоговое окно с разрешениями на доступ к локальной сети iOS.
Доступен новый флаг, позволяющий контролировать момент начала обнаружения устройств и поведение определенных элементов UX:
startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)
Значение по умолчанию — true
. Этот флаг применим только в том случае, если флаг GCKCastOptions::disableDiscoveryAutostart
имеет значение false
.
Если установлено значение true
, обнаружение устройств Cast запускается при первом нажатии пользователем кнопки GCKUICastButton
. Пользователю будет показано информационное сообщение с указанием причины необходимости разрешения на доступ к локальной сети. После этого сообщения будет отображено сообщение LNA iOS 14. Обнаружение устройств Cast запускается после подтверждения получения сообщения.
При последующих запусках приложения GCKUICastButton
всегда отображается.
Если установлено значение false
, обнаружение устройств начнется на основе значения флага GCKCastOptions::disableDiscoveryAutostart
.
Часто задаваемые вопросы
Что произойдет, если я перевыпущу свое приложение Cast Sender с 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?
Это известная проблема, которая может возникнуть при использовании пользовательского средства выбора устройств вместо стандартного. В версии Cast SDK 4.4.8 и более ранних версиях сканирование устройств выполнялось автоматически. Начиная с версии 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.
Разбивка приложения
Ниже приведена разбивка в зависимости от версии 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.