需求: 退役iOS12越狱机给老人当主力机用,但是每次回乡下后,需要重新插拔卡才能连上信号,很麻烦。
我从拔卡会跳出"未安装SIM卡",入手,打印调用栈跟踪到SpringBoard的:
void __cdecl +[SBUserNotificationCenter startUserNotificationCenter](SBUserNotificationCenter_meta *self, SEL a2)
{
...
v4 = CFMachPortCreateWithPort(0LL, v3, sub_10029FAD0, &v8, 0LL);
v5 = CFMachPortCreateRunLoopSource(0LL, v4, 0LL);
v6 = CFRelease(v4);
v7 = CFRunLoopGetCurrent(v6);
CFRunLoopAddSource(v7, v5, kCFRunLoopCommonModes);
...
}
发现是CFMachPort接收的通知,但是不知道这个通知从哪里发过来的。
(找到源头,模拟通知系统应该会重新加载SIM了吧)
(资料查到应该是从CoreTelephony,ComCenter来的)