iOS中如何获取standalone5G等具体5G网络连接类型?
如何获取iOS设备当前连接的具体5G网络类型?
你已经能通过NetworkReachability获取到基础的网络接口类型(蜂窝、WiFi等),但在尝试获取具体5G类型(独立组网SA、非独立组网NSA)时出现错误。错误代码的核心问题在于直接引用了NWInterface.RadioType.Cellular类型而非实际的接口实例,且switch语法存在占位符错误。
错误代码问题分析
你之前的错误代码:
if let networktype = NWInterface.RadioType.Cellular { switch networktype { case .standalone5G(<#T##Network.NWInterface.RadioType.Cellular.NewRadio5GVariant#>): print("CDMA Network") default: print("Other") } }
这里有两个关键问题:
NWInterface.RadioType.Cellular是枚举类型,不是可选值,不能用if let解包- switch case中的占位符未替换,且逻辑上没有获取当前设备实际的蜂窝网络radio类型
正确实现代码
要获取具体5G类型,需要先获取当前活跃的蜂窝网络接口,再读取其radioType属性。以下是两种场景的完整实现:
场景1:实时监听网络变化(适合动态更新需求)
import Network func monitor5GNetworkType() { let monitor = NWPathMonitor() monitor.pathUpdateHandler = { path in // 遍历活跃接口,定位蜂窝网络 for interface in path.availableInterfaces { guard interface.type == .cellular else { continue } guard let cellularRadioType = interface.radioType as? NWInterface.RadioType.Cellular else { print("无法获取蜂窝网络详细类型") return } switch cellularRadioType { case .standalone5G(let variant): print("当前为独立组网(SA)5G,版本:\(variant)") case .dualConnectivity5G(let variant): print("当前为非独立组网(NSA)5G,版本:\(variant)") case .lte, .edge, .gprs: print("当前为4G/2G蜂窝网络") default: print("其他蜂窝网络类型") } break } } let queue = DispatchQueue(label: "NetworkMonitorQueue") monitor.start(queue: queue) }
场景2:获取当前时刻的网络类型(适合单次查询需求)
import Network func getCurrentCellularRadioType() { let allInterfaces = NWInterface.allInterfaces for interface in allInterfaces { guard interface.type == .cellular else { continue } guard let cellularRadioType = interface.radioType as? NWInterface.RadioType.Cellular else { print("无法获取蜂窝网络详细类型") return } switch cellularRadioType { case .standalone5G(let variant): print("SA 5G - \(variant)") case .dualConnectivity5G(let variant): print("NSA 5G - \(variant)") default: print("当前为非5G蜂窝网络") } } }
注意事项
- 需iOS 14.0及以上版本,才支持
NWInterface.RadioType.Cellular的5G相关枚举值 - 项目需开启蜂窝网络权限:在
Info.plist中添加NSCellularNetworkUsageDescription键并填写用途说明 - 实时监听场景中,记得在不需要时调用
monitor.cancel()停止监听,避免资源浪费
内容的提问来源于stack exchange,提问作者shirish
相关产品推荐
相关产品推荐

