我有一个应用程序,我在iOS 10.3上测试了几天后,它运行良好。我最近在iOS 12设备上测试了它,它没有像预期的那样工作。应用程序无法连接到我的服务器。
经过调查,我发现在Settings -> AppName中,我的应用程序关闭了“移动数据”开关。打开它之后,它就开始完美地工作了。
那么,在这种情况下,有什么方法可以从代码中确定此开关的状态吗?如果我能够知道状态,如果状态是关闭的,我可以使用以下方法将用户重定向到应用程序设置:
let urlObj = NSURL.init(string:UIApplicationOpenSettingsURLString)
if #available(iOS 10.0, *) {
UIApplication.shared.open(urlObj as! URL, options: [ : ], completionHandler: { Success in
})
} else {
let success = UIApplication.shared.openURL(url as URL)
print("Open \(url): \(success)")
}P.S:我并不是在寻找一个使用Reachability的解决方案,因为它并不完全可靠。
发布于 2019-04-16 17:14:35
在最新的iOS发行版中无法检查此设置。您有两个选项来处理这个问题:第一,您检查设备是否没有连接到WiFi,也没有连接到飞机模式。如果无法到达服务器,则可以安全地假定数据是禁用的。
第二个选项只是显示用户错误,说明应用程序无法到达服务器,并相应地更改应用程序中的UI/通知,以处理无法到达网络连接的任何场景。
CTCellularData是一个潜在的选项,但是,在iOS 11中,状态检查的频率下降了一些。
https://stackoverflow.com/questions/55713344
复制相似问题