Как загрузить данные из данных оператора /3GS не Wi-Fi?

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

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

Другими словами, как я могу заставить iphone получать данные с носителя, а не с wifi?

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

4 ответа

Решение

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

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

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

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

http://developer.apple.com/library/ios/

Для этого вам нужно определить состояние телефона, и вы можете легко определить, данные о погоде не передаются, когда телефон использует 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;
            }
        }
    }

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

Другие вопросы по тегам