【发布时间】:2018-05-17 09:26:31
【问题描述】:
如果无法访问互联网,是否可以通过编程方式区分以下权限情况?
- 用户拒绝为应用程序使用数据的权限的情况。
- 用户已授予使用数据的权限,但手机处于飞行模式(或根本没有 SIM/WiFi)的情况。
我想阅读这些无线数据权限以区分上述情况以获得更友好的错误消息(即,在一种情况下我建议验证权限,在另一种情况下我建议检查飞行模式)
我只能找到基于How to use SCNetworkReachability in Swift 的互联网可访问性,但它不知道实际权限:
import SystemConfiguration
@available(iOS 9.0, macOS 10.11, *)
static func internetConnectionIsReachable() -> Bool {
var zeroAddress = sockaddr_in6()
zeroAddress.sin6_len = UInt8(MemoryLayout<sockaddr_in6>.size)
zeroAddress.sin6_family = sa_family_t(AF_INET6)
guard let reachability = withUnsafePointer(to: &zeroAddress, {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
SCNetworkReachabilityCreateWithAddress(nil, $0)
}
}) else {
return false
}
var flags: SCNetworkReachabilityFlags = []
guard SCNetworkReachabilityGetFlags(reachability, &flags) else {
return false
}
return flags.contains(.reachable)
}
【问题讨论】:
标签: ios reachability ios-permissions