如果没有互联网连接,我的应用目前会显示提醒。但是,我希望在检测到互联网连接后自动重新连接,而无需用户重新启动应用程序。
我目前使用的代码是
if Reachability.isConnectedToNetwork() == true {
print("Internet Connection Available!")
} else {
let alertController = UIAlertController(title: "Alert",
message: "Internet Connection not Available!",
preferredStyle: UIAlertControllerStyle.alert)
alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.default,handler: nil))
self.present(alertController, animated: true, completion: nil)
}
谁能提出一些建议呢?如果我的问题不清楚,请告诉我。大家好!
答案 0 :(得分:1)
它对我有用
func myconn(){
if Reachability.isConnectedToNetwork() == true
{
print("Internet Connection Available!")
}
else
{
let alertController = UIAlertController(title: "Alert", message:
"Internet Connection not Available!", preferredStyle: UIAlertControllerStyle.alert)
alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.default,handler: nil))
self.present(alertController, animated: true, completion: nil)
DispatchQueue.main.asyncAfter(deadline: .now() + 10.0, execute: {
self.myconn()
})
}
}
答案 1 :(得分:1)
您应该在Reachability
方法中添加applicationDidFinishLaunching
的观察者,如下所示,
NotificationCenter.default.addObserver(self, selector: #selector(networkStatusChanged(_:)), name: NSNotification.Name(rawValue: ReachabilityStatusChangedNotification), object: nil)
Reach().monitorReachabilityChanges()
同样实施此方法,
@objc func networkStatusChanged(_ notification: Notification) {
let userInfo = (notification as NSNotification).userInfo
if let status = userInfo?["Status"] as? String, status == "Offline" {
//Display alert view
} else if let status = userInfo?["Status"] as? String, status != "Unknown" {
//Internet connection is active
}
}
当有活跃的互联网连接时,上述功能会自动触发呼叫。
答案 2 :(得分:0)
您需要添加addObserver
的{{1}}。
ReachabilityChangedNotification
每当更改网络时,它都会通知您。
答案 3 :(得分:0)
您还可以使用RxSwift观察可达性通知,并在获得新连接状态时处理更改。
像这样: var isOnline: Bool {
guard let reachability = reachability else { return false }
return reachability.currentReachabilityStatus.isOnline
}
func connectionStatus() -> Observable<ConnectionStatus> {
return notificationCenter
.rx
.notification(ReachabilityChangedNotification)
.observeOn(observeScheduler)
.flatMap { notification -> Observable<ConnectionStatus> in
guard let reachability = notification.object as? Reachability else {
return .empty()
}
return .just(ConnectionStatus(isOnline: reachability.isReachable))
}
.startWith(ConnectionStatus(isOnline: isOnline))
.distinctUntilChanged()
}
通过这种方式,您可以观察连接中的任何更改,并可以根据需要对其做出反应。
您只需订阅Observable<ConnectionStatus>
,然后您就可以决定是否希望用户触发新的重新连接流程,或者在显示之前重试几次。