如何testingEDGE或GPRS或任何其他慢/坏的networking

在我的iOS应用程序中,我支持在线和离线工作。 为此,我使用了苹果的Reachability代码 。 现在,如果蜂窝移动networking是EDGEGPRS或者networkingbad/slow现在我想显示用户处于离线状态。 我已经使用了下面的代码(find解决scheme )。

码:

 CTTelephonyNetworkInfo *telephonyInfo = [CTTelephonyNetworkInfo new]; NSLog(@"Current Radio Access Technology: %@", telephonyInfo.currentRadioAccessTechnology); [NSNotificationCenter.defaultCenter addObserverForName:CTRadioAccessTechnologyDidChangeNotification object:nil queue:nil usingBlock:^(NSNotification *note) { NSLog(@"New Radio Access Technology: %@", telephonyInfo.currentRadioAccessTechnology); }]; 

我使用3G cellular mobile network进行设备testing,并取得了成功的CTRadioAccessTechnologyWCDMA 。 要testingEDGEGPRS或任何其他slow/bad network我使用设备的开发人员设置的networking链接条件 ,但仍然获得CTRadioAccessTechnologyWCDMA价值。

编辑:

经过这么多的研究,我发现了另一种测量信号强度的方法。 我已经testing了它在iOS7设备上的工作,但不是在iOS8.4设备。 另外我觉得这是私人API,所以苹果可能会拒绝这个。

这是我的代码:

 #import <CoreTelephony/CTTelephonyNetworkInfo.h> #import <dlfcn.h> int CTGetSignalStrength(); @implementation ViewController -(int) getSignalStrength { void *libHandle = dlopen("/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony", RTLD_LAZY); int (*CTGetSignalStrength)(); CTGetSignalStrength = dlsym(libHandle, "CTGetSignalStrength"); if( CTGetSignalStrength == NULL) NSLog(@"Could not find CTGetSignalStrength"); int result = CTGetSignalStrength(); dlclose(libHandle); return result; } -(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; NSTimer* timer = [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateLabel) userInfo:nil repeats:YES]; [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; } -(void)updateLabel{ _lblSpeed.text = [NSString stringWithFormat:@"signal strength: %d\n", CTGetSignalStrength()]; NSLog(@"signal strength: %d\n", CTGetSignalStrength()); } @end 

那么,任何想法如何我们可以testingEDGEGPRS或任何其他slow/bad network ? 还有其他解决scheme/想法吗?