Приложения, которые сканируют локальную сеть на наличие устройств, теперь будут показывать пользователям диалоговое окно с запросом на разовое разрешение на поиск устройств в локальной сети и подключение к ним. Платформа Cast использует локальную сеть для обнаружения устройств Cast и управления ими. Если пользователь не предоставит разрешение, он не сможет транслировать контент.
Чтобы улучшить взаимодействие с пользователем, мы вносим некоторые изменения в UX SDK для тех приложений, которые используют стандартное средство выбора устройств. Эти изменения в UX помогают пользователям понять, зачем нужны разрешения на доступ к локальной сети и как включить трансляцию, если доступ к устройству в локальной сети отключен.
Cast iOS SDK версии 4.6.0 или более поздней можно добавить с помощью Swift Package Manager, следуя инструкциям, или скачать вручную, следуя инструкциям. В этом выпуске изменен базовый механизм обнаружения, чтобы приложения, созданные с помощью Xcode 12, могли находить устройства Cast в сети. Теперь кнопка трансляции должна показываться всегда. Если при нажатии кнопки трансляции доступных устройств не окажется, появится диалоговое окно с информацией о том, почему это могло произойти, и инструкциями по повторному включению доступа к локальной сети.
Изменения в Cast SDK
Первая трансляция
При первой попытке трансляции появится промежуточное диалоговое окно с объяснением, зачем нужен доступ к локальной сети, а затем – запрос на предоставление доступа к локальной сети iOS от 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 – это идентификатор приемника, который совпадает с идентификатором, указанным в
GCKDiscoveryCriteria.Обновите определение
NSBonjourServicesв примере ниже, заменив ABCD1234 на идентификатор своего приложения. -
Добавьте
NSLocalNetworkUsageDescriptionвInfo.plistМы настоятельно рекомендуем настроить сообщение, которое показывается в запросе на доступ к локальной сети. Для этого добавьте в файл
Info.plistстроку разрешения дляNSLocalNetworkUsageDescription, например с описанием обнаружения Cast и других сервисов обнаружения, таких как DIAL.Это сообщение будет показываться в диалоговом окне iOS "Доступ к локальной сети", как показано на макете.
-
Как повторно опубликовать приложение в Apple App Store
Рекомендуем как можно скорее выпустить новую версию приложения с SDK 4.8.6.
Настройки
Запуск поиска устройств Cast
По умолчанию поиск устройств Cast начинается, когда пользователь впервые нажимает кнопку трансляции (GCKUICastButton). Если пользователь впервые пытается использовать приложение Cast в локальной сети, появится новое промежуточное окно LNA, а затем диалоговое окно разрешений на доступ к локальной сети iOS.
Добавлен новый параметр, позволяющий управлять запуском обнаружения устройств и поведением некоторых элементов интерфейса:
startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)
Значение по умолчанию: true. Этот флаг применяется, только если для флага GCKCastOptions::disableDiscoveryAutostart установлено значение false.
Если задано значение true, поиск устройств Cast начинается, когда пользователь впервые нажимает на GCKUICastButton. Пользователь увидит информационное сообщение о том, зачем нужно разрешение на доступ к локальной сети. После этого будет показано сообщение LNA для iOS.
Поиск устройств Cast начнется после подтверждения сообщения.
При последующих запусках приложения всегда показывается GCKUICastButton.
Если задано значение false, обнаружение устройств будет запускаться на основе значения параметра GCKCastOptions::disableDiscoveryAutostart.
Часто задаваемые вопросы
Что произойдет, если я повторно выпущу приложение-отправитель Cast с Cast SDK версии 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) появится после первого сканирования. В противном случае диалоговые окна с запросом разрешений могут появляться в случайных местах приложения.
Разработчики, которые создают собственное средство выбора устройств для своего приложения, должны будут предоставить одноразовую межстраничную рекламу перед первым запуском сканирования устройств.