Permisos y detección de iOS

Las aplicaciones que analizan dispositivos en la red local ahora mostrarán a los usuarios un diálogo de permiso único para encontrar dispositivos de red local y conectarse a ellos. La plataforma de Cast usa la red local para descubrir y controlar los dispositivos de Cast, por lo que, si el usuario rechaza el permiso, no podrá transmitir contenido.

Para mejorar la experiencia del usuario, realizaremos algunas modificaciones de UX en el SDK para las apps que usan el selector de dispositivos estándar. Estas modificaciones de UX les dejan más claro a 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 a los dispositivos de la red local.

El SDK de Cast para iOS v4.6.0 o posterior se puede agregar con Swift Package Manager siguiendo la configuración de Swift Package Manager o descargándolo manualmente siguiendo la 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. Ahora, el botón para transmitir debería mostrarse siempre. Si no hay dispositivos disponibles cuando el usuario presiona el botón para transmitir, se mostrará un diálogo con orientación sobre por qué es posible que no haya dispositivos disponibles, incluida información para volver a habilitar el permiso de acceso a la red local.

Cambios en el SDK de Cast

Cómo transmitir contenido por primera vez

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 este acceso, seguido del mensaje de permisos de acceso a la red local de iOS proporcionado por Apple. Las siguientes simulaciones ilustran el flujo:

Flujo de permisos de acceso a la red local

La transmisión no está disponible

A partir del SDK de la app emisora para iOS 4.6.0, el botón para transmitir siempre aparece cuando el usuario está conectado a una red Wi-Fi. Cuando los dispositivos Cast no están disponibles, presionar el botón para transmitir abre un diálogo que le da al usuario sugerencias sobre los posibles motivos por los que Cast no está disponible, como se muestra en las siguientes simulaciones:

Flujo con Cast no disponible

Cómo actualizar tu app

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

    Si usas Swift Package Manager, actualiza el paquete google-cast-ios-sdk a la versión 4.8.6.

    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 la detección de red local se realice correctamente.

    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 ejemplo de NSBonjourServices 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 la red local. Para ello, agrega una cadena de permiso específica de la app en el archivo Info.plist de tu app para el NSLocalNetworkUsageDescription, como para describir el descubrimiento de Cast y otros servicios de descubrimiento, 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 de Cast
  4. Vuelve a lanzar tu app en la tienda de aplicaciones de Apple

    Te recomendamos que también vuelvas a lanzar tu app con la versión 4.8.6 lo antes posible.

Personalizaciones

Inicio del descubrimiento de dispositivos de transmisión

De forma predeterminada, el descubrimiento 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, aparecerá el nuevo anuncio intersticial de LNA, seguido del diálogo de permisos de acceso a la red local de iOS.

Hay un nuevo parámetro disponible para que puedas controlar cuándo se inicia el descubrimiento 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 establece en true, el descubrimiento de dispositivos de transmisión se inicia cuando un usuario presiona GCKUICastButton por primera vez. Se mostrará un mensaje informativo al usuario para que sepa por qué se necesita el permiso de red local. Después de ese mensaje, se mostrará el mensaje de LNA de iOS. 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, el descubrimiento de dispositivos se iniciará según el valor del parámetro GCKCastOptions::disableDiscoveryAutostart.

Preguntas frecuentes

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

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

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

  • Actualiza el archivo Info.plist de tu app para incluir una descripción del uso de la red local.
  • Agrega NSBonjourServices al archivo 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 tu app en la tienda de aplicaciones de Apple.

¿Por qué los dispositivos dejaron de aparecer en mi selector de dispositivos personalizado después de que actualicé 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 las anteriores, el análisis de dispositivos era automático. 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 el descubrimiento 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 el primer análisis. Esto podría provocar que los diálogos de permisos aparezcan en lugares aleatorios de tu app.

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