1

我有一个应用程序,几天以来我一直在 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)")                            
}

PS:我不是在寻找使用可达性的解决方案,因为它并不完全可靠。

4

1 回答 1

0

在最新的 iOS 版本中无法检查此设置。您有两种选择来处理这个问题:首先是检查设备是否未连接到 WiFi,以及是否处于飞行模式。如果无法访问服务器,则可以安全地假设数据已禁用。

第二种选择只是显示用户错误,说明应用程序无法访问服务器,并相应地更改应用程序中的 UI/通知,以处理无法访问网络连接的任何情况。

CTCellularData 是一个潜在的选项,但是从 iOS 11 开始,检查状态的频率有所下降。

于 2019-04-16T17:14:35.777 回答