Permisos y detección de iOS

A partir de iOS 14, el sistema operativo aplicará restricciones y permisos nuevos que afectan la experiencia del usuario de Cast. También afectará la forma en que compilas el SDK de Cast en tu app. Si quieres que la app mantenga la funcionalidad de Cast con las versiones más recientes de iOS, debes realizar actualizaciones para controlar estos cambios en los permisos.

iOS 14

Los desarrolladores deben actualizar sus apps emisoras de iOS Cast a la versión 4.6.0 o posterior del SDK de Google Cast. Estas versiones son compatibles con iOS 14 y sus requisitos.

A partir de iOS 14, las aplicaciones que buscan dispositivos en la red local ahora les solicitarán a los usuarios un diálogo de permisos único para buscar dispositivos de la red local y conectarse a ellos. La plataforma de Cast usa la red local para descubrir y controlar los dispositivos de transmisión, por lo que no podrá transmitir contenido si el usuario rechaza el permiso.

Para mejorar la experiencia del usuario, realizaremos algunas modificaciones en la UX del SDK para las apps que usen el selector de dispositivos estándar. Estas modificaciones de UX hacen que sea más evidente para los usuarios por qué se necesitan los permisos de acceso a la red local y cómo habilitar la transmisión si se inhabilitó el acceso al dispositivo de la red local.

Las apps compiladas con versiones del SDK de Cast usando la versión 4.4.8 o una anterior seguirán funcionando, siempre y cuando se hayan compilado con Xcode 11.7 o una versión anterior. Si realizas compilaciones para iOS 14 con Xcode 12 o una versión posterior, te recomendamos que actualices a la versión 4.6.0 o posterior del SDK de Cast para asegurarte de que la app de Cast siga funcionando correctamente.

Puedes descargar la versión 4.6.0 (o una posterior) del SDK de Cast para iOS con CocoaPods si sigues la configuración de CocoaPods o de forma manual siguiendo los pasos de configuración manual. Esta versión incluye cambios en el mecanismo de descubrimiento subyacente para permitir que las apps compiladas con Xcode 12 encuentren dispositivos de transmisión en la red. El botón para transmitir ahora debería aparecer siempre. Si no hay dispositivos disponibles cuando el usuario presione el botón para transmitir, aparecerá un diálogo con orientación sobre los motivos por los que los dispositivos podrían no estar disponibles, lo que incluye información sobre cómo volver a habilitar el permiso de acceso a la red local.

Cambios en el SDK de Cast

Primera transmisión

La primera vez que un usuario intente transmitir contenido, aparecerá un diálogo intersticial de acceso a la red local (LNA) en el que se explicará por qué se necesita el acceso a la red local, seguido de la solicitud de permisos de acceso a la red local de iOS proporcionada por Apple. Las siguientes simulaciones ilustran el flujo:

Flujo de permisos de acceso a la red local

Transmisión no disponible

A partir del SDK remitente de iOS 4.6.0, el botón para transmitir siempre aparece cuando el usuario está conectado a Wi-Fi. Cuando los dispositivos de transmisión no están disponibles, si presionas el botón para transmitir, aparece un diálogo que le indica al usuario las posibles razones por las que Cast no está disponible, como se muestra en los siguientes ejemplos:

Flujo con transmisión no disponible

Cómo actualizar su aplicación en iOS 14

  1. Agrega el SDK de Cast para iOS 4.8.1 a tu proyecto

    Si usas CocoaPods, usa pod update para agregar el SDK 4.8.1 a tu proyecto.

    De lo contrario, extrae el SDK de forma manual.

  2. Agrega NSBonjourServices a tu Info.plist

    Especifica NSBonjourServices en tu Info.plist para permitir que el descubrimiento de redes locales se realice correctamente en iOS 14.

    Deberás agregar _googlecast._tcp y _<your-app-id>._googlecast._tcp como servicios para que la detección de dispositivos funcione correctamente.

    El appID es tu receptorID, que es el mismo ID que se define en tu GCKDiscoveryCriteria.

    Actualiza la siguiente definición de ejemplo de NSBonjourServices y reemplaza “ABCD1234” por el ID de tu app.

    <key>NSBonjourServices</key>
    <array>
      <string>_googlecast._tcp</string>
      <string>_ABCD1234._googlecast._tcp</string>
    </array>
  3. Agrega NSLocalNetworkUsageDescription a tu Info.plist

    Te recomendamos que personalices el mensaje que se muestra en el mensaje de red local. Para ello, agrega una cadena de permiso específica de la app en el archivo Info.plist de la app para el NSLocalNetworkUsageDescription, de modo que se describa la detección de Cast y otros servicios de detección, como DIAL.

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} usa la red local para detectar dispositivos compatibles con Cast en tu red Wi-Fi.</string>

    Este mensaje aparecerá como parte del diálogo de Acceso a la red local de iOS, como se muestra en la simulación.

    Imagen del diálogo de permisos de acceso a la red local de Cast
  4. Vuelve a lanzar la app en la App Store de Apple

    Te recomendamos que también vuelvas a lanzar tu app con 4.8.1 lo antes posible.

Personalizaciones

Inicio del descubrimiento de dispositivos de transmisión

De forma predeterminada, la detección de dispositivos de transmisión se inicia la primera vez que el usuario presiona el botón para transmitir (GCKUICastButton). Si es la primera vez que el usuario intenta usar la app de Cast en la red local después de actualizar a iOS 14, aparecerá el nuevo anuncio intersticial de LNA, seguido del diálogo de permisos de acceso a la red local de iOS.

Hay una nueva marca disponible que te permite controlar cuándo comienza la detección de dispositivos y el comportamiento de ciertos elementos de la UX:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

El valor predeterminado es true. Esta marca solo es aplicable cuando la marca GCKCastOptions::disableDiscoveryAutostart se establece en false.

Si la estableces como true, el descubrimiento de dispositivos de transmisión comenzará cuando un usuario presione GCKUICastButton por primera vez. Se mostrará un mensaje informativo al usuario para informarle por qué se necesita el permiso de red local. Luego de ese mensaje, se mostrará el mensaje de LNA de iOS 14. La detección del dispositivo de transmisión comienza después de que se confirma el mensaje.

En inicios posteriores de la app, siempre se mostrará GCKUICastButton.

Si se establece en false, la detección de dispositivos comenzará según el valor de la marca GCKCastOptions::disableDiscoveryAutostart.

Preguntas frecuentes

¿Qué sucede si vuelvo a lanzar mi app emisora de Cast con el SDK de Cast v4.4.8 y Xcode 12?

Es posible que tu app no pueda detectar dispositivos de transmisión en la red local, a menos que hayas obtenido un derecho multicast de red de Apple. Ten en cuenta que Apple no otorgará derechos de multidifusión únicamente con el objetivo de admitir Cast. Si planeas compilar con Xcode 12, debes lanzar tu app con Cast 4.6.0.

Si vuelvo a lanzar mi app con el nuevo SDK de Cast, ¿qué experimentarán los usuarios que ejecutan iOS 13 o versiones anteriores?

Seguirán viendo la misma experiencia del usuario que tenían antes de volver a lanzar la app. Los cambios visibles para el usuario se limitan a los usuarios que ejecutan iOS 14.

¿Qué tendré que hacer para actualizar mi app cuando se lance la nueva versión del SDK de Cast?

  • Actualiza el Info.plist de tu app para incluir una descripción del uso de la red local.
  • Agrega NSBonjourServices al Info.plist de tu app y proporciona los nombres de servicio de Bonjour para Cast y el ID de tu app.
  • Actualiza tu app emisora para usar el SDK de Cast 4.6.0.
  • Vuelve a lanzar la app en la App Store de Apple.

¿Por qué los dispositivos dejaron de aparecer en mi selector de dispositivos personalizado después de actualizar a la versión 4.6.0?

Este es un problema conocido que puede ocurrir si usas un selector de dispositivos personalizado en lugar del selector de dispositivos estándar. En la versión 4.4.8 del SDK de Cast y en versiones anteriores, el análisis de dispositivos era automático. A partir de la versión 4.6.0, deberás llamar de manera explícita al método startDiscovery en la clase GCKDiscoveryManager para iniciar la detección de dispositivos.

El motivo de este cambio es que la solicitud de permisos de Acceso a la red local (LNA) aparecerá después de que la app realice el análisis por primera vez. Como resultado, podrían aparecer diálogos de permisos en lugares aleatorios de tu app.

Se espera que los desarrolladores que compilen un selector de dispositivos personalizado para su app proporcionen un anuncio intersticial único antes de iniciar el análisis de dispositivos por primera vez en iOS 14.

iOS 13

En iOS 13, se agregaron nuevos requisitos de permisos que afectan a las apps que usan el SDK de Google Cast.

A partir de la versión 4.4.3 del SDK de Google Cast, hay un SDK adicional que no requiere permiso de Bluetooth®. Está disponible en el sitio para desarrolladores y en la nueva versión de CocoaPods google-cast-sdk-no-bluetooth.

Desglose de apps

A continuación, se muestra un desglose según la versión del SDK de iOS que uses actualmente:

Aplicaciones compiladas con el SDK de iOS 12 o versiones anteriores

  • Acción recomendada. El rendimiento de la detección de dispositivos puede disminuir cuando se ejecuta en iOS 13, pero seguirá funcionando. Recomendamos que los desarrolladores actualicen al SDK de Cast 4.4.4 cuando esté disponible.
  • iOS 13 solicitará a los usuarios que otorguen permisos de Bluetooth® a la app.

Aplicaciones compiladas con el SDK de iOS 13

  • Acción obligatoria: Actualiza al SDK de Cast 4.4.4. De lo contrario, es posible que no aparezca el botón para transmitir si el usuario no otorga permiso de ubicación. Debes actualizar al SDK de Cast 4.4.4 para garantizar una experiencia de transmisión confiable en iOS 13.