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 façon dont vous compilez 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 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 ses exigences.

À partir d'iOS 14, les applications qui recherchent des appareils sur le réseau local afficheront désormais une boîte de dialogue d'autorisation ponctuelle pour rechercher des appareils du réseau local 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 l'utilisateur refuse l'autorisation, ils ne pourront pas caster de contenus.

Afin d'améliorer l'expérience utilisateur, nous apportons des 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 permettent aux utilisateurs de comprendre plus facilement pourquoi les 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 une version antérieure continueront de fonctionner tant qu'elles sont compilé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 au SDK Cast 4.6.0 ou version ultérieure afin de 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 créées avec Xcode 12 de détecter les appareils Cast sur le réseau. L'icône Cast devrait à présent 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 explique pourquoi les appareils peuvent ne pas être disponibles, y compris des informations sur la réactivation de 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, une boîte de dialogue interstitielle d'accès au réseau local (LNA) 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 la procédure:

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

Diffusion indisponible

À partir de la version 4.6.0 du SDK de l'é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, appuyez sur l'icône Cast pour afficher une boîte de dialogue indiquant à l'utilisateur les raisons possibles de cette indisponibilité, comme illustré dans les simulations ci-dessous:

Flow avec Cast indisponible

Mettre à jour votre application sous iOS 14

  1. Ajouter le SDK Cast 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 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'appID est votre ID de récepteur, qui est le même que celui défini dans votre GCKDiscoveryCriteria.

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

    <key>NSBonjourServices</key>
    <tableau>
      <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 "Accès au réseau local" d'iOS, comme illustré dans la simulation.

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

    Nous vous recommandons également de republier 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 de l'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 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 moment où la découverte d'appareils commence 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 true, la détection des appareils Cast commence lorsqu'un utilisateur appuie sur 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. Après ce message, le message LNA iOS 14 s'affiche. La détection des appareils Cast commence une fois le message confirmé.

Dans les lancements d'appli suivants, GCKUICastButton s'affiche toujours.

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

Questions fréquentes

Que se passe-t-il si je republie 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 à la multidiffusion en 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 prévoyez de compiler avec Xcode 12, vous devez publier votre application avec Cast 4.6.0.

Si je republie mon application avec le nouveau SDK Cast, quelle sera l'expérience de mes utilisateurs sur iOS 13 ou une version antérieure ?

Ils continueront de bénéficier de la même expérience utilisateur qu'avant la republication 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 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. À partir de la version 4.4.8 du SDK Cast, l'analyse de l'appareil é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.

La raison de cette modification est que l'invite d'autorisations d'accès au réseau local (LNA) s'affichera après la première analyse de l'application. Par conséquent, des boîtes de dialogue d'autorisation peuvent s'afficher à des endroits aléatoires de votre application.

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

iOS 13

Avec iOS 13, de nouvelles exigences d'autorisations ont été introduites. Elles concernent les applications utilisant le SDK Google Cast.

À partir de la version 4.4.3 du SDK Google Cast, un SDK supplémentaire ne nécessite pas d'autorisation Bluetooth®. Cette fonctionnalité est disponible à la fois 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:

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

  • Action recommandée. Les performances de détection des appareils peuvent diminuer avec 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 invite les utilisateurs à accorder des autorisations Bluetooth® à l'application.

Applications créées avec le SDK iOS 13

  • Action requise: il se peut que l'icône Cast n'apparaisse pas dans la version 4.4.4 du SDK Cast si l'utilisateur n'accorde pas l'autorisation d'accéder à la position. Il est nécessaire de mettre à niveau le SDK Cast 4.4.4 pour garantir une expérience de diffusion fiable sur iOS 13.