Начиная с iOS 14, операционная система будет вводить новые ограничения и разрешения, которые повлияют на пользовательский опыт Cast. Это также повлияет на то, как вы будете интегрировать SDK Cast в свое приложение. Чтобы ваше приложение сохраняло функциональность Cast в последних версиях iOS, вам необходимо внести обновления, учитывающие эти изменения в разрешениях.
iOS 14
Разработчикам следует обновить свои приложения для отправки Cast на iOS до 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.
iOS SDK Cast версии 4.6.0 или более поздней можно загрузить с помощью CocoaPods, следуя инструкциям по установке CocoaPods , или вручную, следуя инструкциям по ручной установке . В этом релизе внесены изменения в базовый механизм обнаружения, позволяющие приложениям, созданным с помощью Xcode 12, находить устройства Cast в сети. Кнопка Cast теперь должна отображаться всегда. Если при нажатии пользователем кнопки Cast устройства недоступны, отобразится диалоговое окно с объяснением причин недоступности устройств, включая информацию о том, как повторно включить разрешение на доступ к локальной сети.
Изменения в Cast SDK
Первый кастинг
При первой попытке трансляции пользователем появится диалоговое окно доступа к локальной сети (LNA), объясняющее необходимость доступа к локальной сети, после чего будет предложено предоставить Apple разрешение на доступ к локальной сети в iOS. Приведенные ниже примеры иллюстрируют этот процесс:

Актерский состав недоступен
Начиная с iOS Sender SDK 4.6.0, кнопка Cast всегда отображается, когда пользователь подключен к Wi-Fi. Если устройства Cast недоступны, нажатие на кнопку Cast вызывает диалоговое окно с подсказками о возможных причинах недоступности Cast, как показано на приведенных ниже примерах:

Обновление вашего приложения на iOS 14
- Добавьте Cast iOS SDK 4.8.4 в свой проект.
Если вы используете CocoaPods, воспользуйтесь командой
pod update, чтобы добавить SDK версии 4.8.4 в свой проект.В противном случае, подключите 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.8.4.
Настройки
инициирование обнаружения устройства Cast
По умолчанию обнаружение устройств Cast запускается при первом нажатии пользователем кнопки Cast ( GCKUICastButton ). Если это первая попытка пользователя использовать приложение Cast в локальной сети после обновления до iOS 14, появится новое всплывающее окно LNA, за которым последует диалоговое окно разрешений доступа к локальной сети iOS.
Появился новый флаг, позволяющий управлять моментом начала обнаружения устройств и поведением определенных элементов пользовательского интерфейса:
startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)
Значение по умолчанию — true . Этот флаг применяется только в том случае, если флаг GCKCastOptions::disableDiscoveryAutostart установлен в false .
Если установлено значение true , обнаружение устройств Cast начинается при первом нажатии пользователем кнопки GCKUICastButton . Пользователю будет показано информационное сообщение, объясняющее, почему требуется разрешение на доступ к локальной сети. После этого сообщения отобразится сообщение iOS 14 LNA. Обнаружение устройств Cast начинается после подтверждения получения сообщения.
При последующих запусках приложения GCKUICastButton всегда отображается.
Если установить значение false , обнаружение устройств начнется на основе значения флага GCKCastOptions::disableDiscoveryAutostart .
Часто задаваемые вопросы
Что произойдет, если я повторно выпущу свое приложение-отправитель Cast с использованием Cast SDK версии 4.4.8 и Xcode 12?
Ваше приложение может не обнаруживать устройства Cast в локальной сети, если вы не получили разрешение на многоадресную рассылку от Apple. Обратите внимание, что Apple не будет предоставлять разрешения на многоадресную рассылку исключительно для поддержки Cast. Если вы планируете использовать Xcode 12, вам следует выпустить приложение с Cast 4.6.0.
Если я выпущу своё приложение заново с новым SDK Cast, что увидят пользователи 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 были введены новые требования к разрешениям, которые затрагивают приложения, использующие SDK Google Cast.
Начиная с Google Cast SDK версии 4.4.3, доступен дополнительный SDK, не требующий разрешения Bluetooth®. Он доступен как на сайте разработчиков , так и на новых устройствах Cocoapods google-cast-sdk-no-bluetooth .
Сбой приложения
Вот подробная информация в зависимости от версии используемого вами iOS SDK:
Приложения, созданные с использованием SDK iOS 12 или более ранних версий.
- Рекомендуемые действия . Производительность обнаружения устройств может снизиться при работе на iOS 13, но функция останется работоспособной. Мы настоятельно рекомендуем разработчикам обновить Cast SDK до версии 4.4.4, как только она станет доступна.
- В iOS 13 пользователям будет предложено предоставить приложению разрешение на использование Bluetooth®.
Приложения, созданные с использованием SDK iOS 13.
- Необходимые действия : Обновите Cast SDK до версии 4.4.4, иначе кнопка трансляции может не отображаться, если пользователь не предоставит разрешение на определение местоположения. Обновление до Cast SDK 4.4.4 необходимо для обеспечения надежной трансляции на iOS 13.