Autorizzazioni e rilevamento su iOS

Le applicazioni che cercano dispositivi sulla rete locale ora mostrano agli utenti una finestra di dialogo di autorizzazione una tantum per trovare i dispositivi della rete locale e connettersi. La piattaforma 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 alla UX dell'SDK per le app che utilizzano il selettore di dispositivi standard. Queste modifiche alla UX 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.

L'SDK Cast per iOS v4.6.0 o versioni successive può essere aggiunto con Swift Package Manager seguendo la configurazione di Swift Package Manager o scaricato manualmente seguendo la configurazione manuale. Questa versione 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 con 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 autorizzazioni di accesso alla rete locale di iOS fornita da Apple. I mockup di seguito illustrano il flusso:

Flusso delle autorizzazioni di accesso alla rete locale

Cast non disponibile

A partire dall'SDK per 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, toccando 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 di seguito:

Flusso con Cast non disponibile

Aggiornamento dell'app

  1. Aggiungi l'SDK Cast iOS 4.8.6 al tuo progetto

    Se utilizzi Swift Package Manager, aggiorna il pacchetto google-cast-ios-sdk alla versione 4.8.6.

    In caso contrario, importa l'SDK manualmente.

  2. Aggiungi NSBonjourServices al tuo Info.plist

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

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

    L'appID è il tuo receiverID, che corrisponde all'ID definito nel tuo GCKDiscoveryCriteria.

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

    <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 il rilevamento di Cast e altri servizi di rilevamento, 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 Accesso alla rete locale di iOS, come mostrato nel modello.

    Immagine della finestra di dialogo delle autorizzazioni di accesso alla rete locale di Cast
  4. Ripubblica l'app nell'App Store di Apple

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

Personalizzazioni

Avvio del rilevamento dei 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 di trasmissione sulla rete locale, viene visualizzato il nuovo interstitial LNA, 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 alcuni elementi della UX:

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 il motivo per cui è necessaria l'autorizzazione per la rete locale. Dopo questo messaggio, verrà visualizzato il messaggio LNA per iOS. Il rilevamento dei dispositivi di trasmissione inizia dopo la conferma del messaggio.

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

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

Domande frequenti

Cosa succede se ripubblico la mia app mittente Cast con l'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 networking multicast da Apple. Tieni presente che Apple non concederà i diritti di multicast esclusivamente per supportare Cast. Se prevedi di eseguire la build con Xcode 12, devi rilasciare l'app con Cast 4.6.0.

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

  • Aggiorna il file Info.plist dell'app per includere una descrizione dell'utilizzo della rete locale.
  • Aggiungi NSBonjourServices al file Info.plist della tua app e fornisci i nomi dei servizi Bonjour per Cast e l'ID della tua app.
  • Esegui l'upgrade dell'app mittente per utilizzare l'SDK Cast 4.6.0.
  • Rilascia di nuovo l'app nell'App Store di Apple.

Perché i dispositivi hanno smesso di essere visualizzati nel mio 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 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 di accesso alla rete locale (LNA) verrà 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 loro app dovranno fornire un interstitial una tantum prima di avviare la scansione dei dispositivi per la prima volta.