2016-06-14 13 views
0

Ich verwende Multipeer Connectivity Framework in meiner APP und es funktioniert absolut gut, aber wenn APP eine API aufruft oder eine Datei vom Server herunterlädt verzögert sich die Antwort. Manchmal ist es fehlgeschlagen und manchmal bekomme ich einen Timeout-Fehler.APIs reagieren nicht schnell, wenn APP Multipeer Connectivity Framework verwendet

Ich habe auch überprüft "Network" Status auf xCode Debug Navigator und festgestellt, dass die Geschwindigkeit geht auf und ab sofort und nie mehr als 6kb/s und manchmal zeigt es als 0 kb/s, aber wenn ich Multipeer Connectivity dann deaktivieren funktioniert gut und Geschwindigkeit geht mit 70kb/s zu.

Ich habe auch bemerkt, dass, wenn Bluetooth eingeschaltet ist, dann passiert es nicht mit dem WLAN.

Jeder Vorschlag wäre wirklich nennenswert.

Antwort

0

Dies geschieht, weil, wenn Werbung, Multipeer immer auf dem Wifi wirbt (es gibt keine Möglichkeit, nur Bluetooth zu sagen). Die Art, wie es wirbt, ist durch Wechsel der Wifi-Zugangsmodus in Ad-hoc mehrere Male pro Sekunde, um andere Peers zu finden, dann zurück in den AP-Modus (dh wieder die Verbindung zu Ihrem WLAN-Router). Dies ist sehr störend für große Übertragungen.

Sie haben zwei Möglichkeiten, dies zu beheben:

1) so bald wie möglich, nachdem immer verbunden, stopAdvertising() nennen. Dadurch wird verhindert, dass der WLAN-Modus ständig geändert wird, und der Durchsatz wird wieder normalisiert. Warnung: Sie können dies nicht mikroverwalten, da es bis zu 30 Sekunden nach dem Anruf stopAdvertising() dauert

2) von Multipeer auf ein alternatives Framework wechseln, das Sie nur Bluetooth und nur Bluetooth verwenden können. Ich schrieb eine namens BluePeer, die ich in meinen Apps verwende. Es ist Unicast (nicht Multicast) und unterstützt Rollen wie Client/Server (sowie rollenlose wie Multipeer)