我正在开发一个iOS应用程序,我想检测用户何时连接/断开连接到Wifi,即使应用程序已关闭。我做了很多研究,但仍然找不到解决这个问题的方法。
有人能指出我如何做到这一点的大方向吗?
答案 0 :(得分:1)
应用程序关闭后无法检测网络连接。该进程已关闭,您的代码无法执行。
答案 1 :(得分:0)
也许您应该考虑可以在后台运行的应用程序选项。这当然可以在iOS中使用,你需要能力类型:背景模式。然后你可以检查wifi是否可用。
答案 2 :(得分:0)
对于某些未指定的时间,您可以使用背景提取来实现。
override init() {
super.init()
initializeBackgroundTask()
NotificationCenter.default.addObserver(self, selector: #selector(networkHasChanged(notification:)), name: NSNotification.Name.reachabilityChanged, object: nil)
}
func networkHasChanged(notification : NSNotification) {
if let reachability = notification.object as? Reachability {
// Do whatever you want to do!!!
}
}
func initializeBackgroundTask() {
if bgTask == UIBackgroundTaskInvalid {
bgTask = UIApplication.shared.beginBackgroundTask(withName: "CheckNetworkStatus", expirationHandler: {
self.endBackgroundTask()
})
}
}
func endBackgroundTask() {
if deepLinkString == nil {
if (self.bgTask != UIBackgroundTaskInvalid) {
UIApplication.shared.endBackgroundTask(self.bgTask)
self.bgTask = UIBackgroundTaskInvalid
}
}
}
deinit {
NotificationCenter.default.removeObserver(self, name: NSNotification.Name.reachabilityChanged, object: nil)
}
如果不使用后台任务,也不要尝试初始化它。