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 Cast. Cela aura également une incidence sur la façon dont vous intégrerez le SDK Cast à 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 pour iOS vers le SDK Google Cast v4.6.0 ou version ultérieure. 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 invitent désormais les utilisateurs à autoriser une seule fois la recherche et la connexion 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 de contenu.

Pour améliorer l'expérience utilisateur, nous apportons quelques modifications à l'interface utilisateur du SDK pour les applications qui utilisent le sélecteur d'appareils standard. Ces modifications permettent aux utilisateurs de mieux comprendre pourquoi les autorisations d'accès au réseau local sont nécessaires et comment activer le casting si l'accès aux appareils du réseau local a été désactivé.

Les applications créées avec des versions du SDK Cast antérieures à la version 4.4.8 continueront de fonctionner tant qu'elles seront créées avec Xcode 11.7 ou version antérieure. Si vous développez pour iOS 14 avec Xcode 12 ou version ultérieure, nous vous recommandons de passer au SDK Cast v4.6.0 ou version ultérieure pour vous assurer que votre application Cast continue de fonctionner correctement.

Le SDK Cast pour iOS v4.6.0 ou version ultérieure peut être téléchargé 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étection sous-jacent pour permettre aux applications créées avec Xcode 12 de trouver des appareils Cast sur le réseau. L'icône Cast doit 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 des informations sur la façon de réactiver l'autorisation d'accès au réseau local.

Modifications apportées au SDK Cast

Première tentative de casting

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 s'affiche pour expliquer 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 maquettes ci-dessous illustrent le flux :

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

Cast non disponible

À partir du SDK d'envoi iOS 4.6.0, l'icône 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 indique à l'utilisateur les raisons possibles pour lesquelles Cast n'est pas disponible, comme illustré dans les maquettes ci-dessous :

Flow avec Cast indisponible

Mettre à jour votre application sur iOS 14

  1. Ajoutez le SDK Cast pour iOS 4.8.4 à votre projet

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

    Sinon, intégrez le SDK manuellement.

  2. Ajoutez NSBonjourServices à votre Info.plist

    Spécifiez NSBonjourServices dans votre Info.plist pour que la détection du réseau local réussisse sur iOS 14.

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

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

    Mettez à jour 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. Ajoutez 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 le NSLocalNetworkUsageDescription, par exemple pour décrire la détection Cast et d'autres services de détection, 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'affichera dans la boîte de dialogue d'accès au réseau local iOS, comme illustré dans la maquette.

    Image de la boîte de dialogue des autorisations d&#39;accès au réseau local pour caster du contenu
  4. Publiez à nouveau votre application sur l'App Store d'Apple

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

Personnalisations

Lancement de la détection d'appareils Cast

Par défaut, la détection d'appareils Cast est lancée la première fois que l'utilisateur appuie sur le bouton Cast (GCKUICastButton). Si l'utilisateur tente d'utiliser l'application Cast sur le réseau local pour la première fois après avoir effectué la mise à niveau vers iOS 14, la nouvelle boîte de dialogue interstitielle d'accès au réseau local s'affiche, suivie de la boîte de dialogue d'autorisations d'accès au réseau local iOS.

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

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

La valeur par défaut est true. Cet indicateur n'est applicable que lorsque l'indicateur GCKCastOptions::disableDiscoveryAutostart est défini sur false.

Si la valeur est 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. Après ce message, le message d'accès au réseau local iOS 14 s'affiche. La détection d'appareils Cast démarre une fois le message confirmé.

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

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

Questions fréquentes

Que se passe-t-il si je republie mon application d'envoi 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 de multidiffusion réseau d'Apple. Notez qu'Apple n'accordera pas de droits de multidiffusion uniquement pour prendre en charge Cast. Si vous prévoyez de créer votre application avec Xcode 12, vous devez la publier avec Cast 4.6.0.

Si je republie mon application avec le nouveau SDK Cast, quelle sera l'expérience de mes utilisateurs sous iOS 13 ou 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 fichier 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 et fournissez les noms de service Bonjour pour Cast et votre ID d'application.
  • Mettez à niveau votre application d'envoi pour utiliser le SDK Cast 4.6.0.
  • Republiez votre application sur l'App Store d'Apple.

Pourquoi les appareils ont-ils cessé de s'afficher 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'appareils personnalisé au lieu du sélecteur d'appareils 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 startDiscovery méthode sur la GCKDiscoveryManager classe pour lancer la détection des appareils.

La raison de cette modification est que l'invite d'autorisation d'accès au réseau local 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 une boîte de dialogue interstitielle unique avant de lancer l'analyse des appareils pour la première fois sous iOS 14.

iOS 13

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

À partir du SDK Google Cast v4.4.3, un SDK supplémentaire est disponible et ne nécessite pas l'autorisation Bluetooth®. Il est disponible à la fois sur le site pour les développeurs et sur le nouveau google-cast-sdk-no-bluetooth Cocoapods.

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 des appareils peuvent diminuer sous iOS 13, mais elles resteront fonctionnelles. Nous recommandons vivement aux développeurs de passer au SDK Cast v4.4.4 lorsqu'il sera disponible.
  • iOS 13 invitera les utilisateurs à accorder des autorisations Bluetooth® à l'application.

Applications créées avec le SDK iOS 13

  • Action requise : passez au SDK Cast 4.4.4, sinon 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 casting fiable sous iOS 13.