Autorizzazioni e rilevamento su iOS

A partire da iOS 14, il sistema operativo applicherà nuove limitazioni e autorizzazioni che avranno effetto sull'esperienza utente di Google Cast. Influirà inoltre sulla modalità di creazione dell'SDK di trasmissione nella tua app. Affinché l'app mantenga la funzionalità di trasmissione con le versioni più recenti di iOS, devi apportare aggiornamenti alla gestione di queste modifiche alle autorizzazioni.

iOS 14

Gli sviluppatori devono aggiornare l'SDK Google Cast alle proprie app mittenti per iOS v4.6.0 o versioni successive. Queste versioni supportano iOS 14 e i relativi requisiti.

A partire da iOS 14, le applicazioni che cercano dispositivi sulla rete locale ora richiedono agli utenti una finestra di dialogo delle autorizzazioni una tantum per trovare e connettersi ai dispositivi di rete locale. La piattaforma di trasmissione utilizza la rete locale per rilevare e controllare i dispositivi di trasmissione, quindi se l'utente nega l'autorizzazione, non potrà trasmettere.

Per migliorare l'esperienza utente, stiamo apportando alcune modifiche UX all'SDK per le app che usano il selettore di dispositivi standard. Queste modifiche UX rendono più evidente per gli utenti il motivo per cui sono necessarie le autorizzazioni di accesso alla rete locale e come attivare la trasmissione se l'accesso ai dispositivi della rete locale è stato disattivato.

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

L'SDK Cast per iOS 4.6.0 o versioni successive può essere scaricato con CocoaPods seguendo la configurazione di CocoaPods o manualmente seguendo la configurazione manuale. Questa versione include modifiche al meccanismo di rilevamento sottostante per consentire alle app create con Xcode 12 di trovare dispositivi di trasmissione sulla rete. Ora il pulsante Trasmetti dovrebbe essere sempre visualizzato. Se nessun dispositivo è disponibile quando l'utente tocca il pulsante Trasmetti, viene visualizzata una finestra di dialogo che fornisce indicazioni sul motivo per cui i dispositivi potrebbero non essere disponibili, incluse le informazioni su come riattivare l'autorizzazione di accesso alla rete locale.

Modifiche all'SDK per Google Cast

Trasmissione per la prima volta

La prima volta che un utente tenta di trasmettere, viene visualizzata una finestra di dialogo interstitial 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 iOS fornita da Apple. Le simulazioni di seguito illustrano la procedura:

Flusso di autorizzazioni di accesso alla rete locale

Trasmissione non disponibile

A partire dall'SDK del mittente iOS 4.6.0, il pulsante Trasmetti viene sempre visualizzato quando l'utente è connesso al Wi-Fi. Quando i dispositivi di trasmissione non sono disponibili, toccando il pulsante Trasmetti si apre una finestra di dialogo che dà all'utente suggerimenti sui possibili motivi della trasmissione, come mostrato nelle simulazioni di seguito:

Flusso con Cast non disponibile

Aggiornare l'app su iOS 14

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

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

    In caso contrario, recupera l'SDK manualmente.

  2. Aggiungi NSBonjourServices a Info.plist

    Specifica NSBonjourServices in Info.plist per consentire il rilevamento della rete locale in modo efficace su iOS 14.

    Affinché il rilevamento dispositivi funzioni correttamente, devi aggiungere sia _googlecast._tcp che _<your-app-id>._googlecast._tcp.

    L'appID è il tuo ID RTB, che è lo stesso ID definito nel file GCKDiscoveryCriteria.

    Aggiorna la definizione di esempio NSBonjourServices riportata di seguito 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 mostrato nel messaggio Rete locale aggiungendo una stringa di autorizzazione specifica dell'app nel file Info.plist dell'app per NSLocalNetworkUsageDescription, ad esempio per descrivere la trasmissione di rilevamento e altri servizi di rilevamento, come DIAL.

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} utilizza la rete locale per rilevare i dispositivi compatibili con Google Cast sulla tua
    rete Wi-Fi.</string>

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

    Immagine della finestra di dialogo delle autorizzazioni di accesso alla rete locale Cast
  4. Ripubblica la tua app nell'App Store di Apple

    Ti consigliamo inoltre di rilasciare nuovamente l'app utilizzando la versione 4.7.0 il prima possibile.

Personalizzazioni

Avvio della rilevazione di 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 aver eseguito l'upgrade a iOS 14, viene visualizzato il nuovo interstitial LNA, seguito dalla finestra di dialogo delle autorizzazioni di accesso alla rete locale iOS.

È disponibile un nuovo flag per consentirti di controllare quando inizia il rilevamento del dispositivo e il comportamento di determinati elementi dell'esperienza 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, la funzionalità di rilevamento dei dispositivi di trasmissione inizia quando un utente tocca GCKUICastButton per la prima volta. All'utente verrà mostrato un messaggio informativo che indica il motivo per cui è necessaria l'autorizzazione di rete locale. In seguito al messaggio, verrà visualizzato il messaggio LNA di iOS 14. La funzionalità di rilevamento dei dispositivi di trasmissione inizia dopo il riconoscimento del messaggio.

Nei lanci delle app successive, GCKUICastButton viene sempre visualizzato.

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

Domande frequenti

Cosa succede se pubblico di nuovo l'app Mittente di trasmissione con l'SDK Cast v4.4.8 e Xcode 12?

La tua app potrebbe non riuscire a rilevare i dispositivi di trasmissione sulla rete locale se non hai ottenuto il diritto di rete multicast da Apple. Tieni presente che Apple non concederà i diritti di multicast esclusivamente al fine di supportare Cast. Se hai intenzione di creare con Xcode 12, devi rilasciare l'app con Cast 4.6.0.

Se pubblico di nuovo l'app con il nuovo SDK Cast, cosa succederanno i miei utenti che eseguono iOS 13 o versioni precedenti?

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

Cosa devo fare per aggiornare l'app dopo il rilascio della nuova versione dell'SDK Cast?

  • Aggiorna l'elemento Info.plist dell'app in modo che includa una descrizione di utilizzo della rete locale.
  • Aggiungi NSBonjourServices a Info.plist dell'app e fornisci i nomi dei servizi Bonjour per Cast e l'ID app.
  • Esegui l'upgrade dell'app del mittente per utilizzare l'SDK Cast 4.6.0.
  • Rilascia nuovamente l'app nell'App Store di Apple.

Perché i dispositivi non vengono più 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é il selettore di dispositivi standard. Nella versione 4.4.8 dell'SDK Cast e nelle versioni precedenti, l'analisi dei dispositivi è stata automatica. A partire dalla versione 4.6.0, dovrai chiamare esplicitamente il metodo startDiscovery nella classe GCKDiscoveryManager per avviare il rilevamento del dispositivo.

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

Gli sviluppatori che creano un selettore di dispositivi personalizzato per la propria app sono tenuti a fornire un interstitial una tantum prima di avviare la scansione del dispositivo 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 senza supporto per la modalità ospite che non richiede l'autorizzazione Bluetooth®. Disponibile sul sito per sviluppatori e sul nuovo google-cast-sdk-no-bluetooth Cocoapods. Ti ricordiamo che la funzione modalità ospite consente all'app del mittente di rilevare i dispositivi di trasmissione in una vicinanza fisica senza trovarsi sulla stessa rete, utilizzando un PIN visualizzato sui dispositivi abilitati in modalità ospite.

Per preparare la tua app per iOS 13 devi decidere se:

È necessario mantenere il supporto della modalità ospite

  • Devi aggiungere la chiave Privacy - Bluetooth Always Usage Description.
  • Aggiungi una stringa per spiegare l'utilizzo del Bluetooth® per i tuoi utenti al Info.plist.

È necessario rimuovere il supporto della modalità ospite

  • Impedisce alla tua app di richiedere i requisiti di Bluetooth® Cast.
  • Integra la versione più recente dell'SDK di Google Cast senza supporto Bluetooth®.
  • Disponibile sul sito per sviluppatori e sul nuovo google-cast-sdk-no-bluetooth Cocoapods.

Analisi dettagliata delle app

Di seguito è riportata un'analisi dettagliata che dipende dalla versione dell'SDK iOS attualmente in uso:

App create con l'SDK iOS 12 o versioni precedenti

  • Azione consigliata. Le prestazioni di rilevamento del dispositivo potrebbero diminuire durante l'esecuzione su iOS 13, ma saranno comunque funzionali. Consigliamo vivamente agli sviluppatori di eseguire l'upgrade all'SDK Cast v4.4.4, se disponibile.
  • iOS 13 chiederà agli utenti di concedere le autorizzazioni di accesso al Bluetooth® all'app.

App create con l'SDK per iOS 13

  • Azione richiesta: l'aggiornamento a Cast SDK 4.4.4 o il pulsante Trasmetti potrebbero non essere visualizzati se l'utente non concede l'autorizzazione di accesso alla posizione. L'upgrade all'SDK Cast 4.4.4 è necessario per garantire un'esperienza di trasmissione affidabile su iOS 13.
  • Per saperne di più su come integrare la modalità ospite o disattivare la modalità ospite con l'SDK Google Cast e nessun supporto per Bluetooth®, consulta la documentazione per gli sviluppatori.