2015-12-08 7 views
0

Я проверяю, имеет ли у моего приложения доступ в Интернет. Как ни странно, на каком-то устройстве у меня есть доступ к Интернету. Но это не нормально для некоторых устройств. Правильно ли написано мое кодирование?iOS Невозможно получить доступ к интернету

Если да, то это из-за сотовых данных? Это происходит только для моего приложения, и все остальные приложения выглядят нормально. В сотовой сети он также позволяет использовать мое приложение с сотовыми данными.

+ (BOOL)isHostReachable:(NSString *)host { 
    if (!host || ![host length]) { 
    return NO; 
    } 

    SCNetworkReachabilityFlags flags; 
    SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, [host UTF8String]); 
    BOOL gotFlags = SCNetworkReachabilityGetFlags(reachability, &flags); 

    CFRelease(reachability); 

    if (!gotFlags) { 
     return NO; 
    } 

    return [self isReachableWithoutRequiringConnection:flags]; 
} 

+ (BOOL)isReachableWithoutRequiringConnection:(SCNetworkReachabilityFlags)flags 
{ 
    // kSCNetworkReachabilityFlagsReachable indicates that the specified nodename or address can 
// be reached using the current network configuration. 
BOOL isReachable = flags & kSCNetworkReachabilityFlagsReachable; 

// This flag indicates that the specified nodename or address can 
// be reached using the current network configuration, but a 
// connection must first be established. 
// 
// If the flag is false, we don't have a connection. But because CFNetwork 
// automatically attempts to bring up a WWAN connection, if the WWAN reachability 
// flag is present, a connection is not required. 
    BOOL noConnectionRequired = !(flags & kSCNetworkReachabilityFlagsConnectionRequired); 
     if ((flags & kSCNetworkReachabilityFlagsIsWWAN)) { 
     noConnectionRequired = YES; 
    } 

    return (isReachable && noConnectionRequired) ? YES : NO; 
} 
+0

App Transport Безопасность связана? Какие устройства не могут получить доступ к Интернету? В таком случае? Сужение устройств может быть полезным. 3G? Доступ отключен пользователем в Settings.app? – Larme

+0

Да. Это на 3G, ios 9+, iphone 6 и App Transport Security должно быть хорошо, потому что я уже это допускаю. –

+0

App Transport Security не имеет ничего общего с достижимостью. Это может быть возможно только после того, как вы подключитесь к Интернету. – gnasher729

ответ

0

Это нормально, что некоторые устройства не могут получить доступ в Интернет. Wi-Fi отключен, 3G отключен, режим самолета, плохое соединение, маршрутизатор отключен. Или это iPad без 3G. Все возможно.

Как только приложение будет работать, вам нужно будет провести серьезное тестирование того, что происходит, когда Интернет включается и выключается. Например, что происходит, когда вы уходите от своего офиса, и ваш WiFi исчезает. Или вы проходите через торговый центр, и различные WiFis приходят и уходят. Или пользователь меняет настройки. Ваше приложение должно выжить.

+0

Мой телефон на 3G, хотя. И другое приложение на моем устройстве в порядке. Только мое приложение не имеет доступа к Интернету. Это потому, что некоторые настройки в устройстве? Или DNS? –

+0

Есть ли разница, если я использую www.google.com или http: www.google.com? Чтобы проверить, есть ли у меня интернет с библиотекой Reachability? –

Смежные вопросы