Autorizzazioni e rilevamento su iOS

A partire da iOS 14, il sistema operativo applicherà nuove restrizioni e autorizzazioni che interessano l'esperienza utente di Cast. oltre che sulla modalità di creazione dell'SDK Cast nell'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 versione 4.6.0 o successiva. Queste versioni supportano iOS 14 e i relativi requisiti.

A partire da iOS 14, le applicazioni che cercano i dispositivi sulla rete locale ora chiederanno agli utenti, con una finestra di dialogo delle autorizzazioni una tantum, di trovare e connettersi ai dispositivi di rete locali. La piattaforma Google Cast 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'esperienza utente all'SDK per le app che utilizzano il selettore di dispositivi standard. Queste modifiche all'UX rendono più chiaro per gli utenti perché sono necessarie le autorizzazioni di accesso alla rete locale e come abilitare la trasmissione se l'accesso ai dispositivi della rete locale è stato disabilitato.

Le app create con versioni dell'SDK Cast che utilizzano la versione 4.4.8 o precedente continueranno a funzionare, purché siano state create con Xcode 11.7 o versioni precedenti. Se stai creando per iOS 14 con Xcode 12 o versioni successive, ti consigliamo di eseguire l'aggiornamento alla versione 4.6.0 o successiva dell'SDK Cast per assicurarti che l'app Cast continui a funzionare correttamente.

L'SDK 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 di trasmissione sulla rete. Ora il pulsante Trasmetti dovrebbe essere sempre visualizzato. Se non sono disponibili dispositivi 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 di autorizzazione di accesso alla rete locale iOS fornita da Apple. Le simulazioni riportate di seguito illustrano il flusso:

Flusso delle autorizzazioni di accesso alla rete locale

Trasmissione non disponibile

A partire dall'SDK per mittenti di iOS 4.6.0, il pulsante Trasmetti viene sempre visualizzato quando l'utente è connesso a una rete Wi-Fi. Quando i dispositivi di trasmissione non sono disponibili, se tocchi il pulsante Trasmetti, viene visualizzata una finestra di dialogo che suggerisce all'utente i possibili motivi per cui la trasmissione non è disponibile, come mostrato nelle simulazioni che seguono:

Flusso con trasmissione non disponibile

Aggiornamento dell'app su iOS 14

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

    Se usi CocoaPods, usa pod update per aggiungere l'SDK 4.8.1 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 tramite la rete locale su iOS 14.

    Dovrai aggiungere sia _googlecast._tcp che _<your-app-id>._googlecast._tcp come servizi per far funzionare correttamente il rilevamento dei dispositivi.

    L'appID è il tuo ID ricevitore, che è lo stesso ID definito in GCKDiscoveryCriteria.

    Aggiorna la definizione NSBonjourServices dell'esempio seguente 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 prompt della 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 Cast 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 collegati alla tua rete
    Wi-Fi.</string>

    Questo messaggio verrà visualizzato all'interno della 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 di rilasciare nuovamente l'app utilizzando la versione 4.8.1 il prima possibile.

Personalizzazioni

Avvio del rilevamento del dispositivo di trasmissione

Per impostazione predefinita, il rilevamento del dispositivo 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 visualizzata la nuova interstitial LNA, seguita dalla finestra di dialogo delle autorizzazioni 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 il criterio viene impostato su true, il rilevamento dei dispositivi di trasmissione inizia quando un utente tocca il GCKUICastButton per la prima volta. Verrà mostrato un messaggio informativo all'utente che comunica perché è necessaria l'autorizzazione di 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 lanci dell'app, verrà sempre visualizzato GCKUICastButton.

Se è 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 di 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 a meno che tu non abbia ottenuto un diritto di rete multicast da Apple. Tieni presente che Apple non concederà diritti multicast esclusivamente per supportare Cast. Se prevedi di creare 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?

Continueranno a usufruire della stessa esperienza utente che avevano 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 della tua app e fornisci i nomi dei servizi Bonjour per Cast e il tuo ID app.
  • Esegui l'upgrade dell'app del mittente per utilizzare l'SDK Cast 4.6.0.
  • Rilascia di nuovo l'app nell'App Store di Apple.

Perché i dispositivi non appaiono più nel mio 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 di dispositivi personalizzato anziché un selettore di dispositivi 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 relativa alle autorizzazioni di accesso alla rete locale (LNA) verrà visualizzata dopo la prima analisi dell'app. Di conseguenza, nella tua app potrebbero essere visualizzate finestre di dialogo delle autorizzazioni in punti casuali.

Gli sviluppatori che creano un selettore di dispositivi personalizzato per la loro app devono 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 v4.4.3, è 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 per iOS in uso:

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

  • Azione consigliata. Le prestazioni di rilevamento dei dispositivi potrebbero diminuire su iOS 13, ma saranno comunque funzionanti. Consigliamo vivamente agli sviluppatori di eseguire l'upgrade all'SDK Cast v4.4.4, se disponibile.
  • iOS 13 richiederà agli utenti di concedere le autorizzazioni Bluetooth® all'app.

App create con l'SDK per iOS 13

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