Sha*_*e D 8 networking objective-c cellular-network ios swift
我有一个应用程序,我希望能够在一定的时间间隔后获得连接状态报告.即使我连接或关联到Wifi网络,我也想知道是否通过蜂窝网络启用了数据访问.这意味着,如果在检查之后,我可以优雅地与wifi网络解除关联,因为知道设备将连接到的可用蜂窝连接.
当前的可达性方法仅在连接到蜂窝时才提供有关蜂窝可用性的信息,并且在实际连接到接口之前没有太多关于获取此数据的信息.
寻找Android中可用的类似解决方案,如此链接中所述.
澄清
我不想看看我的设备是否具有蜂窝功能.我试图确定用户是否通过移动网络启用/禁用了数据访问,并且即使我连接到Wifi也想知道这些信息.用户可以通过转到"设置"来打开和关闭此功能.
如果您的目标是 iOS 12 或更高版本,Apple 已引入Network该类(作为框架的一部分)NWPathMonitor。您可以(像我一样)实例化两个不同的监视器,一个用于蜂窝网络,另一个用于 wifi:
let wifiMonitor = NWPathMonitor(requiredInterfaceType: .wifi)
let cellularMonitor = NWPathMonitor(requiredInterfaceType: .cellular)
Run Code Online (Sandbox Code Playgroud)
假设您有一个类,它使用两个简单的布尔值来跟踪两个连接状态,并具有pathUpdateHandler您可以执行的属性:
wifiMonitor.pathUpdateHandler = { path in
self.isWifiConnected = path.status == .satisfied
}
cellularMonitor.pathUpdateHandler = { path in
self.isCellularConnected = path.status == .satisfied
}
Run Code Online (Sandbox Code Playgroud)
然后按照你喜欢的方式处理自己。请记住通过调用和提供串行队列来启动监视器start(_:)(我提供了两个单独的队列);有一个怪癖,一旦取消监视器实例,就必须实例化一个新实例,因为它无法重新启动。
小智 6
没有可用的 api 可供应用程序查询是否启用了移动数据。您可以使用 CTCellularData 的蜂窝数据RestrictionDidUpdateNotifier 和受限状态来了解用户是否为您的应用程序启用或禁用了蜂窝数据访问。这是 iOS 允许的最大应用程序。即使这是不可靠的,就好像您从设备中取出 SIM 卡一样,它仍会为您提供较早的受限状态状态。
Dra*_*tin -1
https://github.com/ashleymills/Reachability.swift Reachability 有一个方法来确定网络是否可以通过 WWAN 访问
var isReachableViaWWAN: Bool {
// Check we're not on the simulator, we're REACHABLE and check we're on WWAN
return isRunningOnDevice && isReachableFlagSet && isOnWWANFlagSet
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1671 次 |
| 最近记录: |