Pull to refresh

Comments 15

Интересно, как в комментариях сейчас всё сведут к холивару по новому дизайну
А можно ли с помощью этих интерфейсов получить потребляемый приложением сетевой трафик с момента запуска процесса или вообще за всю жизнь?
Я такой функционал не искал. Может быть и можно.

Из того что еще я использую: DHCP опции, полученные от сервера. Так же иными способами достать почти нереально.
а вообще этот интерфейс дает узнавать что-то о конкретном процессе? Или он только системные настройки дает узнавать?
> в iOS 6 имеются больше 100 открытых для подключения MACH-портов с самыми разнообразными именами

а где можно список всех имен посмотреть?
Спасибо за статью!

Под катом я расскажу, как узнать все это без применения Private API и Jailbreak.

C чего вы взяли, что MIG subsystem и Apple System Log facility не являются Private API в iOS? В официальной документации к iOS SDK их описание отсутствует.

Итак, мы реализовали часть SystemConfiguration.framework самостоятельно и получили необходимые данные не прибегая к Jailbreak или незаконному использованию библиотек.

Я не знаю, что имеется в виду под «незаконным», но реверс-инжинеринг запрещен правилами iOS Developer Program

В общем-то, Public API не дает возможности узнать ничего, кроме SSID, BSSID и сетевых настроек адаптера. А режим шифрования? мощность сигнала?

Кстати, есть способ узнать мощность сигнала WiFi (RSSI) пользуясь только UIKit'ом. Но, правда, ни для чего более сложного (вроде режима шифрования) он не годится.
Пожалуйста :)
И да, привет :) Вашего коммента я ждал.

Они являются несомненно не документированным API. Но под Private API в данном контексте имелись ввиду Private-Frameworks.

Реверс-инжинеринг был излишним, так как я прозевал на ранней стадии research-a лежащие рядом MIG-дефинишены.

Если Вас не затруднит, поделитесь исходниками. Это действительно интересно.
Есть такой класс-одиночка UIStatusBarServer, экземпляр которого поставляет актуальную информацию о состоянии сетей, заряде батареи и т.п. для элементов статус-бара. Вот собственно формат этой информации:

typedef struct { // from UIStatusBarServerThread
    char itemIsEnabled[24];
    char timeString[64];
    int gsmSignalStrengthRaw;
    int gsmSignalStrengthBars;
    char serviceString[100];
    char serviceCrossfadeString[100];
    char serviceImages[2][100];
    char operatorDirectory[1024];
    unsigned int serviceContentType;
    int wifiSignalStrengthRaw;  // !
    int wifiSignalStrengthBars;
    unsigned int dataNetworkType;
    int batteryCapacity;
    unsigned int batteryState;
    char batteryDetailString[150];
    int bluetoothBatteryCapacity;
    int thermalColor;
    unsigned int thermalSunlightMode : 1;
    unsigned int slowActivity : 1;
    unsigned int syncActivity : 1;
    char activityDisplayId[256];
    unsigned int bluetoothConnected : 1;
    unsigned int displayRawGSMSignal : 1;
    unsigned int displayRawWifiSignal : 1;
    unsigned int locationIconType : 1;
} StatusBarData;


На примере этого проекта можно разобраться, как работать UIStatusBarServer'ом (не моё): Battery Chart
Здорово, спасибо.
С моей точки зрения уже становится интересно: «а откуда он вынул эту информацию?».
Ой, каюсь, забыл отметить, что использование Apple System Log проходит AppStore. (приложение LookoutApp)
У меня самого сложилось впечатление, что использовать Private API всё-таки можно, главное не наглеть :) Потому что примеров таких приложений — масса.

Еще есть мнение, что есть несколько градаций «законности» API. blog.programmableweb.com/2011/11/03/private-api/
UFO just landed and posted this here
Sign up to leave a comment.