如何解决iOS如果设备没有互联网连接,如何检测它并显示相应的文本
我正在尝试构建一个简单的应用程序,该应用程序实际上包装了一个网页,但是当设备没有连接时,我不想打开网页视图并显示一条消息。我找到了URLSessionConfiguration,但是我不知道如何实现它,非常感谢
到目前为止的代码
class ViewController: UIViewController {
@IBOutlet weak var myWebView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let url = URL(string: "https://neti.ee")
let config = URLSessionConfiguration.default
config.waitsForConnectivity = true
config.timeoutIntervalForResource = 300
let session = URLSession(configuration: config)
session.dataTask(with: url!) { data,response,error in
}
myWebView.load(URLRequest(url: url!));
let label = UILabel(frame: CGRect(x: 100,y: 200,width: 220,height: 50))
label.text = "Please connect to the internet";
self.view.addSubview(label)
}
}
解决方法
尝试此方法,然后import SystemConfiguration
static func isInternetAvailable() -> Bool
{
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)
let defaultRouteReachability = withUnsafePointer(to: &zeroAddress) {
$0.withMemoryRebound(to: sockaddr.self,capacity: 1) {zeroSockAddress in
SCNetworkReachabilityCreateWithAddress(nil,zeroSockAddress)
}
}
var flags = SCNetworkReachabilityFlags()
if !SCNetworkReachabilityGetFlags(defaultRouteReachability!,&flags) {
return false
}
let isReachable = flags.contains(.reachable)
let needsConnection = flags.contains(.connectionRequired)
return (isReachable && !needsConnection)
}
,
您只需将以下文件导入到项目中即可: Reachability
然后,在您的viewController中,您可以像这样检查连接:
class ViewController: UIViewController {
let reachability = try! Reachability()
override func viewDidLoad() {
super.viewDidLoad()
reachability.whenReachable = { _ in
//connected
}
reachability.whenUnreachable = { _ in
//not connected
}
NotificationCenter.default.addObserver(self,selector: #selector(internetChanged),name: Notification.Name.reachabilityChanged,object: reachability)
do{
try reachability.startNotifier()
} catch {
print("Could not strat notifier")
}
}
@objc
func internetChanged(note: Notification) {
//do something
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。