Autorizzazioni e rilevamento su iOS

A partire da iOS 14, il sistema operativo applicherà nuove limitazioni e autorizzazioni che influiscono sull'esperienza utente di trasmissione. Avrà effetto anche sul modo in cui l'SDK Cast viene creato nella tua app. Affinché l'app mantenga la funzionalità di trasmissione con le versioni più recenti di iOS, devi eseguire gli aggiornamenti per gestire queste modifiche alle autorizzazioni.

iOS 14

Gli sviluppatori sono tenuti ad aggiornare le loro app di mittenti per iOS Cast alla versione 4.6.0 o successiva dell'SDK Google Cast. Queste versioni supportano iOS 14 e i relativi requisiti.

A partire da iOS 14, le applicazioni che cercano dispositivi sulla rete locale ora richiede agli utenti una finestra di dialogo delle autorizzazioni una tantum per trovare e connettersi ai dispositivi di rete locale. La piattaforma Cast 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 standard del dispositivo. Queste modifiche UX indicano più chiaramente agli utenti il motivo per cui sono necessarie le autorizzazioni di accesso alla rete locale, nonché il modo in cui attivare la trasmissione se l'accesso ai dispositivi di rete locale è stato disattivato.

Le app create con le versioni dell'SDK Cast che utilizzano la versione 4.4.8 o precedenti continueranno a funzionare, purché siano state create con Xcode 11.7 o versioni precedenti. Se crei una versione per iOS 14 con Xcode 12 o versioni successive, ti consigliamo di eseguire l'aggiornamento all'SDK Cast 4.6.0 o versioni successive per assicurarti che l'app Google 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 release include modifiche al meccanismo di rilevamento sottostante per consentire alle app create con Xcode 12 di trovare dispositivi di trasmissione sulla rete. 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 indica il motivo per cui i dispositivi potrebbero non essere disponibili, incluse informazioni su come riattivare l'autorizzazione di accesso alla rete locale.

Modifiche all'SDK di trasmissione

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é sia necessario l'accesso alla rete locale, seguita dalla richiesta di autorizzazione di accesso alla rete locale iOS fornita da Apple. Le simulazioni di seguito illustrano il flusso:

Flusso dei diritti di accesso alla rete locale

Trasmissione non disponibile

A partire dall'SDK del mittente iOS 4.6.0, il pulsante Trasmetti appare sempre quando l'utente è connesso alla rete Wi-Fi. Quando i dispositivi di trasmissione non sono disponibili, toccando il pulsante Trasmetti si apre una finestra di dialogo che offre all'utente suggerimenti sui possibili motivi per cui la trasmissione non è disponibile, come mostrato nelle simulazioni di seguito:

Flusso con Google Cast non disponibile

Aggiornare l'app su iOS 14

  1. Aggiungere l'SDK Cast iOS 4.7.0 al tuo progetto

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

    In caso contrario, esegui l'estrazione manuale dell'SDK.

  2. Aggiungi NSBonjourServices a Info.plist

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

    Devi aggiungere sia _googlecast._tcp sia _<your-app-id>._googlecast._tcp come servizi affinché il rilevamento dei dispositivi funzioni correttamente.

    L'ID app è il parametro receiveadd, che è lo stesso ID definito nel file GCKDiscoveryCriteria.

    Aggiorna la definizione dell'esempio NSBonjourServices 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 mostrato nella richiesta della rete locale aggiungendo una stringa di autorizzazione specifica per l'app nel file Info.plist dell'app per NSLocalNetworkUsageDescription, ad esempio per descrivere il servizio di rilevamento 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 sulla rete Wi-Fi.</string>

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

    Immagine della finestra di dialogo Autorizzazioni di accesso alla rete locale Cast
  4. Ripubblica l'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 del dispositivo di trasmissione

Per impostazione predefinita, la funzionalità di rilevamento dei dispositivi di trasmissione viene avviata la prima volta che l'utente tocca il pulsante Trasmetti (GCKUICastButton). Se è la prima volta che l'utente ha tentato di utilizzare l'app Cast sulla rete locale dopo aver eseguito l'upgrade a iOS 14, verrà 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 dei dispositivi 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 la GCKUICastButton per la prima volta. All'utente verrà mostrato un messaggio informativo che spiega il motivo per cui è necessaria l'autorizzazione di rete locale. In seguito, verrà visualizzato il messaggio LNA per iOS 14. Il 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 del dispositivo inizierà in base al valore del flag GCKCastOptions::disableDiscoveryAutostart.

Domande frequenti

Cosa succede se pubblico di nuovo l'app del mittente di trasmissione con Cast SDK 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 di multicast esclusivamente allo scopo di supportare Google Cast. Se prevedi di creare con Xcode 12, devi rilasciare l'app con Cast 4.6.0.

Se rilascio la mia app con il nuovo SDK Cast, quali saranno i miei utenti in esecuzione su iOS 13 o versioni precedenti?

L'utente continuerà a vedere la stessa esperienza utente prima dell'uscita dell'app. Le modifiche visibili all'utente sono limitate agli utenti che eseguono iOS 14.

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

  • Aggiorna l'app Info.plist della tua app in modo da includere una descrizione di utilizzo della rete locale.
  • Aggiungi NSBonjourServices al Info.plist della tua app e fornisci i nomi del servizio Bonjour per Cast e il tuo ID app.
  • Esegui l'upgrade dell'app del mittente per utilizzare l'SDK Cast 4.6.0.
  • Ripubblica l'app nell'App Store di Apple.

Perché i dispositivi non vengono più visualizzati nel mio selettore di dispositivi personalizzati dopo l'upgrade alla versione 4.6.0?

Si tratta di un problema noto che può verificarsi se utilizzi un selettore di dispositivi personalizzati anziché il selettore standard. Nella versione 4.4.8 dell'SDK Cast e versioni precedenti, la scansione dei dispositivi era 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 la richiesta di autorizzazioni di accesso alla rete locale verrà visualizzata dopo la prima scansione dell'app. Potresti visualizzare finestre di dialogo di autorizzazioni in punti casuali della tua app.

Gli sviluppatori che creano un selettore di dispositivi personalizzati per la propria app dovranno 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 relativi alle autorizzazioni 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 della modalità ospite che non richiede l'autorizzazione Bluetooth®. Questa funzionalità è disponibile sia sul sito per sviluppatori sia sul nuovo google-cast-sdk-no-bluetooth Cocoapods. Tieni presente che la funzionalità modalità ospite consente all'app del mittente di rilevare i dispositivi di trasmissione in una determinata distanza fisica senza essere sulla stessa rete, utilizzando un PIN visualizzato sui dispositivi abilitati alla 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 a Info.plist.

È necessario rimuovere il supporto della modalità ospite

  • Consente di impedire alla tua app di richiedere i requisiti di Bluetooth Bluetooth.
  • Integra la versione più recente dell'SDK Google Cast senza supporto Bluetooth®.
  • Questa funzionalità è disponibile sia sul sito per sviluppatori sia sul nuovo google-cast-sdk-no-bluetooth Cocoapods.

Suddivisione per app

Di seguito è riportata un'analisi dettagliata a seconda della versione dell'SDK iOS che stai utilizzando:

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 a Cast SDK v4.4.4, se disponibile.
  • iOS 13 chiederà agli utenti di concedere le autorizzazioni Bluetooth® all'app.

App realizzate con l'SDK iOS 13

  • Azione richiesta: l'aggiornamento a Cast SDK 4.4.4 o al 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.
  • Leggi la documentazione per gli sviluppatori per avere ulteriori informazioni sull'integrazione della modalità ospite o sulla disattivazione della modalità ospite con l'SDK Google Cast e nessun supporto Bluetooth®.