#ios #swift #connectivity
#iOS #swift #подключение
Вопрос:
Я пытаюсь создать простое приложение, которое фактически обертывает веб-страницу, но я бы не хотел открывать webview и показывать сообщение, когда устройство не подключено. Я нашел 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)
}
}
Ответ №1:
Попробуйте этот метод и 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: amp;zeroAddress) {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) {zeroSockAddress in
SCNetworkReachabilityCreateWithAddress(nil, zeroSockAddress)
}
}
var flags = SCNetworkReachabilityFlags()
if !SCNetworkReachabilityGetFlags(defaultRouteReachability!, amp;flags) {
return false
}
let isReachable = flags.contains(.reachable)
let needsConnection = flags.contains(.connectionRequired)
return (isReachable amp;amp; !needsConnection)
}
Ответ №2:
Вы можете просто сделать это с помощью этого файла, импортированного в ваш проект: Достижимость
И затем в вашем 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
}
}