Mi chiedo se questo framework Multipeer Connectivity sia pronto per l'uso nel mondo reale, dati tutti i bug che sono stati riscontrati dalla comunità. Penso che sto configurando correttamente, ma tutti gli altri progetti di esempio che ho provato incontrano problemi simili.Multipeer Connectivity Framework - Lost Peer rimane in sessione
Il problema che sto avendo possono essere legati a qualche problema inerente Bonjour o qualcosa, non riesco a capire, ma fondamentalmente il problema è il seguente:
- Ho un attivo
MCSession
con un certo numero di colleghi. - Ora, se un dispositivo è in una sessione e quindi si chiude forzatamente, quel "peer" rimane connesso per un periodo di tempo indefinito.
- Non c'è nulla che io possa fare per forzare quell'utente, anche se il metodo
browser:lostPeer:
viene chiamato per quel peer e non viene più visualizzato nel browser come "Nelle vicinanze". - Il metodo
session:peer:didChangeState:
non viene chiamato per quel peer. - Quando quel peer che forza abbandonata ritorna all'app, sono nuovamente "Trovato" dallo
browser:foundPeer:withDiscoveryInfo:
ma esistono ancora anche nel filtro NSArraysession.connectedPeers
. Ovviamente non ricevono alcun dato o aggiornamento sulla sessione e non sono effettivamente connessi. - L'unica cosa che sembra funzionare per registrare quel peer originale come
MCSessionStateNotConnected
per la sessione è ricollegando quel peer alla sessione originale. Quindi c'è una chiamata duplicata asession:peer:didChangeState:
dove la nuova istanza del peerID èMCSessionStateConnected
e poco dopo la precedente istanza delle chiamate peerID conMCSessionStateNotConnected
.
L'applicazione di chat esempio illustra questo problema così: https://developer.apple.com/library/ios/samplecode/MultipeerGroupChat/Introduction/Intro.html
Dal momento non sembra essere un modo per forzare rimuovere manualmente un pari dalla sessione, cosa devo fare? Dovrei provare e ricostruire la sessione in qualche modo?
Questo quadro sembra un po 'un disastro, ma sto cercando di esprimere un giudizio!
ho avuto una domanda di lavoro, ma necessaria per estenderla oltre 8 coetanei, ora il suo rotto :(ho. trovato un problema finora, non inavvertitamente avere forti riferimenti agli oggetti MC quando si passa in background (lo so, si applica più ampiamente di MC .. ma un promemoria aiuta!) – 300baud
Ho lo stesso problema. A volte la sessione di MCSession: peer : didChangeState: non verrà chiamato con MCSessionStateNotConnected per un peer che ha disconnessione. Quando più peer sono connessi, alcuni peer riceveranno una notifica l'altro no. A volte tutti vengono avvisati correttamente. Sono stato in grado di rintracciare la causa principale di esso. Succede anche quando un peer chiama il suo metodo di disconnessione. –