通过后台捕获弹框,并处理已初步实现,不过存在两个问题:
问题一:hook弹框的事件,使用如下代码,不过只有部分的弹框可以hook到(你是否信任,低电量,apple id 输入,无安装sim卡等),有些程序里面的alert弹框无法捕获到。
hook 弹框的代码如下:
%hook SBAlertItemsController
-(void)activateAlertItem:(id)item
{
%org;
}
当然对于问题一使用查询法,是可以实现弹框的捕获,不过效率太低,是不是如上hook遗漏了一部分,是不是可以通过hook另的类下的方法可以得以补充?
不断查询检测的代码如下:
Class UIAlertManager = objc_getClass("_UIAlertManager");
UIAlertView *topMostAlert = [UIAlertManager performSelector:@selector(topMostAlert)];
while (topMostAlert) {
[topMostAlert dismissWithClickedButtonIndex:0 animated:NO];
topMostAlert = [UIAlertManager performSelector:@selector(topMostAlert)];
}
问题二:hook弹框后台通过如下三行代码处理,大部分可以自行处理,有部分弹框处理后HOME键失效了,除非再按一下电源键再解锁就可以了(比如没有装sim卡拨打电话,会弹出未安装sim卡提示,处理完HOME键就失效了)。
Class UIAlertManager = objc_getClass("_UIAlertManager");
UIAlertView *topMostAlert = [UIAlertManager performSelector:@selector(topMostAlert)];
[topMostAlert dismissWithClickedButtonIndex:-1 animated:NO];
请帮忙分析一下,卡死是什么原因,卡死之前弹框也是被处理掉了,只是手机HOME键就失效了,除非再按一下电源键再解锁就可以了。