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 compilez le SDK Cast dans votre application. Pour que votre application continue de fonctionner avec les dernières versions d'iOS, vous devez effectuer des mises à jour afin de gérer ces modifications d'autorisations.

iOS 14

Les développeurs doivent mettre à jour leurs applications émettrices Cast pour iOS vers la version 4.6.0 ou ultérieure du SDK Google Cast. Ces versions sont compatibles avec iOS 14 et sa configuration requise.

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

Afin d'améliorer l'expérience utilisateur, nous apportons quelques modifications de l'expérience utilisateur au SDK pour les applications qui utilisent le sélecteur d'appareil standard. Ces modifications de l'expérience utilisateur montrent aux utilisateurs pourquoi des autorisations d'accès au réseau local sont nécessaires et comment activer la diffusion 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 auront été développées avec Xcode 11.7 ou une version antérieure. Si vous développez pour iOS 14 avec Xcode 12 ou une version ultérieure, nous vous recommandons de passer à la version 4.6.0 du SDK Cast ou à une version ultérieure pour vous assurer que votre application Cast continuera de fonctionner correctement.

Vous pouvez télécharger la version 4.6.0 ou ultérieure du SDK Cast pour iOS avec CocoaPods en suivant la configuration de CocoaPods ou manuellement en suivant la configuration manuelle. Cette version inclut des modifications du mécanisme de découverte sous-jacent pour permettre aux applications développées avec Xcode 12 de trouver des appareils Cast sur le réseau. L'icône Cast devrait désormais 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 et indique pourquoi les appareils peuvent ne pas être disponibles, y compris comment réactiver l'autorisation d'accès au réseau local.

Modifications apportées au SDK Cast

Diffusions pour la première fois

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

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

Diffusion indisponible

À partir de la version 4.6.0 du SDK émetteur iOS, l'icône Cast s'affiche toujours lorsque l'utilisateur est connecté au Wi-Fi. Lorsque les appareils Cast ne sont pas disponibles, l'icône Cast ouvre une boîte de dialogue qui indique à l'utilisateur pourquoi Cast est indisponible, comme illustré dans les simulations ci-dessous:

Flow avec Cast indisponible

Mettre à jour votre application sous iOS 14

  1. Ajouter le SDK Cast pour iOS 4.8.1 à votre projet

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

    Sinon, importez le SDK manuellement.

  2. Ajouter NSBonjourServices à votre Info.plist

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

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

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

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

    <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 de 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étection Cast 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 s'affichera dans la boîte de dialogue d'accès au réseau local iOS, comme illustré dans la simulation.

    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 à nouveau votre application en utilisant la version 4.8.1 dès que possible.

Personnalisations

Lancement de la détection de l'appareil Cast

Par défaut, la détection d'appareils 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 que l'utilisateur tente d'utiliser l'application Cast sur le réseau local après la mise à niveau vers 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.

Un nouvel indicateur 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 lorsque l'option GCKCastOptions::disableDiscoveryAutostart est définie sur false.

Si elle est définie sur true, la détection d'appareils Cast démarre lorsqu'un utilisateur appuie sur GCKUICastButton pour la première fois. Un message d'information s'affiche pour indiquer à l'utilisateur pourquoi l'autorisation d'accès au réseau local est nécessaire. Le message LNA iOS 14 s'affichera ensuite. La découverte de l'appareil Cast commence après la confirmation du message.

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

Si elle est définie sur false, la détection d'appareils se lance 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 la version 4.4.8 du SDK Cast 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 au multicast réseau auprès d'Apple. Notez qu'Apple n'accordera pas de droits d'accès à la multidiffusion uniquement dans le but de prendre en charge Cast. Si vous envisagez de compiler avec Xcode 12, vous devez publier votre application avec Cast 4.6.0.

Si je publie à nouveau mon application avec le nouveau SDK Cast, quelle sera l'expérience d'utilisation d'iOS 13 ou d'une version antérieure pour mes utilisateurs ?

Ils continueront à profiter de la même expérience utilisateur qu'avant la nouvelle publication de votre application. Les modifications visibles par les utilisateurs sont limitées aux utilisateurs exécutant iOS 14.

Que dois-je faire pour mettre à jour mon application une fois que la nouvelle version du SDK Cast sera disponible ?

  • Mettez à jour le Info.plist de votre application pour inclure une description de l'utilisation du réseau local.
  • Ajoutez NSBonjourServices au fichier Info.plist de votre application, puis indiquez les noms des services Bonjour pour Cast et l'ID de votre application.
  • Mettez à jour votre application émettrice pour utiliser 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é 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étection d'appareils.

Cette modification s'explique par le fait que l'invite d'autorisation d'accès au réseau local (LNA, Local Network Access) s'affiche après la première analyse de l'application. Cela peut entraîner l'affichage de boîtes de dialogue d'autorisations à des endroits aléatoires dans votre application.

Les développeurs qui créent un sélecteur d'appareils personnalisé pour leur application devront fournir un interstitiel ponctuel avant de lancer l'analyse de l'appareil pour la première fois sous iOS 14.

iOS 13

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

À partir de la version 4.4.3 du SDK Google Cast, il existe un SDK supplémentaire qui ne nécessite pas d'autorisation Bluetooth®. Cette fonctionnalité est disponible sur le site pour les développeurs et sur le nouveau CocoaPods google-cast-sdk-no-bluetooth.

Répartition par application

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 version antérieure

  • Action recommandée : Les performances de détection d'appareils peuvent diminuer sous iOS 13, mais elles resteront fonctionnelles. Nous recommandons vivement aux développeurs de passer à la version 4.4.4 du SDK Cast, le cas échéant.
  • iOS 13 invitera 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, ou l'icône Cast 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 diffusion fiable sur iOS 13.