2016-03-07 2 views
1

Я пытаюсь найти способ проверить, подключено ли мое приложение к Интернету для моего приложения. Я попытался использовать различные библиотеки Reachability, которые вы можете найти в GitHub, которые вызывают компиляцию ошибок для моего проекта. (По некоторым причинам недоступны другие библиотеки), и я также попробовал библиотеку JustHTTP для создания запроса GET до http://www.google.com, но он терпит неудачу каждый раз.Проверьте, подключено ли устройство к Интернету в Swift2

Я не совсем уверен, что проблема здесь, но я хотел бы знать, как некоторые из вас проводят проверку подключения к Интернету, прежде чем разрешать пользователям использовать приложение.

Этот вопрос был отмечен как дублированный и связан с вопросом, который использовал библиотеку Reachability, предоставленную AshleyMills. Который я заявил, что я уже пытался использовать эти библиотеки, но не мог сделать ошибок в моем проекте. Код запроса GET, предоставленный по этому вопросу, также устарел и не работает на SWIFT2. Этот связанный вопрос также предполагает, что мне не нужно ничего поддерживать под iOS 9, который кажется плохой практикой. Моя минимальная поддержка - iOS8

+1

посмотреть эту ссылку, это поможет вам http://stackoverflow.com/questions/30743408/check-for-internet-connection-in-swift-2-ios-9 –

+0

@ Anbu.Karthik - не работает для сотовых сетей. – Hobbyist

+0

ой, но я не близко ур вопрос .... –

ответ

0

Добавить Reachability.swift в ваш проект.

И попробуйте под кодом.

do 
    { 
     let connected: Bool = try Reachability.reachabilityForInternetConnection().isReachable() 

     if connected == true 
     { 
      print("Internet connection OK") 
     } 
     else 
     { 
      print("Internet connection FAILED") 
      let alert = UIAlertView(title: "No Internet Connection", message: "Make sure your device is connected to the internet.", delegate: nil, cancelButtonTitle: "OK") 
      alert.show() 
     } 
    } 
    catch 
    { 
     print("Handle Exception") 

    } 
0

Этот код может помочь. Вам нужно Либерал достижимости, этот фрагмент может дать вам пример, чтобы проверить, если устройство достигает Интернет через Wi-Fi или через 4G/3G/LTE

func checkNetworkStatus() -> Bool { 
    let reachability: Reachability = Reachability.reachabilityForInternetConnection() 
    let networkStatus = reachability.currentReachabilityStatus().rawValue; 
    var isAvailable = false; 

    switch networkStatus { 
    case (NotReachable.rawValue): 
     isAvailable = false; 
     break; 
    case (ReachableViaWiFi.rawValue): 
     isAvailable = true; 
     break; 
    case (ReachableViaWWAN.rawValue): 
     isAvailable = true; 
     break; 
    default: 
     isAvailable = false; 
     break; 
    } 
    return isAvailable; 
} 
+0

Если это библиотека «Reachability», предоставляемая AshleyMills, она не будет компилироваться мой проект, поскольку он вызывает конфликты с другими библиотеками. – Hobbyist

0

Если ваш запрос не в состоянии все время, может быть, это потому, что вы не делаете их по https, но по http. Это связанно с АТС на прошивке 9 - этот блог объясняет очень хорошо, как отключить (если вы хотите - не рекомендуется) ATS http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/

0

Swift 2.x (требуется достижимость)

do { 
    let reachable = try Reachability.init(hostname: "www.google.com") 
    if(reachable.currentReachabilityStatus == Reachability.NetworkStatus.ReachableViaWWAN){ 
     //Device is connected thru 3G/4G/LTE 
    }else if(reachable.currentReachabilityStatus == Reachability.NetworkStatus.ReachableViaWiFi){ 
     //Device is connected thru WiFi 
    }else{ 
     //Device is not connected to the internet 
    } 
}catch{ 
    //Device is not connected to the internet 
} 

Вы можете получить Достижимость here

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