Autorisations et visibilité sur iOS

À partir d'iOS 14, le système d'exploitation appliquera de nouvelles restrictions et autorisations qui affectent l'expérience utilisateur Cast. Cela affecte également la manière dont vous créez 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 afin de pouvoir gérer ces modifications d'autorisations.

iOS 14

Les développeurs doivent mettre à jour leurs applications d'expéditeur Cast pour 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 les utilisateurs à accéder aux appareils du réseau local via une boîte de dialogue d'autorisations ponctuelles. 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 de contenu.

Pour améliorer l'expérience utilisateur, nous apportons quelques modifications au SDK pour les applications qui utilisent le sélecteur d'appareil standard. Ces modifications de l'expérience utilisateur permettent de mieux comprendre pourquoi les autorisations d'accès au réseau local sont nécessaires, ainsi que la façon d'activer la diffusion si l'accès aux appareils du réseau local a été désactivé.

Les applications conçues avec les versions 4.4.8 ou antérieures du SDK Cast continueront de fonctionner tant qu'elles auront été conçues avec Xcode 11.7 ou version antérieure. Si vous compilez des applications 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 afin de garantir le bon fonctionnement de votre application Cast.

Vous pouvez télécharger la version 4.6.0 (ou ultérieure) du SDK iOS iOS en suivant la configuration CocoaPods, ou manuellement en suivant la configuration manuelle. Cette version inclut le mécanisme de détection sous-jacent qui permet aux applications conçues avec Xcode 12 de rechercher des appareils Cast sur le réseau. L'icône Cast devrait maintenant toujours s'afficher. Si aucun appareil n'est disponible lorsque l'utilisateur appuie sur l'icône Cast, une boîte de dialogue s'affiche. Elle indique pourquoi les appareils peuvent ne pas être disponibles et explique comment réactiver l'autorisation d'accès au réseau local.

Modifications du SDK Cast

Première diffusion

La première fois qu'un utilisateur tente de caster, une boîte de dialogue interstitielle d'accès au réseau local (LNA) s'affiche, expliquant pourquoi l'accès au réseau local 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

Diffusion non disponible

À partir de la version 4.6.0 du SDK pour expéditeur iOS, l'icône Cast s'affiche toujours lorsque l'utilisateur est connecté au Wi-Fi. Lorsque les appareils Cast ne sont pas disponibles, appuyez sur l'icône Cast pour afficher une boîte de dialogue qui indique à l'utilisateur les raisons possibles pour lesquelles Cast n'est pas disponible, comme illustré dans les simulations ci-dessous:

Flow with Cast non disponible

Mettre à jour votre application sur iOS 14

  1. Ajouter le SDK iOS 4.7.0 à votre projet

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

    Sinon, importez le SDK manuellement.

  2. Ajoutez NSBonjourServices à votre Info.plist

    Indiquez 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 comme services pour que la détection d'appareils fonctionne correctement.

    L'ID d'application est votre ID de destinataire, qui est le même que celui défini dans votre GCKDiscoveryCriteria.

    Mettez à jour l'exemple de définition NSBonjourServices et remplacez "ABCD1234" par votre ID d'application.

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

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

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} utilise le réseau local pour détecter les appareils compatibles Cast sur votre
    réseau Wi-Fi.</string>

    Ce message apparaîtra dans la boîte de dialogue d'accès au réseau local iOS, comme illustré dans l'exemple.

    Image de la boîte de dialogue &quot;Autorisations d&#39;accès au réseau local Cast&quot;
  4. Publier à nouveau votre application sur l'App Store d'Apple

    Nous vous recommandons également de publier de nouveau votre application à l'aide de la version 4.7.0 dès que possible.

Personnalisations

Lancer la détection d'appareils

Par défaut, la détection d'appareil Cast est lancée la première fois que l'utilisateur appuie sur l'icône Cast (GCKUICastButton). Si c'est la première fois qu'il tente d'utiliser l'application Cast sur le réseau local après être passé à iOS 14, le nouvel interstitiel LNA s'affiche, suivi de la boîte de dialogue des autorisations d'accès au réseau local iOS.

Une nouvelle option est disponible pour vous permettre de contrôler le début de la détection d'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 n'est applicable que si l'option GCKCastOptions::disableDiscoveryAutostart est définie sur false.

Si ce paramètre est défini sur true, la détection d'appareil Cast démarre lorsqu'un utilisateur appuie sur GCKUICastButton pour la première fois. Un message d'information sera affiché auprès de l'utilisateur et lui expliquera pourquoi l'autorisation du réseau local est nécessaire. Après ce message, le message LNA iOS 14 s'affichera. La détection de l'appareil Cast commence une fois le message confirmé.

Lors des prochains lancements d'applis, GCKUICastButton s'affichera toujours.

Si la valeur est false, la détection d'appareils commence en fonction de la valeur de l'option GCKCastOptions::disableDiscoveryAutostart.

Questions fréquentes

Que se passe-t-il si je relance l'application de l'expéditeur Cast avec le SDK v4.4.8 et le Xcode 12 ?

Votre application risque de ne pas détecter les appareils Cast sur le réseau local, sauf si vous avez obtenu un droit de multidiffusion en réseau auprès d'Apple. Notez qu'Apple n'accordera pas de droits de multidiffusion dans le seul but d'assurer la compatibilité Cast. Si vous prévoyez de créer avec Xcode 12, vous devez publier votre application avec Cast 4.6.0.

Si je relance mon application avec le nouveau SDK Cast, que proposeront les utilisateurs d'iOS 13 ou version antérieure ?

Ils continueront à bénéficier de l'expérience utilisateur dont ils bénéficiaient avant la sortie 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 disponible ?

  • Mettez à jour le fichier Info.plist de votre application pour inclure une description de l'utilisation du réseau local.
  • Ajoutez NSBonjourServices à votre Info.plist de l'application et indiquez les noms du service Bonjour pour Cast et l'ID de votre application.
  • Mettez à jour votre application émettrice pour utiliser le SDK Cast 4.6.0.
  • Publiez de nouveau 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 être passé à la version 4.6.0 ?

Ce problème peut survenir 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 devrez appeler explicitement la méthode startDiscovery sur la classe GCKDiscoveryManager pour lancer la détection d'appareils.

Cette modification est due au fait que l'invite d'autorisation LNA (Local Network Access) apparaît après la première analyse de l'application. Cela pourrait entraîner l'affichage de boîtes de dialogue d'autorisations à des emplacements aléatoires dans votre application.

Les développeurs qui créent un sélecteur d'appareil personnalisé pour leur application doivent fournir un interstitiel unique avant d'initier la recherche d'appareils pour la première fois dans iOS 14.

iOS 13

Sous iOS 13, de nouvelles exigences concernant les autorisations ont été introduites pour les applications utilisant le SDK Google Cast.

À partir de la version 4.4.3 du SDK Google Cast, un SDK supplémentaire est disponible sans compatibilité en mode Invité et ne nécessite pas d'autorisation Bluetooth®. Elle est disponible à la fois sur le site pour les développeurs et sur les nouveaux CocoaPods google-cast-sdk-no-bluetooth. Pour rappel, le mode Invité permet à l'application émettrice de détecter les appareils Cast situés à proximité immédiate d'un appareil situé à proximité du même réseau, à l'aide d'un code PIN affiché sur les appareils compatibles avec le mode Invité.

Pour préparer votre application pour iOS 13, vous devez:

Nécessité de maintenir l'assistance en mode Invité

  • Vous devez ajouter la clé Privacy - Bluetooth Always Usage Description.
  • Ajoutez une chaîne pour expliquer l'utilisation du Bluetooth® par vos utilisateurs à votre Info.plist.

Vous devez supprimer la compatibilité avec le mode Invité

  • Empêche votre appli d'exiger la configuration Cast Bluetooth® requise.
  • Intégrez la dernière version du SDK Google Cast sans prise en charge du Bluetooth®.
  • Elle est disponible à la fois sur le site pour les développeurs et sur les nouveaux CocoaPods google-cast-sdk-no-bluetooth.

Répartition des applications

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

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

  • Action recommandée. Les performances de détection des appareils peuvent diminuer sur iOS 13, mais elles restent fonctionnelles. Nous recommandons vivement aux développeurs de passer à la version 4.4.4 du SDK Cast lorsqu'ils sont disponibles.
  • iOS 13 invitera les utilisateurs à accorder des autorisations Bluetooth® à l'application.

Applications créées avec le SDK iOS 13

  • Action requise: mettez à jour le SDK Cast 4.4.4 ou l'icône Cast peut 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 diffusion fiable sur iOS 13.
  • Veuillez consulter la documentation pour les développeurs afin d'en savoir plus sur l'intégration du mode Invité, ou désactiver le mode Invité avec le SDK Google Cast et ne pas utiliser le Bluetooth®.