关于hook UIApplication中代理方法的问题

最近在学习过程中遇到一个问题,研究了好几天没有头绪,所以想请教一下,我想注册了一个消息推送,然后想要勾住- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken这个方法,当我直接%hook AppDelegate后勾住这个方法是可行的,但是AppDelegate可能是xxxAppDelegate,如何在不知道xxxAppDelegate的情况下去获得需要%hook的类来勾住这个方法?

objc_getClassList配合conformstoprotocal

然后这样没法Logos语法你必须自己写MSHookMessage

好的。我研究一下。谢谢!

你先用 [[UIApplication sharedApplication].delegate class]拿到代理类的类名,然后用用运行时的Method Swizzling技术替换- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken函数就行啦。

1 个赞

哦我都忘了还有这个捷径。但是我的方法比较通用啦