Symulator iPhone'a - Symuluj wolne połączenie?

125

Czy istnieje sposób na spowolnienie połączenia internetowego z symulatorem iPhone'a, aby naśladować reakcję aplikacji, gdy znajdujesz się w wolnym miejscu w sieci komórkowej?

Chris
źródło
Odpowiedź Alana powinna zostać przyjęta.
Stanislav Mayorov
@StanislavMayorov to pytanie jest sprzed 9 lat. Następnie 4 lata później Alan udzielił zaktualizowanej odpowiedzi. Minęło już 5 lat. Przepraszam, że nie przechodzę i nie rozważam ponownie zaakceptowanych odpowiedzi na moje stare pytania.
Chris

Odpowiedzi:

67

Aplikacja o nazwie SpeedLimit

https://github.com/mschrag/speedlimit

Działa świetnie.

chris.

PyjamaSam
źródło
niesamowite właśnie to wypróbowałem i załatwia sprawę. Dzięki!
Max MacLeod
Yosemite: nie udało się ustawić ograniczenia prędkości
Injectios
2
Zepsuty, mówiFailed to set speed limit
vintagexav
1
Właściwy sposób, aby to zrobić jest wyjaśnione przez Alan H. odpowiedź .
lifeisfoo
„Nie mogę już dłużej utrzymywać tego projektu. Nie krępuj się rozwidlić i przejąć na własność”.
catanore
260

Jak zainstalować urządzenie Apple Network Link Conditioner

Niniejsza instrukcja jest aktualna na październik 2019 r.

Ostrzeżenie: Jeśli właśnie zaktualizowałeś system macOS do nowej wersji, upewnij się, że zainstalowałeś najnowszą wersję Network Conditioner ( w Dodatkowych narzędziach dla Xcode ). W przeciwnym razie może po cichu zawieść ; to znaczy, że włączysz go, ale niczego nie dusi ani nie upuszcza pakietów.

Aktualizacja: od Xcode 11 może istnieć jeszcze prostszy sposób symulacji warunków sieciowych na urządzeniach podłączonych do sieci; zobacz ten wpis na blogu . Aby dowiedzieć się, jak wpłynąć na symulowane urządzenia, kontynuuj poniżej, jak poprzednio.

  1. Zainstaluj Xcode, jeśli go nie masz.

  2. Otwórz Xcode i przejdź do Xcode ›Otwórz narzędzie programistyczne› Więcej narzędzi programistycznych…

    Zrzut ekranu przedstawiający nawigację po menu zgodnie z opisem

  3. Pobierz dodatkowe narzędzia dla Xcode (pasujące do Twojej bieżącej wersji Xcode)

    Dodatkowe łącze do pobierania narzędzi we / wy

  4. Otwórz pobrany obraz dysku i kliknij dwukrotnie panel Network Link Conditioner .pref w sekcji „Sprzęt”, aby go zainstalować.

    okienko wstępne w DMG

    preferencje systemowe wyświetlające monit o instalację

  5. No to jedziemy!

    Zrzut ekranu panelu preferencji

  6. Pamiętaj, aby go włączyć. Musisz wybrać profil i włączyć kondycjoner sieciowy za pomocą dużego przełącznika, który powinien być znany z panelu wstępnego Time Machine.

    wprowadź opis obrazu tutaj

Caveat

Nie wpłynie to na localhost, więc pamiętaj, aby użyć serwera przejściowego lub komputera współpracownika do symulacji wolnych połączeń sieciowych z interfejsem API, który sam uruchamiasz. W tym względzie pomocne może być https://ngrok.com/ .

Alan H.
źródło
6
w przypadku Xcode 8 jest to zawarte w „Dodatkowych narzędziach dla Xcode 8” (zamiast „Sprzętowe narzędzia we / wy dla Xcode”)
Mohit Singh
1
@MohitSingh Thanks. Zaktualizowałem powyższą odpowiedź.
Alan H.
1
Niesamowity! Dziękuję Ci.
Thomás Calmon
1
Wygląda na to, że nie ma dodatkowych narzędzi dla Xcode 10.3?
Leo
1
@leo, po prostu użyj bieżących dodatkowych narzędzi dla głównej wersji Xcode, którą posiadasz. Na przykład użyj dodatkowych narzędzi dla Xcode 11, jeśli masz zainstalowany Xcode 11.1 .
Alan H.
81

„Jest do tego aplikacja!” ;) Apple udostępnia panel preferencji „Network Link Conditioner”, który całkiem dobrze wykonuje to zadanie.

  • dla wersji Xcode starszych niż 4.3, instalator panelu można znaleźć w Developerfolderze, np. "/Developer/Applications/Utilities/Network Link Conditioner"po instalacji, jeśli demon nie uruchamia się i nie chcesz ponownie uruchamiać komputera, użyj sudo launchctl load /system/library/launchdaemons/com.apple.networklinkconditioner.plist
  • Jeśli skończyłeś już z Developerfolderem, możesz zainstalować panel jako część pakietu „Sprzętowe narzędzia we / wy dla Xcode” dostępnego w sekcji dodatkowych plików do pobrania Mac Dev Center.

Link do strony pobierania (musisz zalogować się za pomocą swojego Apple ID): https://developer.apple.com/downloads/index.action
(kredyty do @nverinaud)

matm
źródło
2
Oto link do przeglądania dostępnych plików do pobrania: developer.apple.com/downloads/index.action
nverinaud
2
nie działa na Mountain Lion ... stackoverflow.com/questions/12414676/
zack
byłoby miło, gdyby była specyficzna dla aplikacji, a nie dla całego komputera
Charles John Thompson III,
3
Możesz pobrać „Hardware IO Tools” z witryny narzędzi programistycznych Apple. Aktualizują go pod kątem nowych wersji Xcode (a tym samym OSX): W Xcode kliknij Xcode-> Open Developer Tool-> More Developer Tools..., zaloguj się, znajdź najnowsze archiwum, pobierz, skopiuj pliki gdzieś, kliknij dwukrotnie w panel preferencji Network Conditioner, zainstaluj go. . yay!
i_am_jorf,
Myślę, że nie działa w Yosemite. Ustawiłem to na „stratne”, ale tak naprawdę nie dostałem żadnej różnicy
Injectios
2

Warto również wspomnieć, że Xcode ma również wbudowaną drogę dla urządzeń , a nie symulatora.

  • Po prostu przejdź do „Urządzenia i symulator” ( cmmd+shift+2)
  • Wybierz swoje urządzenie
  • Przewiń w dół, aż znajdziesz „Stan urządzenia”
  • Ustaw żądany profil
  • Hit Start

wprowadź opis obrazu tutaj

Aby to działało, musisz zainstalować „Network Link Conditioner”. Zobacz kroki wymienione w odpowiedzi Alana

kochanie
źródło
0

Nie ma bezpośredniego sposobu na emulację wolnego połączenia, w przeciwieństwie do, powiedzmy, fajnego emulatora połączenia sieciowego, z którego korzystają programiści blackberry. Ponieważ jednak połączenie symulatora przechodzi przez komputer - możesz po prostu skupić się na spowolnieniu połączenia komputera.

Będziesz chciał osiągnąć dwie rzeczy (w zależności od okoliczności):

  • ogranicz przepustowość
  • zwiększyć swoje opóźnienie

Może to wskaże ci właściwy kierunek:

http://www.macosxhints.com/article.php?story=20080119112509736

Jest też kilka dobrych rozwiązań open source, ale nie pamiętam ich nazw.

Może pomóc to pytanie: jak ograniczyć ruch sieciowy na potrzeby symulacji środowiska?

JJ Rohrer
źródło
0

Twierdziłbym, że wolne połączenie nie wystarczy, aby zasymulować zachowanie w rzeczywistej sieci danych mobilnych - ponieważ jest też znacznie więcej utraty pakietów, większe opóźnienia i więcej zerwanych połączeń.

Oto przydatny skrypt do skonfigurowania zapory ogniowej do emulacji tych parametrów:

http://pmilosev-notes.blogspot.com/2011/02/ios-simulator-testing-over-different.html

Nick Dowell
źródło
2
Network Link Conditioner (narzędzie firmy Apple, które instaluje się jako panel preferencji) symuluje wolne połączenia, utratę pakietów i opóźnienia.
n00neimp0rtant
Network Link Conditioner, dodany w OS X Lion (wydany w lipcu 2011), sprawia, że ​​takie skrypty są niepotrzebne.
Nick Dowell