Permisos y detección de iOS

A partir de iOS 14, el sistema operativo aplicará nuevas restricciones y permisos que afectarán la experiencia del usuario de Cast. También afectará la forma en que compiles el SDK de Cast en tu app. Para que tu 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 de remitente de Cast para iOS al SDK de Google Cast v4.6.0 o posterior. Estas versiones son compatibles con iOS 14 y sus requisitos.

A partir de iOS 14, las aplicaciones que analicen la red local ahora mostrarán a los usuarios un diálogo de permisos únicos para encontrar dispositivos de la red local y conectarse a ellos. La plataforma de Cast usa la red local para descubrir y controlar dispositivos Cast, por lo que, si el usuario rechaza el permiso, no podrá transmitir contenido.

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

Las apps compiladas con versiones del SDK de Cast que usan la versión 4.4.8 o anterior seguirán funcionando siempre que se compilen con Xcode 11.7 o una versión anterior. Si compilas para iOS 14 con Xcode 12 o versiones posteriores, te recomendamos que actualices el SDK de Cast a la versión 4.6.0 o posterior para garantizar que tu app de Cast siga funcionando correctamente.

El SDK de Cast para iOS v4.6.0 o versiones posteriores se puede descargar con CocoaPods siguiendo la configuración de CocoaPods o de forma manual siguiendo la configuración manual. Esta versión incluye cambios en el mecanismo de detección subyacente para permitir que las apps compiladas con Xcode 12 encuentren dispositivos Cast en la red. El botón para transmitir ahora debería mostrarse siempre. Si no hay dispositivos disponibles cuando el usuario presiona el botón de Cast, se mostrará un diálogo con orientación sobre por qué es posible que los dispositivos no estén disponibles, incluida información para 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, 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. En las siguientes simulaciones, se ilustra el flujo:

Flujo de permisos de acceso a la red local

Cast no está disponible

A partir de la versión 4.6.0 del SDK de Cast para iOS, el botón de Cast siempre aparece cuando el usuario está conectado a Wi-Fi. Cuando los dispositivos de transmisión no están disponibles, si se presiona el botón de transmisión, aparece un diálogo que le brinda al usuario sugerencias sobre los posibles motivos por los que no está disponible la transmisión, como se muestra en las simulaciones a continuación:

Flow con Cast no disponible

Actualiza tu app en iOS 14

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

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

    De lo contrario, incluye el SDK de forma manual.

  2. Agrega NSBonjourServices a tu Info.plist

    Especifica NSBonjourServices en tu Info.plist para permitir que la detección de red local se realice correctamente en iOS 14.

    Deberás agregar _googlecast._tcp y _<your-app-id>._googlecast._tcp como servicios para que el descubrimiento de dispositivos funcione correctamente.

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

    Actualiza la siguiente definición de NSBonjourServices de ejemplo y reemplaza "ABCD1234" por tu appID.

    <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 agregando una cadena de permiso específica de la app en el archivo Info.plist de tu app para NSLocalNetworkUsageDescription, por ejemplo, para describir la detección de Cast y otros servicios de detección, como DIAL.

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi
    network.</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 para transmitir
  4. Vuelve a lanzar tu app en la App Store de Apple

    También te recomendamos que vuelvas a lanzar tu app con la versión 4.8.3 lo antes posible.

Personalizaciones

Inicio de la detección de dispositivos compatibles con Cast

De forma predeterminada, el descubrimiento de dispositivos Cast se inicia la primera vez que el usuario presiona el botón de Cast (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 mensaje 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 se aplica cuando la marca GCKCastOptions::disableDiscoveryAutostart se establece en false.

Si se configura como true, la detección de dispositivos Cast se inicia cuando un usuario presiona el botón GCKUICastButton por primera vez. Se mostrará un mensaje informativo al usuario para indicarle por qué se necesita el permiso de red local. Después de ese mensaje, se mostrará el mensaje de LNA de iOS 14. El descubrimiento de dispositivos de transmisión comienza después de que se confirma el mensaje.

En los lanzamientos posteriores de la app, siempre se muestra GCKUICastButton.

Si se establece en false, se iniciará el descubrimiento del dispositivo según el valor de la marca GCKCastOptions::disableDiscoveryAutostart.

Preguntas frecuentes

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

Es posible que tu app no pueda descubrir dispositivos Cast en la red local, a menos que hayas obtenido un derecho de multidifusión de redes de Apple. Ten en cuenta que Apple no otorgará derechos de transmisión multidifusión solo para 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é experiencia tendrán los usuarios que ejecuten iOS 13 o versiones anteriores?

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

¿Qué debo 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 de envío para que use el SDK de Cast 4.6.0.
  • Vuelve a lanzar tu app en la Apple App Store.

¿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 versiones anteriores, la búsqueda de dispositivos era automática. A partir de la versión 4.6.0, deberás llamar de forma explícita al método startDiscovery en la clase GCKDiscoveryManager para iniciar la detección de dispositivos.

El motivo de este cambio es que el mensaje de permisos de acceso a la red local (LNA) aparecerá después de que la app haya realizado la primera búsqueda. Esto podría provocar que aparezcan diálogos de permisos en lugares aleatorios de tu app.

Se espera que los desarrolladores que creen un selector de dispositivos personalizado para su app proporcionen un mensaje intersticial único antes de iniciar la búsqueda de dispositivos por primera vez en iOS 14.

iOS 13

Con iOS 13, se introdujeron 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 disponible un SDK adicional que no requiere permiso de Bluetooth®. Está disponible tanto en el sitio para desarrolladores como en el nuevo google-cast-sdk-no-bluetooth Cocoapods.

Desglose de la app

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

Apps compiladas con el SDK de iOS 12 o versiones anteriores

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

Apps creadas con el SDK de iOS 13

  • Acción obligatoria: Actualiza el SDK de Cast a la versión 4.4.4 o es posible que no aparezca el botón de transmisión si el usuario no otorga el permiso de ubicación. Es necesario actualizar el SDK de Cast a la versión 4.4.4 para garantizar una experiencia de transmisión confiable en iOS 13.