1
我正在編寫一個jail break調整。我喜歡所有應用程序,包括基於應用程序商店的應用程序。我需要編寫一個文件來捕獲一些數據。基於這個answer,最好的方法是讓所有應用程序向SpringBoard發送通知,並讓SpringBoard將文件寫入/ var/mobile/application。但我無法編譯CFNotificationCenterAddObserver。它給出錯誤「沒有匹配函數調用....」。以下是代碼片段。哦,是的,我已經包含了「CoreFoundation.h」和「CFNotificationCenter.h」(不那麼愚蠢:-)CFNotificationCenterAddObserver沒有調用錯誤的匹配函數
想法下面的代碼是收聽來自SpringBoard通知和發佈通知從所有其他應用程序。
有沒有人知道如何解決這個錯誤。我看到一些github上樣品%男星,但儘管我已經包括的CoreFoundation框架無法消化它?
void LogEvent(CFNotificationCenterRef center,
void *observer,
CFStringRef name,
const void *object,
CFDictionaryRef userInfo)
{
NSLog(@"RecordEvent");
}
%hook UIApplication
-(void)applicationDidFinishLaunching:(UIApplication*) application
{
if( [[[NSBundle mainBundle] bundleIdentifier] isEqualToString:@"com.apple.springboard"] )
{
CFNotificationCenterAddObserver(
CFNotificationCenterGetDistributedNotifyCenter(),
NULL,
&LogEvent,
@"RecordTouch",
NULL,
CFNotificationSuspensionBehaviorDeliverImmediately);
}
%orig;
}
%end
現在我得到的鏈接錯誤。是因爲6.1嗎? #if(TARGET_OS_MAC &&!(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE))|| TARGET_OS_WIN32 CF_EXPORT CFNotificationCenterRef CFNotificationCenterGetDistributedCenter(void); #endif – Jailbroken
嘗試'extern「C」CFNotificationCenterRef CFNotificationCenterGetDistributedCenter(void);' – creker
它工作!謝謝。 – Jailbroken