Im в приложении, которое принимает данные с сервера, проблема заключается в том, когда пользователь подключается к cellular data
(Not 3G
или WIFI
), для получения данных требуется возраст.
Я реализовал этот код из этого Ответ, но я не уверен, эффективен он или нет, иногда он дает мне точный тип, а иногда он не.
вот мой код:
- (void)newtworkType {
NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"]subviews];
NSNumber *dataNetworkItemView = nil;
for (id subview in subviews) {
if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
dataNetworkItemView = subview;
break;
}
}
switch ([[dataNetworkItemView valueForKey:@"dataNetworkType"]integerValue]) {
case 0:
NSLog(@"No wifi or cellular");
break;
case 1:
NSLog(@"2G");
break;
case 2:
NSLog(@"3G");
break;
case 3:
NSLog(@"4G");
break;
case 4:
NSLog(@"LTE");
break;
case 5:
NSLog(@"Wifi");
break;
default:
break;
}}
Это лучшее, что я могу сделать, я пробовал пример Apple Reachability, но он может определить, если reachabilityForInternetConnection
или просто reachabilityForLocalWiFi
но это не полезно в моем случае.
Спасибо заранее.