Ich frage mich, ob dieses Multipeer Connectivity-Framework für die Verwendung in der realen Welt bereit ist, angesichts all der Fehler, die von der Gemeinschaft aufgetreten sind. Ich denke, ich richte es richtig ein, aber all die anderen Beispielprojekte, die ich ausprobiert habe, stoßen auf ähnliche Probleme.Multipeer Connectivity Framework - Lost Peer bleibt in Sitzung
Das Problem, das ich habe zu einem gewissen Thema gebunden werden kann, inhärent Bonjour oder etwas, ich kann es nicht herausgefunden, aber im Grunde ist das Problem wie folgt:
- ich eine aktives
MCSession
habe mit eine Anzahl von Peers. - Nun, wenn ein Gerät in einer Sitzung ist, und dann Force beendet, bleibt dieser "Peer" für eine unbestimmte Zeit verbunden.
- Es gibt nichts, was ich tun kann, um diesen Benutzer zu zwingen, obwohl die
browser:lostPeer:
Methode für diesen Peer aufgerufen wird und nicht mehr im Browser als "Nearby" angezeigt wird. - Die Methode
session:peer:didChangeState:
wird für diesen Peer nicht aufgerufen. - Wenn der Peer, der die Kraft verlassen hat, zurück zur App kommt, werden sie wieder von der
browser:foundPeer:withDiscoveryInfo:
"gefunden", existieren aber auch noch in dersession.connectedPeers
NSArray. Offensichtlich erhalten sie keine Daten oder Updates über die Sitzung und sind nicht wirklich verbunden. - Die einzige Sache, die funktioniert, um diesen ursprünglichen Peer als
MCSessionStateNotConnected
zu der Sitzung zu registrieren, ist, indem Sie diesen Peer wieder mit der ursprünglichen Sitzung verbinden. Dann gibt es einen doppelten Anruf ansession:peer:didChangeState:
, wo die neue Instanz der PeerIDMCSessionStateConnected
ist und kurz nach der alten Instanz der PeerID mitMCSessionStateNotConnected
aufruft.
Die Probe Chat-Anwendung demonstriert dieses Problem gut: https://developer.apple.com/library/ios/samplecode/MultipeerGroupChat/Introduction/Intro.html
Da es keine Möglichkeit zu sein scheint manuell einen Peer aus der Sitzung entfernen zwingen, was soll ich tun? Soll ich die Session irgendwie neu aufbauen?
Dieses Framework scheint ein bisschen Chaos, aber ich versuche, das Urteil zu reservieren!
Ich hatte eine funktionierende Anwendung aber brauchte es letzten 8 Kollegen zu erweitern, seine jetzt pleite :(ich habe. ein Problem bisher gefunden, nicht versehentlich starke Referenzen auf MC-Objekte, wenn in den Hintergrund (ich weiß, gilt breiter als nur MC .. aber eine Erinnerung hilft!) – 300baud
Ich habe das gleiche Problem Manchmal MCSession Sitzung: Peer : didChangeState: wird nicht mit MCSessionStateNotConnected für einen Peer aufgerufen, der die Verbindung getrennt hat Wenn mehrere Peers verbunden sind, werden einige Peers benachrichtigt andere werden nicht. Manchmal werden alle richtig benachrichtigt. Ich war in der Lage, die Ursache dafür aufzuspüren. Es passiert sogar, wenn ein Peer seine Trennmethode aufruft. –