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. Influirà inoltre sulla modalità di creazione dell'SDK Cast nell'app. Affinché l'app mantenga la funzionalità di trasmissione con le versioni più recenti di iOS, devi apportare gli aggiornamenti per gestire queste modifiche delle autorizzazioni.

iOS 14

Gli sviluppatori dovrebbero aggiornare le proprie app di mittenti di iOS Cast all'SDK di Google Cast 4.6.0 o 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 di trovare e connettersi ai dispositivi di rete locale. 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'esperienza utente per l'SDK per le app che usano il selettore standard di dispositivi. Queste modifiche all'esperienza utente indicano agli utenti perché sono necessarie le autorizzazioni di accesso alla rete locale e come attivare la trasmissione se l'accesso ai dispositivi di 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 sviluppate 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 Cast v4.6.0 o versioni successive 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 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 fornisce indicazioni sul motivo per cui i dispositivi non sono disponibili, incluse informazioni su come riattivare l'autorizzazione di accesso alla rete locale.

Modifiche all'SDK di trasmissione

Trasmetti 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 il motivo per cui è necessario l'accesso al networking locale, seguita dalla richiesta di autorizzazioni di accesso alla rete locale iOS fornita da Apple. Le simulazioni di seguito illustrano il flusso:

Flusso di autorizzazioni di accesso alla rete locale

Trasmissione non disponibile

A partire dall'SDK 4.6.0 per iOS, il pulsante Trasmetti viene sempre visualizzato quando l'utente è connesso alla rete Wi-Fi. Se i dispositivi di trasmissione non sono disponibili, se tocchi il pulsante Trasmetti si apre una finestra di dialogo che offre all'utente suggerimenti sui possibili motivi della trasmissione, come mostrato nei simulazioni qui sotto:

Flusso con trasmissione non disponibile

Aggiornare l'app su iOS 14

  1. Aggiungere l'SDK Cast iOS 4.7.0 al progetto

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

    In caso contrario, richiama manualmente l'SDK.

  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 rilevamento dei dispositivi.

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

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

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

    Consigliamo vivamente di personalizzare il messaggio mostrato nel messaggio sulla rete locale aggiungendo una stringa di autorizzazione specifica dell'app nel file Info.plist dell'app per NSLocalNetworkUsageDescription, ad esempio per descrivere il rilevamento della trasmissione 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 iOS come mostrato nel modello.

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

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

Personalizzazioni

Avvio avvio dispositivo dispositivo

Per impostazione predefinita, il primo dispositivo 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, viene visualizzato il nuovo interstitial LNA, seguito dalla finestra di dialogo Autorizzazioni di accesso alla rete locale iOS.

È disponibile un nuovo flag che ti consente di controllare l'avvio dell'individuazione 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, 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 per spiegare perché è necessaria l'autorizzazione di rete locale. In seguito, verrà visualizzato il messaggio LNA di iOS 14. Il rilevamento dei dispositivi di trasmissione inizia dopo la conferma del messaggio.

Nei lanci delle app successive, GCKUICastButton viene sempre visualizzato.

Se è impostata su false, la funzionalità di rilevamento dei dispositivi verrà avviata in base al valore del flag GCKCastOptions::disableDiscoveryAutostart.

Domande frequenti

Cosa succede se rilascio la mia app di trasmissione Cast con SDK Cast v4.4.8 e Xcode 12?

La tua app potrebbe non essere in grado di rilevare i dispositivi di trasmissione 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 trasmissione multicast solamente allo scopo di supportare la trasmissione. 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, cosa faranno i miei utenti con iOS 13 o versioni precedenti?

Continuerà a visualizzare la stessa esperienza utente che aveva prima di rilasciare nuovamente l'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'app Info.plist della tua app per includere una descrizione dell'utilizzo della rete locale.
  • Aggiungi NSBonjourServices a Info.plist dell'app e fornisci i nomi del servizio Bonjour per Cast e il tuo ID app.
  • Esegui l'upgrade dell'app mittente per utilizzare l'SDK Cast 4.6.0.
  • Rilascia di nuovo l'app sull'Apple App Store.

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

Questo è 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 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 delle autorizzazioni di accesso alla rete locale (LNA) verrà visualizzata dopo la prima scansione dell'app. Ciò potrebbe far apparire finestre di dialogo delle autorizzazioni in posizioni casuali nella 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 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 il supporto per la modalità ospite che non richiede l'autorizzazione di accesso al Bluetooth®. disponibile sul sito per sviluppatori e sul nuovo google-cast-sdk-no-bluetooth Cocoapods. Ti ricordiamo che la modalità ospite consente all'app del mittente di rilevare i dispositivi di trasmissione all'interno di una determinata prossimità fisica senza trovarsi sulla stessa rete, utilizzando un PIN visualizzato sui dispositivi abilitati alla modalità ospite.

Per preparare l'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 al tuo dispositivo Info.plist l'utilizzo del Bluetooth® per i tuoi utenti.

Devi rimuovere il supporto della modalità ospite

  • Impedisce alla tua app di richiedere i requisiti di Trasmetti Bluetooth®.
  • Integra l'ultima versione dell'SDK Google Cast senza supporto del Bluetooth®.
  • disponibile sul sito per sviluppatori e sul nuovo google-cast-sdk-no-bluetooth Cocoapods.

Suddivisione per app

Di seguito è riportata un'analisi dettagliata a seconda della versione dell'SDK per iOS attualmente in uso:

App sviluppate con iOS 12 o versioni precedenti

  • Azione consigliata: Le prestazioni di rilevamento dei dispositivi potrebbero diminuire quando sono in esecuzione su iOS 13, ma saranno comunque funzionali. Consigliamo vivamente agli sviluppatori di eseguire l'upgrade alla versione 4.4.4 dell'SDK Cast, quando disponibile.
  • iOS 13 chiederà agli utenti di concedere le autorizzazioni di accesso al Bluetooth® all'app.

App sviluppate 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.
  • Consulta la documentazione per gli sviluppatori per ulteriori informazioni su come integrare la modalità ospite o disattivare la modalità ospite con l'SDK Google Cast e nessun supporto Bluetooth®.