已在论坛查到的方式有如下4种,
- socket,包括原生socket和websocket
- xpc,iOS下不会使用
- 通知
- 其中通知可以发送和接收,但经过反复测试不能携带参数,需要配合本地文件存储或者剪切板等完成通信
//App 发送
CFDictionaryRef cfdic = (__bridge CFDictionaryRef)dict;
NSLog(@"%@", cfdic);
const void *tkeys[1] = { @"testKey" };
const void *tvalues[1] = { @"testValue" };
CFDictionaryRef userInfo = CFDictionaryCreate(NULL, tkeys, tvalues, 1, NULL, NULL);
CFNotificationCenterPostNotificationWithOptions(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("OpenAPP"), NULL, userInfo, kCFNotificationPostToAllSessions);
// tweak 注册
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL,
&OpenAPPNotificationReceivedCallback, CFSTR("OpenAPP"), NULL,
CFNotificationSuspensionBehaviorDeliverImmediately);
// tweak收到通知的回调
static void OpenAPPNotificationReceivedCallback(CFNotificationCenterRef center,
void *observer, CFStringRef name,
const void *object, CFDictionaryRef
userInfo)
{
#error 这里始终收不到 userInfo
}
-
所以想通过通知配合本地文件存贮内容,频繁读取文件.不够优雅
-
所以想问下各位大佬,不同进程下的Tweak和App如何优雅的双向通信