如何从Carrier数据/ 3GS下载数据而不是WiFi?

问题描述:

在我的iphone应用程序中,用户可以设置他是否想通过wifi或3G/Carrier数据从互联网上下载数据。如何从Carrier数据/ 3GS下载数据而不是WiFi?

我们如何以编程方式做到这一点?

换句话说,我如何强迫iphone从运营商数据中获取数据,而不是从wifi?

任何建议家伙?

+0

你为什么要强迫别人使用载波数据,而不是无线网络? – mluisbrown 2012-01-05 11:12:14

你不能强迫的iPhone如果手机连接到使用载波数据(3G /边缘)而不是无线网络无线上网。您可以使用SCNetworkReachabilityGetFlags函数来确定您是使用WiFi还是有载波数据连接。

您可以做的是,如果用户连接到WiFi,则会弹出一条消息,指出您的应用只适用于运营商数据,并要求用户关闭WiFi并重新启动应用。虽然这不会阻止沃达丰葡萄牙为他们的应用程序执行某些应用程序,但他们愚蠢地企图迫使您使用更多(昂贵的)载体数据。

如果iPhone连接到WiFi,则无法以编程方式强制其使用蜂窝网络进行下载。

为此,您需要检测手机的状态,并且您可以轻松识别天气数据在手机使用WiFi时不会传输。

-(void) viewWillAppear:(BOOL)animated 
{ 
    // check for internet connection 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil]; 

    internetReachable = [[Reachability reachabilityForInternetConnection] retain];   

    [internetReachable startNotifier];   

    // check if a pathway to a random host exists   

    hostReachable = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain]; 

    [hostReachable startNotifier];   

    // now patiently wait for the notification 

} 



- (void) checkNetworkStatus:(NSNotification *)notice  {  

    // called after network status changes  

    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus]; 
    switch (internetStatus){ 
     case NotReachable: 
      { 
       NSLog(@"The internet is down."); 
       self.internetActive = NO; 
       break; 
      } 
      case ReachableViaWiFi: 
      { 
       NSLog(@"The internet is working via WIFI."); 
       self.internetActive = YES; 
       break; 
      } 
      case ReachableViaWWAN: 
      { 
       NSLog(@"The internet is working via WWAN."); 
       self.internetActive = YES; 
       break; 
      } 
     } 
     NetworkStatus hostStatus = [hostReachable currentReachabilityStatus]; 
     switch (hostStatus) 
     { 
      case NotReachable: 
      { 
       NSLog(@"A gateway to the host server is down."); 
       self.hostActive = NO; 
       break; 
      } 
      case ReachableViaWiFi: 
      { 
       NSLog(@"A gateway to the host server is working via WIFI."); 
       self.hostActive = YES; 
       break; 
      } 
      case ReachableViaWWAN: 
      { 
       NSLog(@"A gateway to the host server is working via WWAN."); 
       self.hostActive = YES; 
       break; 
      } 
     } 
    } 

more information visits this link.

+0

感谢您的回答。但这实际上不是问题。反正伟大的努力:) – Dilip 2012-01-05 12:57:17