iOS PreferenceBundle - PullRequest
       20

iOS PreferenceBundle

0 голосов
/ 06 января 2012

Я разрабатываю твик для iPhone, с настройками, которые я создал PreferenceBundle, и в комплекте мне нужно вызвать метод SpringBoard, но результаты всегда ничего. Есть ли способ, которым я могу вызвать SBApplication метод?

Я использую objc_getClass, чтобы получить класс

SBApplication *app =[[objc_getClass("SBApplicationController") sharedInstance] applicationWithDisplayIdentifier:identifier];

когда я использую это для вызова метода, результат равен нулю.

Это возможно, или какой-нибудь взлом, который я могу сделать. мне нужно получить иконку из SBApplication.

1 Ответ

0 голосов
/ 06 января 2012

Я думаю, что может быть проще использовать функции C SpringBoadServices. Перейдите в корневую папку Xcode и найдите приватную платформу SpringBoardServices платформы симулятора iOS. Установите его в качестве текущего каталога и запустите nm на исполняемом файле.

imac-van-ief2:SpringBoardServices.framework ief2$ pwd
/Applications/Xcode 3.2.6/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk/System/Library/PrivateFrameworks/SpringBoardServices.framework
imac-van-ief2:SpringBoardServices.framework ief2$ nm -g SpringBoardServices | grep SBSCopyIcon
00009548 T _SBSCopyIconImagePNGDataForDisplayIdentifier
00009400 T _SBSCopyIconImagePathForDisplayIdentifier

Теперь вы нашли имя функции пути к значку, вы можете вызвать его. Объявите его как extern, и вы сможете это сделать.

extern NSString *SBSCopyIconImagePathForDisplayIdentifier(NSString *);

myPath = SBSCopyIconImagePathForDisplayIdentifier(@"com.apple.String");
// Do anything you like
[myPath release];

Теперь не забудьте связать ваш окончательный исполняемый файл с SpringBoardServices фреймворком и добавить /System/Library/PrivateFrameworks к вашему пути поиска фреймворка.

...