Autorizzazioni e rilevamento su iOS

A partire da iOS 14, il sistema operativo applicherà nuove restrizioni e autorizzazioni che influiscono sull'esperienza utente di Google Cast. Influenzerà anche il modo in cui integri l'SDK Google Cast nella tua app. Affinché la tua app mantenga la funzionalità Google Cast con le versioni più recenti di iOS, devi apportare aggiornamenti per gestire queste modifiche alle autorizzazioni.

iOS 14

Gli sviluppatori devono aggiornare le proprie app mittenti Google Cast per iOS all'SDK Google Cast v4.6.0 o versioni successive. Queste versioni forniscono il supporto per iOS 14 e i relativi requisiti.

A partire da iOS 14, le applicazioni che eseguono la scansione dei dispositivi sulla rete locale ora mostreranno agli utenti una finestra di dialogo con le autorizzazioni una tantum per trovare e connettersi ai dispositivi della rete locale. La piattaforma Google Cast utilizza la rete locale per rilevare e controllare i dispositivi Google Cast, quindi se l'utente nega l'autorizzazione, non potrà trasmettere.

Per migliorare l'esperienza utente, stiamo apportando alcune modifiche all'interfaccia utente dell'SDK per le app che utilizzano il selettore di dispositivi standard. Queste modifiche all'interfaccia utente rendono più chiaro agli utenti il motivo per cui sono necessarie le autorizzazioni di accesso alla rete locale, nonché come attivare la trasmissione se l'accesso ai dispositivi della rete locale è stato disattivato.

Le app create con le versioni dell'SDK Google Cast che utilizzano la versione 4.4.8 o precedenti continueranno a funzionare purché siano create con Xcode 11.7 o versioni precedenti. Se stai sviluppando per iOS 14 con Xcode 12 o versioni successive, ti consigliamo di eseguire l'aggiornamento all'SDK Google Cast v4.6.0 o versioni successive per assicurarti che la tua app Google Cast continui a funzionare correttamente.

L'SDK Google Cast per iOS v4.6.0 o versioni successive può essere scaricato con CocoaPods seguendo la configurazione di CocoaPods o manualmente seguendo la configurazione manuale. Questa release include modifiche al meccanismo di rilevamento sottostante per consentire alle app create con Xcode 12 di trovare i dispositivi Google Cast sulla rete. Il pulsante Trasmetti ora dovrebbe essere sempre visualizzato. Se non sono disponibili dispositivi quando l'utente tocca il pulsante Google Cast, verrà visualizzata una finestra di dialogo che fornisce indicazioni sul motivo per cui i dispositivi potrebbero non essere disponibili, incluse informazioni su come riattivare l'autorizzazione di accesso alla rete locale.

Modifiche all'SDK Google Cast

Trasmissione per la prima volta

La prima volta che un utente tenta di trasmettere, viene visualizzata una finestra di dialogo interstiziale di accesso alla rete locale (LNA) che spiega perché è necessario l'accesso alla rete locale, seguita dalla richiesta di autorizzazioni di accesso alla rete locale per iOS fornita da Apple. Le simulazioni riportate di seguito illustrano il flusso:

Flusso delle autorizzazioni di accesso alla rete locale

Google Cast non disponibile

A partire dall'SDK mittente per iOS 4.6.0, il pulsante Trasmetti viene sempre visualizzato quando l'utente è connesso al Wi-Fi. Quando i dispositivi Cast non sono disponibili, toccando il pulsante Trasmetti viene visualizzata una finestra di dialogo che fornisce all'utente suggerimenti sui possibili motivi per cui Cast non è disponibile, come mostrato nelle simulazioni riportate di seguito:

Flow con Cast non disponibile

Aggiornare l'app su iOS 14

  1. Aggiungi l'SDK Google Cast per iOS 4.8.4 al tuo progetto

    Se utilizzi CocoaPods, usa pod update per aggiungere l'SDK 4.8.4 al tuo progetto.

    In caso contrario, inserisci l'SDK manualmente.

  2. Aggiungi NSBonjourServices al file Info.plist

    Specifica NSBonjourServices nel file Info.plist per consentire il rilevamento della rete locale su iOS 14.

    Dovrai aggiungere sia _googlecast._tcp sia _<your-app-id>._googlecast._tcp come servizi per il corretto funzionamento del rilevamento dei dispositivi.

    L'appID è il tuo receiverID, ovvero lo stesso ID definito in your GCKDiscoveryCriteria.

    Aggiorna la seguente definizione di NSBonjourServices di esempio e sostituisci "ABCD1234" con il tuo appID.

    <key>NSBonjourServices</key>
    <array>
      <string>_googlecast._tcp</string>
      <string>_ABCD1234._googlecast._tcp</string>
    </array>
  3. Aggiungi NSLocalNetworkUsageDescription a Info.plist

    Ti consigliamo vivamente di personalizzare il messaggio visualizzato nella richiesta di rete locale aggiungendo una stringa di autorizzazione specifica dell'app nel file Info.plist dell'app per NSLocalNetworkUsageDescription, ad esempio per descrivere il rilevamento di Google Cast e altri servizi di rilevamento, come DIAL.

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi
    network.</string>

    Questo messaggio verrà visualizzato nella finestra di dialogo di accesso alla rete locale di iOS, come mostrato nella simulazione.

    Immagine della finestra di dialogo per le autorizzazioni di accesso alla rete locale per la trasmissione
  4. Ripubblica l'app sull'App Store di Apple

    Ti consigliamo di ripubblicare l'app utilizzando la versione 4.8.4 il prima possibile.

Personalizzazioni

Avvio del rilevamento dei dispositivi di trasmissione

Per impostazione predefinita, il rilevamento dei dispositivi di trasmissione viene avviato la prima volta che l'utente tocca il pulsante Trasmetti (GCKUICastButton). Se è la prima volta che l'utente tenta di utilizzare l'app Cast sulla rete locale dopo l'upgrade a iOS 14, verrà visualizzato il nuovo interstitial LNA, seguito dalla finestra di dialogo delle autorizzazioni di accesso alla rete locale di iOS.

È disponibile un nuovo flag che ti consente di controllare quando inizia il rilevamento dei dispositivi e il comportamento di determinati elementi dell'interfaccia utente:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

Il valore predefinito è true. Questo flag è applicabile solo quando il flag GCKCastOptions::disableDiscoveryAutostart è impostato su false.

Se impostato su true, il rilevamento dei dispositivi di trasmissione viene avviato quando un utente tocca GCKUICastButton per la prima volta. All'utente verrà mostrato un messaggio informativo che spiega perché è necessaria l'autorizzazione di rete locale. Dopo questo messaggio, verrà visualizzato il messaggio LNA di iOS 14. Il rilevamento dei dispositivi di trasmissione viene avviato dopo che il messaggio è stato riconosciuto.

Nei lanci successivi dell'app, GCKUICastButton viene sempre visualizzato.

Se impostato su false, il rilevamento dei dispositivi verrà avviato in base al valore del flag GCKCastOptions::disableDiscoveryAutostart.

Domande frequenti

Cosa succede se ripubblico la mia app mittente Google Cast con l'SDK Google Cast v4.4.8 e Xcode 12?

La tua app potrebbe non essere in grado di rilevare i dispositivi Google Cast sulla rete locale a meno che tu non abbia ottenuto un diritto di multicast di rete da Apple. Tieni presente che Apple non concederà diritti di multicast esclusivamente allo scopo di supportare Google Cast. Se prevedi di sviluppare con Xcode 12, devi rilasciare l'app con Google Cast 4.6.0.

Se ripubblico la mia app con il nuovo SDK Google Cast, cosa vedranno gli utenti che utilizzano iOS 13 o versioni precedenti?

Continueranno a vedere la stessa esperienza utente che avevano prima della ripubblicazione dell'app. Le modifiche visibili all'utente sono limitate agli utenti che utilizzano iOS 14.

Cosa devo fare per aggiornare la mia app una volta rilasciata la nuova versione dell'SDK Google Cast?

  • Aggiorna il file Info.plist della tua app per includere una descrizione dell'utilizzo della rete locale.
  • Aggiungi NSBonjourServices al file Info.plist della tua app e fornisci i nomi dei servizi Bonjour per Google Cast e l'ID della tua app.
  • Esegui l'upgrade dell'app mittente per utilizzare l'SDK Google Cast 4.6.0.
  • Ripubblica l'app sull'App Store di Apple.

Perché i dispositivi hanno smesso di essere visualizzati nel mio selettore di dispositivi personalizzato dopo l'upgrade alla versione 4.6.0?

Si tratta di un problema noto che può verificarsi se utilizzi un selettore di dispositivi personalizzato anziché quello standard. Nella versione 4.4.8 dell' SDK Google Cast e versioni precedenti, la scansione dei dispositivi era automatica. A partire dalla versione 4.6.0, dovrai chiamare esplicitamente il startDiscovery metodo nella GCKDiscoveryManager classe per avviare il rilevamento dei dispositivi.

Il motivo di questa modifica è che la richiesta di autorizzazioni di accesso alla rete locale (LNA) verrà visualizzata dopo la prima scansione dell'app. Ciò potrebbe comportare la visualizzazione di finestre di dialogo delle autorizzazioni in posizioni casuali nell'app.

Gli sviluppatori che creano un selettore di dispositivi personalizzato per la propria app dovranno fornire un interstiziale una tantum prima di avviare la scansione dei dispositivi per la prima volta in iOS 14.

iOS 13

Con iOS 13 sono stati introdotti nuovi requisiti di autorizzazione che influiscono sulle app che utilizzano l'SDK Google Cast.

A partire dall'SDK Google Cast v4.4.3, è disponibile un SDK aggiuntivo che non richiede l'autorizzazione Bluetooth®. È disponibile sia sul developer site sia sul new google-cast-sdk-no-bluetooth Cocoapods.

Suddivisione per app

Di seguito è riportata una suddivisione in base alla versione dell'SDK per iOS che stai utilizzando:

App create con l'SDK per iOS 12 o versioni precedenti

  • Azione consigliata. Le prestazioni di rilevamento dei dispositivi potrebbero diminuire quando l'app viene eseguita su iOS 13, ma continuerà a funzionare. Consigliamo vivamente agli sviluppatori di eseguire l'upgrade all'SDK Google Cast v4.4.4 quando disponibile.
  • iOS 13 chiederà agli utenti di concedere le autorizzazioni Bluetooth® all'app.

App create con l'SDK per iOS 13

  • Azione richiesta: esegui l'aggiornamento all'SDK Cast 4.4.4 o il pulsante Trasmetti potrebbe non essere visualizzato se l'utente non concede l'autorizzazione di accesso alla posizione. L'upgrade all'SDK Google Cast 4.4.4 è necessario per garantire un'esperienza di trasmissione affidabile su iOS 13.