Autorizzazioni e rilevamento su iOS

A partire da iOS 14, il sistema operativo applicherà nuove restrizioni e autorizzazioni che influiscono sull'esperienza utente di Cast. Questa modifica influirà anche sulla modalità di creazione dell'SDK Cast nella tua app. Affinché la tua app mantenga la funzionalità Cast con le versioni più recenti di iOS, devi apportare aggiornamenti per gestire queste modifiche alle autorizzazioni.

iOS 14

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

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

Per migliorare l'esperienza utente, stiamo apportando alcune modifiche all'SDK per le app che utilizzano il selettore di dispositivi standard. Queste modifiche all'esperienza utente rendono più evidente agli utenti perché 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 precedente continueranno a funzionare, purché vengano sviluppate con Xcode 11.7 o versioni precedenti. Se sviluppi per iOS 14 con Xcode 12 o versioni successive, ti consigliamo di eseguire l'aggiornamento all'SDK Cast 4.6.0 o versione successiva 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 oppure 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 di trasmissione sulla rete. Ora il pulsante Trasmetti dovrebbe essere sempre visibile. Se non ci sono dispositivi disponibili 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 informazioni su come riattivare l'autorizzazione di accesso alla rete locale.

Modifiche all'SDK Cast

Prima trasmissione

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 relativa alle autorizzazioni di accesso alla rete locale iOS fornite da Apple. Gli esempi riportati di seguito illustrano il flusso:

Flusso delle autorizzazioni di accesso alla rete locale

Trasmissione non disponibile

A partire dall'SDK mittente iOS 4.6.0, il pulsante Trasmetti viene sempre visualizzato quando l'utente è connesso alla rete Wi-Fi. Quando i dispositivi di trasmissione non sono disponibili, se tocchi il pulsante Trasmetti viene visualizzata una finestra di dialogo che fornisce all'utente suggerimenti sui possibili motivi dell'indisponibilità della trasmissione, come mostrato di seguito:

Flusso con trasmissione non disponibile

Aggiornamento dell'app su iOS 14

  1. Aggiungi l'SDK Cast per iOS 4.8.0 al progetto

    Se usi CocoaPods, usa pod update per aggiungere l'SDK 4.8.0 al tuo progetto.

    In caso contrario, esegui il pull dell'SDK manualmente.

  2. Aggiungi NSBonjourServices a Info.plist

    Specifica NSBonjourServices in 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 consentire il corretto funzionamento del rilevamento dei dispositivi.

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

    Aggiorna la definizione di NSBonjourServices di esempio che segue 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 nel messaggio relativo alla 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 trasmissione e altri servizi di rilevamento, come DIAL.

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

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

    Immagine della finestra di dialogo delle autorizzazioni di accesso alla rete locale per la trasmissione
  4. Rilascia di nuovo l'app nell'App Store di Apple

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

Personalizzazioni

Avvio del rilevamento del dispositivo 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 per l'accesso alla rete locale di iOS.

È disponibile un nuovo flag per consentirti di controllare quando inizia il rilevamento dei dispositivi e il comportamento di alcuni 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 è impostata su true, il rilevamento del dispositivo di trasmissione inizia quando un utente tocca il dispositivo GCKUICastButton per la prima volta. Verrà mostrato un messaggio informativo all'utente che spiega perché è necessaria l'autorizzazione di accesso alla rete locale. Dopo questo messaggio, verrà visualizzato il messaggio LNA di iOS 14. Il rilevamento del dispositivo di trasmissione inizia dopo la conferma del messaggio.

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

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

Domande frequenti

Che cosa succede se rilascio la mia app mittente Cast 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 un diritto di rete multicast da Apple. Tieni presente che Apple non concederà diritti multicast esclusivamente allo scopo di supportare Cast. Se hai intenzione di sviluppare con Xcode 12, devi rilasciare la tua app con Cast 4.6.0.

Se rilascio la mia app con il nuovo SDK Cast, quale sarà l'esperienza degli utenti che utilizzano iOS 13 o versioni precedenti?

Gli utenti continueranno a vedere la stessa esperienza utente prima del rilascio dell'app. Le modifiche visibili agli utenti sono limitate agli utenti che utilizzano iOS 14.

Che cosa devo fare per aggiornare la mia app dopo il rilascio della nuova versione dell'SDK Cast?

  • Aggiorna Info.plist dell'app in modo da includere una descrizione dell'utilizzo della rete locale.
  • Aggiungi NSBonjourServices a Info.plist dell'app e fornisci i nomi del servizio Bonjour per la trasmissione e l'ID dell'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 compaiono più nel selettore di dispositivi personalizzato dopo che ho eseguito l'upgrade alla versione 4.6.0?

Questo è un problema noto che può verificarsi se utilizzi un selettore dispositivo personalizzato anziché quello standard. Nella versione 4.4.8 dell'SDK Cast e precedenti, l'analisi dei dispositivi era automatica. A partire dalla versione 4.6.0, dovrai chiamare esplicitamente il metodo startDiscovery nella classe GCKDiscoveryManager per avviare il rilevamento dei dispositivi.

Il motivo di questa modifica è che la richiesta di autorizzazioni di accesso alla rete locale (LNA) viene visualizzata dopo la prima analisi dell'app. Di conseguenza, nella tua app potrebbero essere visualizzate finestre di dialogo delle autorizzazioni in posizioni casuali.

Gli sviluppatori che creano un selettore di dispositivi personalizzato per la loro app dovranno fornire un interstitial 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 relativi alle autorizzazioni che influiscono sulle app che utilizzano l'SDK Google Cast.

A partire dalla versione 4.4.3 dell'SDK Google Cast, è disponibile un SDK aggiuntivo che non richiede l'autorizzazione Bluetooth®. Questa funzionalità è disponibile sia sul sito per sviluppatori sia sul nuovo google-cast-sdk-no-bluetooth Cocoapods.

Analisi dettagliata dell'app

Ecco una suddivisione in base alla versione dell'SDK iOS attualmente in uso:

App create con l'SDK iOS 12 o versioni precedenti

  • Azione consigliata. Le prestazioni di rilevamento dei dispositivi potrebbero diminuire se vengono eseguite su iOS 13, ma continueranno a funzionare. 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 Bluetooth® all'app.

App create con l'SDK per iOS 13

  • Azione richiesta: esegui l'aggiornamento alla versione 4.4.4 dell'SDK Cast oppure il pulsante Trasmetti potrebbe non essere visualizzato 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.