2013-05-28 21 views
2

在我的應用程序中,我想獲得移動網絡信號強度和網絡提供商名稱, 在下面的代碼中它返回信號強度,但我不覺得它是準確的,因爲當強度值達到60%時信號棒顯示爲full.and網絡提供商名稱作爲載體返回。我每2秒調用一次此方法。用於獲取網絡提供商名稱如何找到準確的移動信號強度和服務提供商名稱?

CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init]; 
    CTCarrier *carrier = [netinfo subscriberCellularProvider]; 
    NSLog(@"MY NAME:%@",carrier.carrierName); 
+0

的可能重複:http://stackoverflow.com/questions/15427507/how-to-find-out-carrier-signal-strength-programatically?rq=1 –

+0

我din't明白 – user2402997

+0

這是[this]可能的重複(http://stackoverflow.com/questions/8254327/get-carrier-name-and-signal-strength-return-wrong-value-in-iphone)和[this](http:這個問題可以通過下面的代碼來解決:(http://stackoverflow.com/questions/15427507/how-to -find-out-carrier-signal-strength-programatically/15531806#15531806)你的解決方案鏈接 –

回答

1

如果你想準確地更新它每隔幾個seconds.here

-(void)UpdateLabelWithSignal{ 
    int str = CTGetSignalStrength(); 
    NSLog(@"SignalStrength:%d",str); 
    NSLog(@"SignalStrength:%@",[NSString stringWithFormat:@"%d",str]); 
    SignalLabel.text = [NSString stringWithFormat:@"%d",str]; 

} 

//代碼的代碼。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    printf("signal strength: %d\n", CTGetSignalStrength()); 
slimeDeathAnimTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(UpdateLabelWithSignal) userInfo:nil repeats:YES]; 
    CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init]; 
    CTCarrier *carrier = [netinfo subscriberCellularProvider]; 
    NSLog(@"MY NAME:%@",carrier.carrierName); 

    NSLog(@"mobileCountryCode = %@",carrier.mobileCountryCode); 
    NSLog(@"mobileNetworkCode = %@",carrier.mobileNetworkCode); 
    NSLog(@"isoCountryCode = %@",carrier.isoCountryCode); 
    NSLog(@"allowVOIP = %d",carrier.allowsVOIP); 

    } 

-(void)UpdateLabelWithSignal{ 

int str = CTGetSignalStrength(); 
NSLog(@"SignalStrength:%d",str); 
    NSLog(@"SignalStrength:%@",[NSString stringWithFormat:@"%d",str]); 
SignalLabel.text = [NSString stringWithFormat:@"%d",str]; 

} 
相關問題