私は脱獄の微調整を書いています。アプリ ストア ベースのアプリを含むすべてのアプリに接続しています。一部のデータをキャプチャするためにファイルを作成する必要があります。この回答に基づいて、すべてのアプリが SpringBoard に通知を送信し、SpringBoard がファイルを /var/mobile/application に書き込むようにするのが最善の方法です。しかし、CFNotificationCenterAddObserver をコンパイルできません。「....への呼び出しに一致する関数はありません」というエラーが発生します。以下はコードスニペットです。そうそう、「CoreFoundation.h」と「CFNotificationCenter.h」を含めました (それほど愚かではありません :-)
以下のコードのアイデアは、SpringBoard からの通知をリッスンし、他のすべてのアプリからの通知を投稿することです。
このエラーを解決する方法を知っている人はいますか。いくつかの github サンプル %ctor を見ましたが、消化できませんでした...
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