2015-12-08 1 views
0

Je vérifie si mon application a un accès Internet. Bizarrement, sur certains appareils, je peux avoir accès à internet. Mais, ce n'est pas correct pour un appareil. Est-ce que mon codage est correct?iOS Impossible d'accéder à Internet

Si oui, est-ce à cause des données cellulaires? Cela ne se passe que pour mon application et toutes les autres applications semblent correctes. Dans le cadre cellulaire, il permet également d'utiliser mon application avec des données cellulaires.

+ (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 Sécurité liée? Quels appareils ne peuvent pas accéder à Internet? Dans quel cas? Le rétrécissement des appareils pourrait être utile. 3G? L'accès a été désactivé par l'utilisateur dans Settings.app? – Larme

+0

Oui. Il est sur 3G, iOS 9+, iPhone 6 et App Transport Security devrait être d'accord parce que je le permets déjà. –

+0

App Transport Security n'a absolument rien à voir avec l'accessibilité. Il peut seulement lancer une fois que vous avez _une connexion Internet. – gnasher729

Répondre

0

Il est normal que certains périphériques ne puissent pas accéder à Internet. WiFi désactivé, 3G désactivé, mode avion, mauvaise connexion, routeur débranché. Ou c'est un iPad sans 3G. Tout est possible. Une fois que votre application fonctionne, vous devrez tester sérieusement ce qui se passe lorsque l'Internet est allumé et éteint. Par exemple, que se passe-t-il lorsque vous quittez votre bureau et que votre Wi-Fi disparaît. Ou vous marchez à travers un centre commercial et divers WiFis vont et viennent. Ou l'utilisateur change les paramètres. Votre application devrait survivre à tout.

+0

Mon téléphone est en mode 3G. Et l'autre application sur mon appareil est d'accord. Seule mon application ne peut pas accéder à Internet. Est-ce parce que certains paramètres dans l'appareil? Ou DNS? –

+0

Y a-t-il une différence si j'utilise www.google.com ou http: www.google.com? Pour vérifier si j'ai Internet avec la bibliothèque Reachability? –