Обнаружить разбитую точку доступа в iPhone X - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть пример кода, как показано ниже в 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 голосов
/ 19 сентября 2018

Есть способ проверить CNCopyCurrentNetowrkInfo для текущей информации о сети.

И есть хаки:

Obj-c:

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

Swift:

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

При включенной личной точке доступа она возвращает 40 и возвращает 20 в противном случае.

Обратите внимание что это не сработает для iPhone X +

0 голосов
/ 19 сентября 2018

Вылетает из-за того, что Apple изменила объект, удерживаемый клавишей «statusBar». У него больше нет объекта с ключом "doubleHeightLabel". Как указано в комментариях, Apple запрещает использование закрытого API из-за этой самой проблемы. При обновлении версии iOS они будут по своему усмотрению менять объект statusBar, поэтому ключи могут отсутствовать, или изменяться, или даже содержать совершенно другую переменную.

Решение: не используйте закрытый API. Будь хорошим бойцом и слушай Apple.

...