首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们能读取iOS上的无线数据权限吗?

我们能读取iOS上的无线数据权限吗?
EN

Stack Overflow用户
提问于 2018-05-17 09:26:31
回答 2查看 364关注 0票数 6

如果无法访问internet,是否可以以编程方式区分下列权限情况?

  1. 用户拒绝为应用程序使用数据的情况。
  2. 用户已授予使用数据的权限,但电话处于飞行模式(或根本没有SIM/WiFi )的情况。

我想通过阅读那些无线数据权限来区分上述情况,以获得更友好的错误消息(例如,在一种情况下,我建议验证权限,而在另一种情况下,我建议检查飞行模式)

我所能找到的就是基于How to use SCNetworkReachability in Swift的互联网可达性,但它不知道实际的权限:

代码语言:javascript
复制
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)
}
EN

回答 2

Stack Overflow用户

发布于 2018-05-20 17:56:53

总之,您可能无法区分这些情况,而且您可能不想这样做。苹果甚至不想让你使用可达性。他们的观点是:你的理由不是推理,而是做(即尝试使用网络)或死亡(即失败)。如果你要失败,那就优雅地失败,你已经完成了你的工作。

票数 3
EN

Stack Overflow用户

发布于 2018-05-22 13:28:16

作为一般规则,您不能直接读取权限。您只能确定功能(我的意思是“尝试做某事时失败”),这些功能有时是以用户可控制权限以外的其他方式设置的,例如父母控制或企业证书施加的限制。你可能会很幸运,而且有办法,但我的期望是“不”。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50387903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档