项目中web页埋点以加载资源文件的形式发起请求,当客户端拦截到该请求时,要求放弃发送该请求,改为客户端统计此次埋点事件。
解决方案
NSURLProtocol可以拦截监听每一个URL Loading System中发出request请求。(如果不是这些类发出的请求NSURLProtocol就没办法拦截和监听了)
NSURLProtocol是一个虚基类,所以不能直接使用它,要想使用它就必须自定义一个类成为他的子类,然后实现他里面的必须实现的一些方法
+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
/*
//防止死循环,必要时使用
if ([NSURLProtocol propertyForKey:protocolKey inRequest:request]) {
return NO;
}
*/
NSString * urlString = request.URL.absoluteString;
//需要处理请求返回YES
return [WebViewStatistics webViewSendStatisticsWithURL:uslStrin