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à anche sul modo in cui crei l'SDK Cast nella tua app. Affinché l'app mantenga la funzionalità di trasmissione con le ultime versioni di iOS, devi apportare aggiornamenti per gestire le modifiche alle autorizzazioni.

iOS 14

Gli sviluppatori devono aggiornare le proprie app di mittenti di Google Cast per iOS all'SDK Google Cast versione 4.6.0 o successiva. Queste versioni forniscono il supporto per iOS 14 e i relativi requisiti.

A partire da iOS 14, le applicazioni che analizzano i dispositivi sulla rete locale richiederanno agli utenti con 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, 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 utilizzano il selettore di dispositivi standard. Queste modifiche dell'esperienza utente rendono più ovvio agli utenti perché sono necessarie autorizzazioni di accesso alla rete locale, nonché come attivare la trasmissione se l'accesso ai dispositivi della rete locale è stato disattivato.

Le app create con versioni dell'SDK Cast con la versione 4.4.8 o precedenti continueranno a funzionare, purché vengano create 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 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 oppure manualmente seguendo la configurazione manuale. Questa release include modifiche al meccanismo di rilevamento sottostante per consentire alle app sviluppate con Xcode 12 di trovare i dispositivi di trasmissione sulla rete. Il pulsante Trasmetti ora dovrebbe essere sempre visualizzato. Se non è disponibile alcun dispositivo 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 dal messaggio relativo alle autorizzazioni di accesso alla rete locale di iOS fornito 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 per mittenti di 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, toccando il pulsante Trasmetti viene visualizzata una finestra di dialogo che offre all'utente suggerimenti su possibili motivi per cui la trasmissione non è disponibile, come mostrato negli esempi di seguito:

Flusso con trasmissione non disponibile

Aggiornamento dell'app su iOS 14

  1. Aggiungere l'SDK Cast 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, estrai l'SDK manualmente.

  2. Aggiungi NSBonjourServices a Info.plist

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

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

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

    Aggiorna la definizione di 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>
  3. Aggiungi NSLocalNetworkUsageDescription a Info.plist

    Ti consigliamo vivamente di personalizzare il messaggio mostrato 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 sulla 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 Trasmetti le autorizzazioni di accesso alla rete locale
  4. Rilasciare di nuovo l'app sull'App Store di Apple

    Ti consigliamo anche di rilasciare nuovamente l'app utilizzando la versione 4.8.1 il prima possibile.

Personalizzazioni

Avvio rilevamento 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 Google Cast sulla rete locale dopo l'upgrade a iOS 14, verrà visualizzato il nuovo interstitial LNA, seguito dalla finestra di dialogo delle autorizzazioni di 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'UX:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

Il valore predefinito è true. Questo flag è applicabile solo se il flag GCKCastOptions::disableDiscoveryAutostart è impostato su false.

Se impostato su true, il rilevamento dei dispositivi di trasmissione inizia quando un utente tocca GCKUICastButton per la prima volta. Verrà mostrato all'utente un messaggio informativo che lo informa del motivo per cui è necessaria l'autorizzazione di accesso alla rete locale. Dopo il messaggio, verrà visualizzato il messaggio LNA per iOS 14. Il rilevamento dei dispositivi di trasmissione inizia dopo la conferma del messaggio.

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

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

Domande frequenti.

Che cosa succede se rilascerò la mia app mittente con Google Cast SDK 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 da Apple il diritto relativo al multicast per la rete. Tieni presente che Apple non concederà diritti multicast esclusivamente allo scopo di supportare la trasmissione. Se prevedi di sviluppare con Xcode 12, devi rilasciare l'app con Cast 4.6.0.

Se effettuo nuovamente il rilascio della mia app con il nuovo SDK Cast, che esperienza avranno gli utenti con iOS 13 o versioni precedenti?

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

Che cosa devo fare per aggiornare la mia app una volta rilasciata la nuova versione dell'SDK Cast?

  • Aggiorna Info.plist dell'app per includere una descrizione dell'utilizzo della rete locale.
  • Aggiungi NSBonjourServices a Info.plist dell'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 nuovamente l'app nell'App Store di Apple.

Perché i dispositivi non vengono più visualizzati nel 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é quello standard. Nella versione 4.4.8 dell'SDK Google 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 dei dispositivi.

Il motivo di questa modifica è che la richiesta delle 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 punti casuali.

Gli sviluppatori che creano un selettore di dispositivi personalizzato per la propria 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 di autorizzazione che interessano le app che utilizzano l'SDK Google Cast.

A partire dall'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 sulla nuova versione di google-cast-sdk-no-bluetooth Cocoapods.

Analisi per app

Di seguito è riportata una suddivisione in base alla versione dell'SDK per iOS attualmente in uso:

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

  • Azione consigliata. Le prestazioni di rilevamento dei dispositivi potrebbero diminuire quando si esegue su iOS 13, ma il dispositivo continuerà a funzionare. Consigliamo vivamente agli sviluppatori di eseguire l'upgrade all'SDK Cast v4.4.4, quando disponibile.
  • iOS 13 richiederà agli utenti di concedere autorizzazioni Bluetooth® all'app.

App create con l'SDK per iOS 13

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