在用户关闭互联网之前是否有任何 swift 函数调用?
Is there any swift function call right before user turns off his internet?
在用户关闭互联网之前是否有任何事件?就像我们 applicationWillTerminate.I 必须调用 API 来更新服务器一样,互联网即将关闭。
您可以像这样使用 NWPathMonitor - 需要 iOS 12
import Network
let monitor = NWPathMonitor()
monitor.start(queue: DispatchQueue(label: "NetworkMonitor"))
monitor.pathUpdateHandler = { (path) in
if path.status == .satisfied {
print("Connected")
} else {
print("Not Connected")
}
}
这也允许更精细的控制 .cellular
、.wifi
和 .wiredEthernet
等。-
let cellMonitor = NWPathMonitor(requiredInterfaceType: .cellular)
如果您仍然支持 iOS 11
,您可以使用第 3 方库,例如 - Reachability
答案是否定的。在它消失之前,您无法检测到与 Internet 的连接。如果您仔细想想,失去 Internet 连接的常见原因是路由器出现故障或移出手机覆盖范围之类的事情。你无法预测。
您能做的最好的事情就是检测网络是否已关闭并尝试减轻影响,例如如果您尝试将某些内容发送到服务器,请在本地保留数据并在连接恢复时重新发送。如果您希望服务器知道它与设备失去联系,您可以定期 ping 它,每分钟说一次,如果一分钟后它没有收到您设备的消息,它就会知道您失去了连接。
在用户关闭互联网之前是否有任何事件?就像我们 applicationWillTerminate.I 必须调用 API 来更新服务器一样,互联网即将关闭。
您可以像这样使用 NWPathMonitor - 需要 iOS 12
import Network
let monitor = NWPathMonitor()
monitor.start(queue: DispatchQueue(label: "NetworkMonitor"))
monitor.pathUpdateHandler = { (path) in
if path.status == .satisfied {
print("Connected")
} else {
print("Not Connected")
}
}
这也允许更精细的控制 .cellular
、.wifi
和 .wiredEthernet
等。-
let cellMonitor = NWPathMonitor(requiredInterfaceType: .cellular)
如果您仍然支持 iOS 11
,您可以使用第 3 方库,例如 - Reachability
答案是否定的。在它消失之前,您无法检测到与 Internet 的连接。如果您仔细想想,失去 Internet 连接的常见原因是路由器出现故障或移出手机覆盖范围之类的事情。你无法预测。
您能做的最好的事情就是检测网络是否已关闭并尝试减轻影响,例如如果您尝试将某些内容发送到服务器,请在本地保留数据并在连接恢复时重新发送。如果您希望服务器知道它与设备失去联系,您可以定期 ping 它,每分钟说一次,如果一分钟后它没有收到您设备的消息,它就会知道您失去了连接。