iPhone Simulator - Simulate a slow connection?

2019-03-07 13:08发布

问题:

Is there a way to slow down the internet connection to the iPhone Simulator, so as to mimic how the App might react when you are in a slow spot on the cellular network?

回答1:

An app called SpeedLimit

https://github.com/mschrag/speedlimit

Works great.

chris.



回答2:

How to install Apple’s Network Link Conditioner

Instructions current as of November 4, 2016 – macOS Sierra 10.12.
Warning: If you just upgraded to macOS Sierra, make sure you install the very latest Network Conditioner (in Additional Tools for Xcode 8.2) or it will silently fail; that is, you will turn it on but it won’t throttle anything or drop any packets.

  1. Install Xcode if you don’t have it

  2. Open XCode and go to Xcode › Open Developer Tool › More Developer Tools…

  3. Download Additional Tools for Xcode

  4. Open the downloaded disk image and double-click the .prefpane to install it.

  5. There we go!

  6. Be sure to turn it on. You need to select a profile and enable the network conditioner with the big toggle that should be familiar from the Time Machine prefpane.

Caveat

This won't affect localhost, so be sure to use a staging server or co-worker's computer to simulate slow network connections to an API you’re running yourself. You may find https://ngrok.com/ helpful in this regard.



回答3:

"There's an app for that!" ;) Apple provides "Network Link Conditioner" preference pane that does the job quite well.

  • for Xcode versions prior to 4.3, the pane installer can be found in your Developer folder, e.g. "/Developer/Applications/Utilities/Network Link Conditioner", after installation, if daemon fails to start and you don't want to reboot your machine, just use sudo launchctl load /system/library/launchdaemons/com.apple.networklinkconditioner.plist
  • if you are already done with Developer folder, you can install the pane as a part of "Hardware IO Tools for Xcode" package available via Mac Dev Center additional downloads section.

Link to download page (you must log in with your Apple ID): https://developer.apple.com/downloads/index.action
(credits to @nverinaud)



回答4:

There isn't a direct way to emulate a slow connection, unlike, say, the nice network connection emulator that blackberry developers enjoy. However, since your simulator's connection goes through your computer - you can simply focus on slowing down your computer's connection.

You'll want to achieve two things (depending upon your circumstances):

  • throttle your bandwidth
  • increase your latency

Maybe this will point you in right direction:

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

There are some good open source solutions, too, but I so can't remember their names.

This question might help: How to throttle network traffic for environment simulation?



回答5:

I would argue that a slow connection isn't enough to simulate real-work mobile data network behaviour - since there is also much more packet loss, higher latencies and more dropped connections too.

Here is a handy script to configure the firewall to emulate these parameters:

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