Autorisations et visibilité sur iOS

À partir d'iOS 14, le système d'exploitation appliquera de nouvelles restrictions et autorisations qui affecteront l'expérience utilisateur de Cast. Cela affectera également la façon dont vous intégrerez le SDK Cast dans votre application. Pour que votre application conserve la fonctionnalité Cast avec les dernières versions d'iOS, vous devez effectuer des mises à jour pour gérer ces modifications d'autorisations.

iOS 14

Les développeurs doivent mettre à jour leurs applications d'envoi Cast sur iOS vers la version 4.6.0 ou ultérieure du SDK Google Cast. Ces versions sont compatibles avec iOS 14 et ses exigences.

À partir d'iOS 14, les applications qui recherchent des appareils sur le réseau local inviteront désormais les utilisateurs à afficher une boîte de dialogue d'autorisation unique pour rechercher et se connecter aux appareils du réseau local. La plate-forme Cast utilise le réseau local pour détecter et contrôler les appareils Cast. Par conséquent, si l'utilisateur refuse l'autorisation, il ne pourra pas caster.

Pour améliorer l'expérience utilisateur, nous apportons quelques modifications à l'UX du SDK pour les applications qui utilisent le sélecteur d'appareil standard. Ces modifications de l'expérience utilisateur permettent aux utilisateurs de comprendre plus facilement pourquoi les autorisations d'accès au réseau local sont nécessaires, ainsi que la procédure à suivre pour activer le cast si l'accès aux appareils du réseau local a été désactivé.

Les applications créées avec des versions du SDK Cast utilisant la version 4.4.8 ou antérieure continueront de fonctionner tant qu'elles seront créées avec Xcode 11.7 ou version antérieure. Si vous créez une application pour iOS 14 avec Xcode 12 ou version ultérieure, nous vous recommandons de passer à la version 4.6.0 ou ultérieure du SDK Cast pour vous assurer que votre application Cast continuera de fonctionner correctement.

Vous pouvez télécharger le SDK Cast iOS 4.6.0 ou version ultérieure avec CocoaPods en suivant la configuration CocoaPods ou manuellement en suivant la configuration manuelle. Cette version inclut des modifications apportées au mécanisme de découverte sous-jacent pour permettre aux applications créées avec Xcode 12 de trouver des appareils Cast sur le réseau. Le bouton Cast devrait désormais toujours s'afficher. Si aucun appareil n'est disponible lorsque l'utilisateur appuie sur le bouton Cast, une boîte de dialogue s'affiche pour expliquer pourquoi les appareils ne sont peut-être pas disponibles, y compris comment réactiver l'autorisation d'accès au réseau local.

Modifications apportées au SDK Cast

Première diffusion

La première fois qu'un utilisateur tente de caster du contenu, une boîte de dialogue interstitielle d'accès au réseau local (LNA) s'affiche pour expliquer pourquoi cet accès est nécessaire, suivie de l'invite d'autorisation d'accès au réseau local iOS fournie par Apple. Les simulations ci-dessous illustrent le flux:

Flux d'autorisations d'accès au réseau local

Cast indisponible

À partir du SDK d'envoi iOS 4.6.0, le bouton Cast s'affiche toujours lorsque l'utilisateur est connecté au Wi-Fi. Lorsque les appareils Cast ne sont pas disponibles, appuyer sur le bouton Cast affiche une boîte de dialogue qui donne à l'utilisateur des indications sur les raisons possibles de l'indisponibilité de Cast, comme illustré dans les modèles ci-dessous:

Flux avec Cast indisponible

Mettre à jour votre application sur iOS 14

  1. Ajouter le SDK Cast iOS 4.8.3 à votre projet

    Si vous utilisez CocoaPods, utilisez pod update pour ajouter le SDK 4.8.3 à votre projet.

    Sinon, importez manuellement le SDK.

  2. Ajouter NSBonjourServices à votre Info.plist

    Spécifiez NSBonjourServices dans votre Info.plist pour permettre la découverte du réseau local sur iOS 14.

    Vous devez ajouter _googlecast._tcp et _<your-app-id>._googlecast._tcp en tant que services pour que la découverte d'appareils fonctionne correctement.

    L'appID correspond à votre ID de récepteur, qui est le même que celui défini dans votre GCKDiscoveryCriteria.

    Modifiez l'exemple de définition NSBonjourServices suivant et remplacez "ABCD1234" par votre appID.

    <key>NSBonjourServices</key>
    <array>
      <string>_googlecast._tcp</string>
      <string>_ABCD1234._googlecast._tcp</string>
    </array>
  3. Ajouter NSLocalNetworkUsageDescription à votre Info.plist

    Nous vous recommandons vivement de personnaliser le message affiché dans l'invite du réseau local en ajoutant une chaîne d'autorisation spécifique à l'application dans le fichier Info.plist de votre application pour NSLocalNetworkUsageDescription, par exemple pour décrire la découverte Cast et d'autres services de découverte, comme DIAL.

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi
    network.</string>

    Ce message s'affiche dans la boîte de dialogue "Accès au réseau local" d'iOS, comme illustré dans le modèle.

    Image de la boîte de dialogue d&#39;autorisations d&#39;accès au réseau local de Chromecast
  4. Républier votre application sur l'App Store d'Apple

    Nous vous recommandons également de publier à nouveau votre application avec la version 4.8.3 dès que possible.

Personnalisations

Début de la détection d'appareils Cast

Par défaut, la découverte des appareils Cast est lancée la première fois que l'utilisateur appuie sur le bouton Cast (GCKUICastButton). S'il s'agit de la première fois que l'utilisateur tente d'utiliser l'application Cast sur le réseau local après la mise à niveau vers iOS 14, la nouvelle annonce interstitielle LNA s'affiche, suivie de la boîte de dialogue d'autorisation d'accès au réseau local iOS.

Un nouveau flag est disponible pour vous permettre de contrôler le début de la détection des appareils et le comportement de certains éléments de l'expérience utilisateur:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

La valeur par défaut est true. Cette option ne s'applique que lorsque l'option GCKCastOptions::disableDiscoveryAutostart est définie sur false.

Si la valeur est définie sur true, la détection d'appareils Cast commence lorsqu'un utilisateur appuie sur le GCKUICastButton pour la première fois. Un message d'information s'affiche pour indiquer à l'utilisateur pourquoi une autorisation de réseau local est nécessaire. Le message de notification de non-conformité iOS 14 s'affiche ensuite. La détection des appareils Cast commence une fois le message confirmé.

Lors des lancements d'applications suivants, GCKUICastButton s'affiche toujours.

Si la valeur est définie sur false, la découverte d'appareils commence en fonction de la valeur de l'indicateur GCKCastOptions::disableDiscoveryAutostart.

Questions fréquentes

Que se passe-t-il si je publie à nouveau mon application émettrice Cast avec le SDK Cast v4.4.8 et Xcode 12 ?

Il est possible que votre application ne puisse pas détecter les appareils Cast sur le réseau local, sauf si vous avez obtenu un droit d'accès multicast réseau auprès d'Apple. Notez qu'Apple n'accordera pas de droits de multicast uniquement dans le but de prendre en charge Cast. Si vous prévoyez de compiler avec Xcode 12, vous devez publier votre application avec Cast 4.6.0.

Si je réédite mon application avec le nouveau SDK Cast, quelle expérience auront mes utilisateurs exécutant iOS 13 ou version antérieure ?

Ils continueront de bénéficier de la même expérience utilisateur qu'avant la nouvelle version de votre application. Les modifications visibles par l'utilisateur sont limitées aux utilisateurs exécutant iOS 14.

Que dois-je faire pour mettre à jour mon application une fois la nouvelle version du SDK Cast publiée ?

  • Mettez à jour le fichier Info.plist de votre application pour y inclure une description de l'utilisation du réseau local.
  • Ajoutez NSBonjourServices à la Info.plist de votre application et fournissez les noms de service Bonjour pour Cast et votre ID d'application.
  • Mettez à niveau votre application d'envoi pour qu'elle utilise le SDK Cast 4.6.0.
  • Republiez votre application sur l'App Store d'Apple.

Pourquoi les appareils ne s'affichent-ils plus dans mon sélecteur d'appareils personnalisés après la mise à niveau vers la version 4.6.0 ?

Il s'agit d'un problème connu qui peut se produire si vous utilisez un sélecteur d'appareil personnalisé au lieu du sélecteur d'appareil standard. Dans la version 4.4.8 du SDK Cast et les versions antérieures, l'analyse des appareils était automatique. À partir de la version 4.6.0, vous devez appeler explicitement la méthode startDiscovery sur la classe GCKDiscoveryManager pour lancer la découverte d'appareils.

Cette modification est due au fait que l'invite d'autorisation d'accès au réseau local (LAN) s'affiche après la première analyse de l'application. Cela peut entraîner l'affichage de boîtes de dialogue d'autorisation à des endroits aléatoires dans votre application.

Les développeurs qui créent un sélecteur d'appareil personnalisé pour leur application devront fournir un interstitiel unique avant de lancer la numérisation des appareils pour la première fois dans iOS 14.

iOS 13

Avec iOS 13, de nouvelles exigences d'autorisation ont été introduites, qui ont un impact sur les applications utilisant le SDK Google Cast.

À partir de la version 4.4.3 du SDK Google Cast, un SDK supplémentaire est disponible et ne nécessite pas d'autorisation Bluetooth®. Cette fonctionnalité est disponible à la fois sur le site des développeurs et sur les nouveaux Cocoapods google-cast-sdk-no-bluetooth.

Répartition par application

Voici un récapitulatif en fonction de la version du SDK iOS que vous utilisez actuellement:

Applications créées avec le SDK iOS 12 ou version antérieure

  • Action recommandée Les performances de détection des appareils peuvent diminuer lorsque vous exécutez la fonctionnalité sur iOS 13, mais elle restera fonctionnelle. Nous recommandons vivement aux développeurs de passer à la version 4.4.4 du SDK Cast lorsqu'elle sera disponible.
  • iOS 13 invite les utilisateurs à accorder des autorisations Bluetooth® à l'application.

Applications créées avec le SDK iOS 13

  • Action requise: passez à la version 4.4.4 du SDK Cast, sinon le bouton de diffusion en continu risque de ne pas s'afficher si l'utilisateur n'accorde pas l'autorisation d'accéder à la position. La mise à niveau vers le SDK Cast 4.4.4 est nécessaire pour garantir une expérience de casting fiable sur iOS 13.