iOS Hybrid模式

1. 基本配置

iOS App 中如需加载 H5 页面,需要同时集成iOS SDK与JS SDK。

1.1 集成 iOS SDK

集成方式查看iOS SDK 使用说明

1.2 集成 JS SDK

集成方式查看JS SDK 使用说明

2. 代码集成

2.1 SDK监听拦截URL

H5 页面触发事件时,会把事件发往 iOS App 端,App SDK 端接收到数据后保存并上报。 接口如下:

+ (BOOL)setHybridModel:(id)webView request:(NSURLRequest *)request;
  • webView: UIWebViewWKWebView对象

  • request: NSURLRequest请求对象

  • return: 若 js 触发的是 AnalysysAgent 的事件,则setHybridModel:request:方法会返回 YES,完成统计;否则返回 NO,不处理。

注意:若项目中需要设置UserAgent,则需要使用追加方式,请勿覆盖调用setHybridMode接口设置的"AnalysysAgent/Hybrid"标识

代码参考:

// 获取已有 UserAgent
NSString *userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
userAgent = [userAgent stringByAppendingString:@"追加信息"];
// 注册到NSUserDefaults
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent": userAgent}];

示例:

2.1.1 UIWebView

实现UIWebViewUIWebViewDelegate方法,并调用统计接口。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if ([AnalysysAgent setHybridModel:webView request:request]) {
NSLog(@"AnalysysAgent 统计完成");
return NO;
}
return YES;
}

2.1.2 WKWebView

实现WKWebViewWKNavigationDelegate代理方法,并调用统计接口。

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
if ([AnalysysAgent setHybridModel:webView request:navigationAction.request]) {
NSLog(@"AnalysysAgent 统计完成");
decisionHandler(WKNavigationActionPolicyCancel);
return;
}
decisionHandler(WKNavigationActionPolicyAllow);
}

2.2 重置UserAgent

UIWebView/WKWebView结束使用、置为nil或加载UIWebView/WKWebView的页面dealloc时调用。 接口如下:

+ (void)resetHybridModel;

示例:

-(void)dealloc {
[AnalysysAgent resetHybridModel];
}