Ios 没有internet连接时,如何持续显示警报?
我正在开发一个需要internet连接才能正常运行的iOS应用程序,因此我正在使用可达性框架,以便获得连接状态。现在,每当没有互联网连接时,我就会发出警报,按钮上会显示一次“重试”,我希望在没有互联网的情况下,警报会持续出现。你能帮我吗?谢谢 顺便说一句,如果你认为我有什么需要改变的,那就告诉我吧!干杯Ios 没有internet连接时,如何持续显示警报?,ios,swift,uialertview,reachability,reachability-swift,Ios,Swift,Uialertview,Reachability,Reachability Swift,我正在开发一个需要internet连接才能正常运行的iOS应用程序,因此我正在使用可达性框架,以便获得连接状态。现在,每当没有互联网连接时,我就会发出警报,按钮上会显示一次“重试”,我希望在没有互联网的情况下,警报会持续出现。你能帮我吗?谢谢 顺便说一句,如果你认为我有什么需要改变的,那就告诉我吧!干杯 class ViewController: UIViewController { let reachability = Reachability()! override func viewD
class ViewController: UIViewController {
let reachability = Reachability()!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func viewDidAppear(_ animated: Bool) {
reachability.whenReachable = { reachability in
if reachability.connection == .wifi {
print("Reachable via WiFi")
} else {
print("Reachable via Cellular")
}
}
reachability.whenUnreachable = { _ in
print("Not reachable")
}
do {
try reachability.startNotifier()
} catch {
print("Unable to start notifier")
}
NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(note:)), name: .reachabilityChanged, object: reachability)
do{
try reachability.startNotifier()
}catch{
print("could not start reachability notifier")
}
}
@objc func reachabilityChanged(note: Notification) {
let reachability = note.object as! Reachability
switch reachability.connection {
case .wifi:
print("Reachable via WiFi")
case .cellular:
print("Reachable via Cellular")
case .none:
print("Network not reachable")
createAlert(title: "No Internet Connection", message: "Internet Connection is required fot this application to run properly")
}
}
func createAlert(title:String, message:String)
{
let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "Try Again", style: UIAlertActionStyle.default, handler: { (action) in alert.dismiss(animated: true, completion: nil) } ) )
self.present(alert, animated: true, completion: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
与其发出警报,不如使用隐藏的标签,在没有互联网的情况下取消隐藏。然后在连接恢复后再次隐藏我认为更好的做法是在由于缺少internet连接而出现实际故障时,使用“重试”来显示警报-您可以处理来自网络框架的回调。对不起,您能更明确一点吗?我知道,从我所读到的内容来看,只有当它无法访问RESTAPI时才发出警报是更好的做法,但对于这种特殊情况,我希望它能够自动警告用户他没有连接。我希望警报在没有连接的情况下继续出现。不管你的应用程序在做什么,如果没有连接,你的网络请求都会失败。因此,这就是处理缺少连接错误的地方。问题是它不会失败。它一直在运行,但是应该显示的内容没有出现。好吧!我喜欢这个主意!一旦我试过,我会给你回复的!非常感谢,但我有一个问题。我喜欢此警报的一点是,用户无法访问背景。是否仍然可以使用标签“阻止”用户进入后台?您可以添加一个屏幕大小的按钮来覆盖屏幕。它还将拦截任何点击(您不需要对点击执行任何操作,只需接收点击事件)。您可以使按钮50%透明,以提供与警报类似的效果。在按钮顶部,您可以将标签添加到邮件中。按钮和标签根据网络连接显示/消失