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. Influenzerà anche il modo in cui integri l'SDK Cast nella tua app. Per mantenere la funzionalità Cast con le versioni più recenti di iOS, devi apportare aggiornamenti per gestire queste modifiche alle autorizzazioni.

iOS 14

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

A partire da iOS 14, le applicazioni che scansionano i dispositivi sulla rete locale ora mostreranno agli utenti una finestra di dialogo di autorizzazione una tantum per trovare e connettersi ai dispositivi della rete locale. La piattaforma Cast utilizza la rete locale per rilevare e controllare i dispositivi Cast, quindi se l'utente nega l'autorizzazione, non potrà trasmettere.

Per migliorare l'esperienza utente, stiamo apportando alcune modifiche all'esperienza utente dell'SDK per le app che utilizzano il selettore di dispositivi standard. Queste modifiche all'esperienza utente rendono più evidente agli utenti il motivo per cui sono necessarie le 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 che utilizzano la versione 4.4.8 o precedenti continueranno a funzionare a condizione che siano create con Xcode 11.7 o versioni precedenti. Se stai creando app 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 la tua app Cast continui a funzionare correttamente.

L'SDK Cast per iOS versione 4.6.0 o successive può essere scaricata 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 Cast sulla rete. Il pulsante Trasmetti ora 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

Trasmissione per la prima volta

La prima volta che un utente tenta di trasmettere, viene visualizzata una finestra di dialogo interstiziale di accesso alla rete locale (LNA) che spiega perché è necessario l'accesso alla rete locale, seguita dalla richiesta di autorizzazioni di accesso alla rete locale iOS fornita da Apple. I mock-up riportati di seguito illustrano il flusso:

Flusso delle autorizzazioni di accesso alla rete locale

Trasmissione non disponibile

A partire dall'SDK mittente per iOS 4.6.0, il pulsante Trasmetti viene sempre visualizzato quando l'utente è connesso al 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 per cui la trasmissione non è disponibile, come mostrato nei mock-up di seguito:

Flow con Cast non disponibile

Aggiornare l'app su iOS 14

  1. Aggiungere l'SDK Cast per iOS 4.8.3 al progetto

    Se utilizzi CocoaPods, usa pod update per aggiungere l'SDK 4.8.3 al tuo progetto.

    In caso contrario, recupera manualmente l'SDK.

  2. Aggiungi NSBonjourServices al tuo Info.plist

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

    Per il corretto funzionamento del rilevamento dei dispositivi, devi aggiungere sia _googlecast._tcp sia _<your-app-id>._googlecast._tcp come servizi.

    L'appID è il tuo receiverID, ovvero lo stesso ID definito nel tuo GCKDiscoveryCriteria.

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

    <key>NSBonjourServices</key>
    <array>
      <string>_googlecast._tcp</string>
      <string>_ABCD1234._googlecast._tcp</string>
    </array>
  3. Aggiungi NSLocalNetworkUsageDescription al tuo Info.plist

    Ti consigliamo vivamente di personalizzare il messaggio mostrato nel prompt della rete locale aggiungendo una stringa di autorizzazione specifica per l'app nel file Info.plist dell'app per NSLocalNetworkUsageDescription, ad esempio per descrivere l'individuazione di Cast e altri servizi di individuazione, come DIAL.

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi
    network.</string>

    Questo messaggio verrà visualizzato nella finestra di dialogo di accesso alla rete locale di iOS come mostrato nel mock-up.

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

    Ti consigliamo inoltre di ripubblicare la tua app utilizzando la versione 4.8.3 il prima possibile.

Personalizzazioni

Avvio del rilevamento dei dispositivi di trasmissione

Per impostazione predefinita, la ricerca dei dispositivi di trasmissione viene avviata la prima volta che l'utente tocca il pulsante Trasmetti (GCKUICastButton). Se è la prima volta che l'utente tenta di utilizzare l'app Google Home sulla rete locale dopo l'upgrade a iOS 14, viene visualizzato il nuovo interstitial per l'accesso alla rete locale, seguito dalla finestra di dialogo delle autorizzazioni di accesso alla rete locale di iOS.

È disponibile un nuovo flag che ti consente 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, il rilevamento dei dispositivi di trasmissione inizia quando un utente tocca GCKUICastButton per la prima volta. All'utente verrà mostrato un messaggio informativo che spiega perché è necessaria l'autorizzazione per la rete locale. Dopo questo messaggio, verrà visualizzato il messaggio LNA di iOS 14. La ricerca del dispositivo di trasmissione inizia dopo la conferma del messaggio.

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

Se impostato su false, la rilevazione dei dispositivi inizierà in base al valore del flag GCKCastOptions::disableDiscoveryAutostart.

Domande frequenti

Cosa succede se rilascio di nuovo la mia app mittente Cast con Cast SDK 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 multicast esclusivamente per supportare Cast. Se prevedi di creare con Xcode 12, devi rilasciare la tua app con Cast 4.6.0.

Se rilascio di nuovo la mia app con il nuovo SDK Cast, cosa succederà agli utenti che utilizzano iOS 13 o versioni precedenti?

Continueranno a usufruire della stessa esperienza utente che avevano prima della nuova release dell'app. Le modifiche visibili agli utenti sono limitate a quelli che utilizzano iOS 14.

Cosa dovrò fare per aggiornare la mia app una volta rilasciata la nuova versione dell'SDK Cast?

  • Aggiorna Info.plist della tua app per 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 l'ID app.
  • Esegui l'upgrade dell'app mittente per utilizzare Cast SDK 4.6.0.
  • Rilascia di nuovo l'app nell'App Store 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é 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 dei dispositivi.

Il motivo di questa modifica è che la richiesta di autorizzazioni per l'accesso alla rete locale (LNA) viene visualizzata dopo la prima scansione dell'app. Ciò potrebbe comportare la visualizzazione di finestre di dialogo delle autorizzazioni in posizioni casuali nella tua app.

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 Google Cast SDK.

A partire da Google Cast SDK v4.4.3, è disponibile un SDK aggiuntivo che non richiede l'autorizzazione Bluetooth®. È disponibile sia sul sito per sviluppatori sia sul nuovo google-cast-sdk-no-bluetooth Cocoapods.

Suddivisione per app

Ecco una suddivisione in base alla versione dell'SDK iOS che stai attualmente utilizzando:

App create con l'SDK iOS 12 o versioni precedenti

  • Azione consigliata. Le prestazioni di rilevamento dei dispositivi potrebbero diminuire se vengono eseguiti su iOS 13, ma continueranno a funzionare. Consigliamo vivamente agli sviluppatori di eseguire l'upgrade all'SDK Cast v4.4.4 quando disponibile.
  • iOS 13 chiederà agli utenti di concedere le autorizzazioni Bluetooth® all'app.

App create con l'SDK 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. L'upgrade a Cast SDK 4.4.4 è necessario per garantire un'esperienza di trasmissione affidabile su iOS 13.