检查蜂窝数据是不是已关闭
Posted
技术标签:
【中文标题】检查蜂窝数据是不是已关闭【英文标题】:Checking if Cellular Data has been turned off检查蜂窝数据是否已关闭 【发布时间】:2015-06-27 01:18:52 【问题描述】:所以我做了很多研究,但我还没有找到我一直在寻找的答案......
我想做到这一点,如果蜂窝数据被关闭特别是我的应用程序,该应用程序将无法运行,或者至少可以隐藏一些按钮。
我设置了可访问性,因此如果没有互联网连接,应用程序将无法运行。但是,如果用户已连接到 Internet,但 我的应用程序 关闭了蜂窝数据,并且他们没有连接到 wifi,则应用程序会运行(我不希望它这样做)。
任何帮助将不胜感激!
【问题讨论】:
所以您希望您的应用仅在通过蜂窝数据而不是通过 Wifi/蓝牙来访问互联网时才使用?为什么?告诉我们原因可能有助于解决方案或策略。 不,事实并非如此。如果没有任何互联网,我想隐藏一个按钮。因此,如果用户连接到 wifi,那么很好,他们可以使用该应用程序。如果他们连接到蜂窝数据,那就太好了,他们可以使用该应用程序。但是,如果他们关闭 wifi,并专门为我的应用关闭蜂窝数据,他们应该无法使用该应用,因为广告不会出现。我设置的可达性基本上是说,设备连接到互联网,所以你可以做互联网的事情。当仅为我的应用关闭蜂窝数据时,可达性会错误地报告此情况 对不起,如果我的问题之前有误导性或令人困惑的地方,我希望能解决这个问题@BasilBourque 请纠正我,如果我只是简化了这个...但是你能不能只 ping 一些服务器来查看设备是否连接到互联网? 正如@TrevorClarke 所建议的那样。见***.com/questions/46482545/… 【参考方案1】:我遇到了类似的问题并找到了这个解决方案。希望对您有所帮助。
func isCellularRestricted()
let cellState = CTCellularData.init()
cellState.cellularDataRestrictionDidUpdateNotifier = (dataRestrictedState) in
if dataRestrictedState == CTCellularDataRestrictedState.restricted // State has changed
// your app doesn't have cellular data
else if dataRestrictedState == CTCellularDataRestrictedState.notRestricted
// your app does have cellular data
这是我在我的应用程序委托中实现的功能(从 didFinishLaunchingWithOptions 调用)。每次用户更改您的应用程序的蜂窝数据时,它都会被调用,并且仅适用于您的应用程序。如果用户允许您的应用使用蜂窝数据并在 ios 中关闭了蜂窝数据,这仍将返回 notRestricted。
在我的例子中,我设置了一个常量,设置为真/假,这取决于是否允许蜂窝数据。
我在 SO 上的某处找到了答案,但我找不到链接。
编辑(找到链接):How do I know if cellular access for my iOS app is disabled?
【讨论】:
以上是关于检查蜂窝数据是不是已关闭的主要内容,如果未能解决你的问题,请参考以下文章