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égrez 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 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. Si l'utilisateur refuse l'autorisation, il ne pourra pas caster.

Pour améliorer l'expérience utilisateur, nous apportons quelques modifications à l'expérience utilisateur du SDK pour les applications qui utilisent le sélecteur d'appareils standard. Ces modifications de l'expérience utilisateur permettent aux utilisateurs de mieux comprendre pourquoi les autorisations d'accès au réseau local sont nécessaires et comment 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 une 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 continuera de fonctionner correctement.

Le SDK Cast iOS version 4.6.0 ou 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écouverte sous-jacent pour permettre aux applications conçues avec Xcode 12 de trouver des appareils Cast sur le réseau. Le bouton Cast devrait maintenant toujours s'afficher. Si aucun appareil n'est disponible lorsque l'utilisateur appuie sur le bouton "Caster", une boîte de dialogue s'affiche pour lui expliquer pourquoi aucun appareil n'est disponible, 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 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 (ANL) s'affiche pour expliquer pourquoi l'accès au réseau local est nécessaire. Elle est 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 indisponible

À partir du SDK Sender 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 indiqué dans les maquettes ci-dessous :

Flow 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, ajoutez le SDK 4.8.3 à votre projet à l'aide de pod update.

    Sinon, récupérez le SDK manuellement.

  2. Ajoutez NSBonjourServices à votre Info.plist

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

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

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

    Mettez à jour la définition de l'exemple NSBonjourServices 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 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'affichera dans la boîte de dialogue d'accès au réseau local d'iOS, comme indiqué 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. Publier à nouveau votre application sur l'App Store d'Apple

    Nous vous recommandons également de republier votre application en utilisant la version 4.8.3 dès que possible.

Personnalisations

Lancement de la découverte 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). Si l'utilisateur tente d'utiliser l'application Cast sur le réseau local pour la première fois 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 nouveau flag est disponible pour vous permettre de contrôler le moment où la découverte des appareils commence et le comportement de certains éléments de l'UX :

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 des appareils Cast démarre lorsqu'un utilisateur appuie sur GCKUICastButton pour la première fois. Un message informatif s'affiche pour indiquer à l'utilisateur pourquoi l'autorisation d'accès au réseau local est nécessaire. Le message LNA d'iOS 14 s'affiche ensuite. La découverte des appareils Cast commence une fois le message confirmé.

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

Si la valeur est définie sur false, la découverte des appareils commence en fonction de la valeur du signalement 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 multicast au réseau auprès d'Apple. Notez qu'Apple n'accordera pas de droits de multidiffusion uniquement pour prendre en charge Cast. Si vous prévoyez de compiler votre application avec Xcode 12, vous devez la publier avec Cast 4.6.0.

Si je relance mon application avec le nouveau SDK Cast, qu'est-ce que mes utilisateurs sous iOS 13 ou version antérieure vont constater ?

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 les utilisateurs sont limitées à ceux qui utilisent iOS 14.

Que devrai-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 à Info.plist de votre application et fournissez les noms de service Bonjour pour Cast et l'ID de votre application.
  • Mettez à niveau votre application émettrice 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 méthode startDiscovery sur la classe GCKDiscoveryManager pour lancer la découverte des appareils.

Cette modification est due au fait que l'invite d'autorisation d'accès au réseau local (ANL) 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 de votre application.

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

iOS 13

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

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

Répartition par application

Voici une explication en fonction de la version du SDK iOS que vous utilisez actuellement :

Applications conçues avec le SDK iOS 12 ou version antérieure

  • Action recommandée Les performances de la découverte d'appareils peuvent diminuer sous iOS 13, mais la fonctionnalité restera opérationnelle. Nous recommandons vivement aux développeurs de passer au SDK Cast v4.4.4 dès qu'il sera disponible.
  • iOS 13 invite les utilisateurs à accorder des autorisations Bluetooth® à l'application.

Applications créées avec le SDK iOS 13

  • Action requise : Mettez à jour le SDK Cast vers la version 4.4.4. Sinon, il est possible que le bouton Cast ne s'affiche pas si l'utilisateur n'accorde pas l'autorisation d'accéder à sa position. Il est nécessaire de passer au SDK Cast 4.4.4 pour garantir une expérience de casting fiable sur iOS 13.