如何在 iOS 中测试可达性并重试连接?

Posted

技术标签:

【中文标题】如何在 iOS 中测试可达性并重试连接?【英文标题】:How to test reachability in iOS and retry to connect? 【发布时间】:2019-10-09 20:08:59 【问题描述】:

我想测试当用户在登录时失去连接并提示他们再次尝试连接时的可达性。

首先,我尝试在无法访问时关闭并显示 UIalert 说“请检查您的互联网连接并重试”。使用“重试”操作尝试重试测试连接,如果没有连接显示消息,否则“有连接”删除 UI 警报。

import UIKit

class BaseTabBarViewController: UITabBarController 

    let network = NetworkManager.sharedInstance

    override func viewDidLoad() 
        super.viewDidLoad()

        network.reachability.whenUnreachable =  reachability in
            self.showOfflinePage()
        
    

    func retryConnection(alert: UIAlertAction!)
        print("test connection ")
        // if no connction found show try agine
        //else connction

    

    func showOfflinePage()

        DispatchQueue.main.async 
            // create the alert
            let alert = UIAlertController(title: "Connectivity Error", message: "Please check your internet connection and try again.", preferredStyle: UIAlertController.Style.alert)

            // add an action (button)
            alert.addAction(UIAlertAction(title: "Retry", style: UIAlertAction.Style.default, handler: self.retryConnection))

            // show the alert
            self.present(alert, animated: true, completion: nil)
        
    

【问题讨论】:

【参考方案1】:

有很多可达性吊舱可用。最常用的一种是 Alamofire。以下是 repo 的链接以及如何使用它的示例。

https://github.com/Alamofire/Alamofire/blob/master/Source/NetworkReachabilityManager.swift

https://medium.com/@abhimuralidharan/checking-internet-connection-in-swift-3-1-using-alamofire-58ae45719f5

【讨论】:

【参考方案2】:

您是否尝试过使用 iphone 的开发者选项(在设置中)? 它可以让您模拟不良连接。

【讨论】:

以上是关于如何在 iOS 中测试可达性并重试连接?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ios 中知道设备与哪个网络主机连接

使用 ASIHTTPRequest 的可达性

应用程序处于后台时的 iOS 可达性

如何在互联网可达性上使用 ios 快速更改状态栏颜色?

有没有办法在 jQuery 中检查服务器的可达性测试

设置可达性以监控连接并显示警报