我使用rpetrich's theos创建了一个调整项目,并且想要挂钩NSURLSession方法,但挂钩似乎没有被调用?为什么?这是我的Tweak.xm代码:如何将NSURLSession方法与theos挂钩?
%hook NSURLSession
- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request
completionHandler:(void (^)(NSData *data, NSURLResponse *response, NSError *error))completionHandler
{
NSLog(@"testhook dataTaskWithRequest:completionHandler:");
return %orig(request, completionHandler);
}
- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request
{
NSLog(@"testhook dataTaskWithRequest");
return %orig(request);
}
%end
%hook NSMutableURLRequest
+ (id)requestWithURL:(NSURL *)URL
{
NSLog(@"testhook NSMutableURLRequest");
return %orig(URL);
}
%end
我加入了NSMutableURLRequest
挂钩,以确保该文件和整个的调整被加载。我可以验证它挂钩了requestWithURL:
,但没有任何NSURLSession方法。我正在测试NSURLSessionExample的代码。
这里缺少什么?有没有人成功挂钩NSURLSession?
这个调整的过滤器是什么?另外:你用于钩子的语法是Logos,而不是Theos,所以你应该用问题来代替Theos。 – Aehmlo 2014-11-05 13:14:39
@AehmloLxaitn我用'{Filter = {Bundles =(“com.ravi.NSURLSessionExample”); }; }'这是测试应用程序的包ID。 'NSMutableRequest'钩子工作,所以我想我的过滤器是正确的?我添加了'logos'标签。因为'logos'是'theos'的一个子组件,所以我放了'theos'。 – radj 2014-11-05 14:10:37