检测iPhone X中崩溃的热点

时间:2018-09-18 01:35:04

标签: ios objective-c iphone-x uistatusbar

我在viewDidLoad中具有以下示例代码来检测热点的开/关。可以在iPhone 6-8中正常运行,但在iPhone X中崩溃了。

 UIApplication *app = [UIApplication sharedApplication];
    if(![[app valueForKey:@"statusBar"] valueForKey:@"doubleHeightLabel"])
    {
       //Some code here
    }
    else
    {
        //Some code here
    }

显示的错误消息:-

  

由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[ valueForUndefinedKey:]:此类不符合键doubleHeightLabel的键值编码标准。'

有什么主意吗?

2 个答案:

答案 0 :(得分:2)

有一种方法可以检查CNCopyCurrentNetowrkInfo中的当前网络信息。

还有黑客:

Obj-c:

CGFloat statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;

快捷键:

let statusBarHeight = UIApplication.shared.statusBarFrame.size.height

启用个人热点后,它将返回40,否则返回20。

请注意,该功能不适用于iPhone X +

答案 1 :(得分:0)

它崩溃是因为Apple已更改了键“ statusBar”所持有的对象。它不再具有键为“ doubleHeightLabel”的对象。如评论中所述,由于这个问题,Apple禁止使用私有API。在升级iOS版本时,他们会随意更改“ statusBar”对象,因此键可能会丢失,更改或什至保留完全不同的变量。

解决方案:不要使用私有API。做个好家伙,听听苹果的声音。