2016-08-26 3 views
1

Ich möchte Datenrate (Bandbreiteneinschränkung) für meine Mac OS X-Anwendung zu reduzieren.
Ich versuche bereits Platz Schlaf in - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data Methode, aber es hilft mir nicht.
Ich bin auch diese Frage
Limit NSURLConnection data rate? (Bandwidth throttling)
überprüfen, aber das wird mir nicht helfen.
Gibt es einen anderen Weg, um die Bandbreite Drosselung in Objektiv cBandbreite Drosselung in Ziel c (Grenze NSURLConnection Datenrate)

+0

Ich habe das gleiche Problem in meiner App, teilen Sie bitte ein Ans für diese Frage –

Antwort

1

zu erreichen Das Problem ist, dass die Arbeit in einem anderen Thread passiert.

Wenn Sie wirklich Bandbreitendrosselung durchführen müssen, gibt es so gut wie nur eine Möglichkeit, nämlich die Socket-Verbindung selbst zu verwalten. Das bedeutet entweder das Schreiben eigener HTTP-Request-Klassen oder die Verwendung von libcurl.

Und beachten Sie, dass, wenn Sie diesen Pfad gehen, wenn Sie jemals auf iOS tun müssen, Sie auch mindestens gelegentlich kurze High-Level-Anfragen mit NSURLConnection oder NSURLSession machen müssen, um das Mobilfunkgerät wach zu halten.

Sie können Drosseln auch durchführen, indem Sie eine HTTP-Proxybibliothek in Ihrer App einbetten, NSURLSession anstelle von NSURLConnection verwenden und sie so konfigurieren, dass alle Anforderungen über diesen Proxy gesendet werden. Ändern Sie anschließend den Proxycode, um die Geschwindigkeit zu begrenzen Es liest Daten aus dem Socket.

Keiner dieser Ansätze ist für schwache Nerven.

Oder wenn es Ihnen egal ist, ob die App selbst die Drosselung durchführt, gibt es eine Reihe von Tools zur Bandbreitenformung, die Sie in Betracht ziehen könnten (z. B. Netzwerk-Link-Conditioner).

+0

Dieser ein ans half mir –