检查蜂窝数据是不是已关闭

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?

【讨论】:

以上是关于检查蜂窝数据是不是已关闭的主要内容,如果未能解决你的问题,请参考以下文章

如何弹出“蜂窝数据已关闭”警告信息?

不要在 iOS 上显示蜂窝数据警告

苹果手机VPN未连接怎么处理

需要更新以在此iphone上使用蜂窝数据?

iOS网页错误通过蜂窝数据但不是通过Wifi?最近对 AT&T 蜂窝网络的更改?

蜂窝数据的可达性测试