iOS-应用程序处于后台时如何检测网络变化
我正在开发一个iOS应用程序,我想检测用户何时连接/断开Wifi,即使应用程序已关闭。我做了很多研究,但仍然没有找到任何解决这个问题的方法iOS-应用程序处于后台时如何检测网络变化,ios,swift,xcode,Ios,Swift,Xcode,我正在开发一个iOS应用程序,我想检测用户何时连接/断开Wifi,即使应用程序已关闭。我做了很多研究,但仍然没有找到任何解决这个问题的方法 有人能告诉我怎么做吗?关闭应用程序后无法检测网络连接。进程已关闭,您的代码无法执行 查看更多详细信息也许您应该考虑可以在后台运行的应用程序选项。这当然在iOS中是可能的,您需要能力类型:后台模式。然后,您可以检查wifi是否可用。对于一些未指定的时间,您可以通过使用后台提取来实现这一点 override init() { super.init()
有人能告诉我怎么做吗?关闭应用程序后无法检测网络连接。进程已关闭,您的代码无法执行
查看更多详细信息也许您应该考虑可以在后台运行的应用程序选项。这当然在iOS中是可能的,您需要能力类型:后台模式。然后,您可以检查wifi是否可用。对于一些未指定的时间,您可以通过使用后台提取来实现这一点
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)
}
如果不使用,也不要初始化后台任务。请考虑查看这些链接,以获得检测wifi连接的帮助。如果我没弄错的话,那是不可能的。另外,如果您想检测任何东西,请确保在AppDelegateHi Jordy中包含
Application:didEnterBackground
中的代码。您对此有什么想法吗?如果退出应用程序,您肯定是对的。问题是OP是否真的意味着,当他说“关闭”时,这是更加模糊的。无论哪种方式,精度为+1。@BenjaminLowry谢谢。这正是我建议OP阅读更多有关应用程序生命周期的内容的原因。OP需要理解“暂停”、“背景”和“未运行”之间的区别,以便弄清楚要实现什么,并用更精确的术语来描述它。