如何在 IOS 应用程序上检查网络连接? [关闭]
Posted
技术标签:
【中文标题】如何在 IOS 应用程序上检查网络连接? [关闭]【英文标题】:How to check for connection on the network on IOS app? [closed] 【发布时间】:2021-09-29 01:59:17 【问题描述】:我正在用 SWIFT 和 SWIFT UI 编写一个 ios 应用程序。我有一个购买按钮来完成交易,但是除非手机连接到网络,否则应用程序将崩溃。我想要做的是在购买过程开始之前检查手机是否连接到网络。如何检查 iPhone 是否连接到网络?谢谢。
【问题讨论】:
这能回答你的问题吗? How to check for an active Internet connection on iOS or macOS? 预检并不是真正的解决方案;网络可以随时关闭,包括在您完成网络连接检查后的纳秒内。虽然您可能希望检查连接性以为用户提供指导,但它不能替代正确的错误处理。您的应用不应因为网络中断而崩溃 【参考方案1】:您可以使用NWPathMonitor
来监控您的网络连接,并为它提供一个更新状态变量的处理程序,然后您可以签入您的 Swift 或 SwiftUI 代码。
NWPathMonitor 有一些配置选项,比如需要 Wifi over 蜂窝选项,它触发的事件可以检查手机是否在低数据模式下运行等。但是一个非常基本和粗略的实现可能看起来像:
import Foundation
import Network
class NetworkChecker: ObservableObject
@Published var available = false
private var pathMonitor: NWPathMonitor
init()
pathMonitor = NWPathMonitor()
pathMonitor.pathUpdateHandler = path in
DispatchQueue.main.async
self.available = path.status == .satisfied
pathMonitor.start(queue: DispatchQueue.global(qos: .background))
通过将其设为ObservableObject
,您可以将其添加为应用根级别的环境对象,以便在您需要的任何视图中使用它:
@main
struct MyApp: App
@StateObject var networkChecker = NetworkChecker()
var body: some Scene
WindowGroup
ContentView()
.environmentObject(networkChecker)
struct ContentView: View
@EnvironmentObject var networkChecker: NetworkChecker
var body: some View
Text(networkChecker.available ? "Online" : "Offline")
.padding()
【讨论】:
以上是关于如何在 IOS 应用程序上检查网络连接? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Objective C: iOS 14 如何做网络隐私权限检查