Как загрузить данные из данных оператора / 3GS не Wi-Fi? - PullRequest
2 голосов
/ 05 января 2012

В моем приложении для iPhone пользователь может указать, хочет ли он загружать данные из Интернета через Wi-Fi или данные 3G / Carrier.

Как мы можем сделать это программно?

Другими словамиКак я могу заставить iphone получать данные с несущей, а не с Wi-Fi?

Любое предложение, ребята?

Ответы [ 4 ]

3 голосов
/ 05 января 2012

Вы не можете, если iPhone подключен к WiFi, вы не можете программно заставить его использовать сотовую сеть для загрузки.

2 голосов
/ 05 января 2012

Вы не можете заставить iPhone использовать данные оператора (3G / Edge) вместо WiFi, если телефон подключен к WiFi. Вы можете использовать функцию SCNetworkReachabilityGetFlags , чтобы определить, подключены ли вы к Wi-Fi или у вас есть соединение для передачи данных.

Что вы можете сделать, если пользователь подключен к WiFi, всплывет сообщение о том, что ваше приложение работает только с данными оператора, и попросить пользователя отключить WiFi и перезапустить приложение. Хотя я бы не рекомендовал это, поскольку это будет просто раздражать ваших пользователей, хотя это не помешало Vodafone Portugal делать это для ряда своих приложений в глупой попытке заставить вас использовать более (дорогие) данные оператора связи .

1 голос
/ 05 января 2012

Для этого вам нужно определить состояние телефона и легко определить, какая погода не передается, когда телефон использует Wi-Fi.

-(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;
            }
        }
    }

дополнительная информация посещает эту ссылку.

1 голос
/ 05 января 2012

Я не уверен, что это полезно для вас:

http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html

...