Cosa fa scattare la notifica di autorizzazione "Vorrei trovare e connettersi ai dispositivi sulla rete locale" su iOS 14?

Aug 21 2020

Quali chiamate di metodo effettive, escluso Bonjour, attivano la notifica di autorizzazione "Vorrei trovare e connettersi ai dispositivi sulla rete locale" su iOS 14?

Questa è la schermata della sessione WWDC su questa nuova autorizzazione. Che è solo in qualche modo utile come panoramica. Sono più interessato a capire cosa attivano tutte le chiamate ai metodi.

Risposte

4 matt Aug 21 2020 at 21:46

In poche parole, Bonjour. Il suo utilizzo non è più "trasparente". Vederehttps://developer.apple.com/videos/play/wwdc2020/10110/ per maggiori informazioni:

Se la tua app interagisce con i dispositivi che utilizzano Bonjour o altri protocolli di rete locali, devi aggiungere il supporto per le autorizzazioni per la privacy della rete locale in iOS 14.

Anche un'app esistente è soggetta a questa regola; il primo tentativo di utilizzare Bonjour attiva l'avviso di autorizzazione.

1 Columbo Oct 15 2020 at 15:39

Una delle mie app ha attivato questo messaggio in modo imprevisto nella nostra modalità multiplayer Internet. Usiamo RakNet per la nostra rete (che è un ++ lib C che le prese usi BSD per inviare / ricevere UDP) e sono stato in grado di monitorare il problema alla RNS2_Berkley::BindSharedfunzione di qui .

Dopo aver creato un socket UDP, RakNet verifica l'integrità / validità del socket facendolo inviare un piccolo pacchetto di prova a se stesso. iOS 14 contrassegnava questo comportamento di invio a sé come comunicazione sulla rete locale. Non sono sicuro che questo comportamento di invio a sé sia ​​un modello comune nella programmazione dei socket o una particolare stranezza di RakNet. In modo frustrante, il prompt del sistema operativo non è apparso fino a quando il socket è stato utilizzato per davvero, il che ha reso il problema molto difficile da tracciare.

Penso che questo sia un falso positivo dal sistema operativo e l'ho sollevato con Apple (FB8802121). Non starò trattenendo il respiro, quindi ho appena disabilitato il comportamento di RakNet per iOS e spero che non fosse troppo importante.

Modifica: per rispondere più direttamente alla domanda originale: sendtoè una chiamata al metodo che può attivare questo prompt.

1 WilliamGP Oct 16 2020 at 17:32

Apple (Eskimo on the Dev Forums) ha rilasciato una FAQ che fornisce maggiori dettagli su questo avviso: https://developer.apple.com/forums/thread/663858

In particolare, fornire maggiori informazioni su ciò che attiva questo avviso è la FAQ-2: https://developer.apple.com/forums/thread/663874

AtifRehman Oct 05 2020 at 20:53

Per quanto riguarda iOS 14: richiesta di autorizzazione: vorrei trovare e connettermi ai dispositivi sulla rete locale e dopo numerose distribuzioni sul mio dispositivo fisico, ho capito cosa causa questo nel mio caso.

Ho un'app Xamarin.Forms che

  1. chiama localhost: xxxx per fare un po 'di registrazione locale mentre sviluppo
  2. Uso un prodotto chiamato LiveSharp che esegue il ricaricamento a caldo locale per le modifiche al codice XAML E C #.

Quindi Livesharp comunica effettivamente anche con un server sul mio localhost. Dopo aver disabilitato entrambi questi e una nuova installazione pulita sul mio dispositivo fisico, la richiesta di autorizzazione è ANDATA .. Yay

Nota: ho dovuto rimuovere completamente i pacchetti nuget di LiveSharp dal mio progetto. Inoltre ho provato a riattivare la mia registrazione localhost, e per qualche motivo la richiesta di autorizzazione non viene visualizzata ..: headcratch

Quindi: rimuovi qualsiasi comunicazione localhost che si verifica nella tua app. O almeno inserisci un'istruzione if attorno ad esso che lo consenta se impostato su true in appsettings