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