Приложения, которые сканируют устройства в локальной сети, теперь будут показывать пользователям диалоговое окно с запросом однократного разрешения на поиск устройств в локальной сети и подключение к ним. Платформа Cast использует локальную сеть, чтобы находить устройства с поддержкой Cast и управлять ими. Если пользователь не предоставит разрешение, он не сможет транслировать контент.
Чтобы улучшить взаимодействие с приложением, мы внесли изменения в интерфейс SDK для приложений, в которых используется стандартный выбор устройства. Эти изменения в интерфейсе помогут пользователям понять, зачем нужны разрешения на доступ к локальной сети и как включить трансляцию, если доступ к устройствам локальной сети отключен.
Cast iOS SDK версии 4.6.0 или более поздней можно добавить с помощью Swift Package Manager, следуя инструкциям по настройке, или скачать вручную, следуя инструкциям по настройке. В этой версии изменен основной механизм обнаружения, чтобы приложения, созданные с помощью Xcode 12, могли находить устройства Cast в сети. Кнопка трансляции должна отображаться всегда. Если при нажатии на кнопку Cast устройства будут недоступны, появится диалоговое окно с информацией о том, почему это может происходить, и инструкциями по повторному включению доступа к локальной сети.
Изменения в Cast SDK
Первая трансляция
При первой попытке использовать Cast появится диалоговое окно с объяснением, почему требуется доступ к локальной сети (LNA), а затем запрос на разрешение доступа к локальной сети от Apple. Ниже приведены макеты, иллюстрирующие процесс:

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

Обновление приложения
-
Как добавить Cast iOS SDK 4.8.6 в проект
Если вы используете Swift Package Manager, обновите пакет
google-cast-ios-sdkдо версии 4.8.6.В противном случае добавьте SDK вручную.
-
Добавьте
NSBonjourServicesвInfo.plistУкажите
NSBonjourServicesвInfo.plist, чтобы разрешить обнаружение локальной сети.Чтобы обнаружение устройств работало правильно, вам нужно добавить в качестве сервисов
_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.6.
Настройки
Инициация обнаружения Cast-устройства
По умолчанию поиск устройств Cast запускается, когда пользователь впервые нажимает кнопку Cast (GCKUICastButton). Если пользователь впервые пытается использовать приложение Cast в локальной сети, сначала появится новое межстраничное объявление LNA, а затем диалоговое окно с запросом разрешения на доступ к локальной сети iOS.
Добавлен новый флаг, позволяющий контролировать начало обнаружения устройств и поведение некоторых элементов интерфейса:
startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)
Значение по умолчанию: true. Этот флаг применяется, только если флаг GCKCastOptions::disableDiscoveryAutostart имеет значение false.
Если задано значение true, поиск Cast-устройств начнется, когда пользователь впервые нажмет на кнопку GCKUICastButton. Пользователь увидит информационное сообщение с объяснением, зачем нужно разрешение на доступ к локальной сети. После этого сообщения будет показано сообщение LNA для iOS.
Поиск устройств для трансляции начнется после того, как вы подтвердите сообщение.
При последующих запусках приложения значок GCKUICastButton будет отображаться всегда.
Если задано значение false, обнаружение устройств начнется на основе значения флага GCKCastOptions::disableDiscoveryAutostart.
Часто задаваемые вопросы
Что произойдет, если я повторно выпущу приложение отправителя Cast с SDK Cast версии 4.4.8 и Xcode 12?
Ваше приложение может не обнаружить Cast-устройства в локальной сети, если вы не получили от Apple разрешение на использование многоадресной рассылки. Обратите внимание, что Apple не будет предоставлять права на многоадресную передачу исключительно для поддержки Cast. Если вы планируете использовать Xcode 12, выпустите приложение с Cast 4.6.0.
Что нужно будет сделать, чтобы обновить приложение после выпуска новой версии Cast SDK?
- Добавьте в файл
Info.plistприложения описание использования локальной сети. - Добавьте
NSBonjourServicesв приложение.Info.plistУкажите названия сервисов Bonjour для Cast и идентификатор приложения. - Обновите приложение отправителя, чтобы использовать Cast SDK 4.6.0.
- Перевыпустите приложение в Apple App Store.
Почему после обновления до версии 4.6.0 устройства перестали показываться в специальном инструменте выбора устройств?
Это известная проблема, которая может возникнуть, если вы используете не стандартный, а собственный инструмент выбора устройств. В версии 4.4.8 и более ранних версиях Cast SDK сканирование устройств выполнялось автоматически. Начиная с версии 4.6.0, для запуска обнаружения устройств необходимо явно вызвать метод startDiscovery класса
GCKDiscoveryManager.
Это связано с тем, что запрос разрешения на доступ к локальной сети (LNA) будет появляться после того, как приложение выполнит первое сканирование. В результате диалоговые окна с запросами разрешений могут появляться в приложении в случайных местах.
Разработчики, создающие для своих приложений собственный инструмент выбора устройств, должны показывать одноразовое межстраничное объявление перед первым сканированием устройств.