内嵌Webview
优质
小牛编辑
171浏览
2023-12-01
对于使用UIWebView、WKWebView嵌入网页在应用内的App,我们封装了从JavaScript到Native的调用,并提供了与Native一致的统计API。(点此下载JS Demo)
此处我们封装了从Javascript到Native的调用,但是如果您的APP已有JavaScript Bridge,您也可以进行自己封装。
使用方法
- 引用
mobstat.js
到您的网页内 对于UIWebview,实现如下代理方法,并调用SDK的
webviewStartLoadWithRequest:
接口,传入request
参数- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { [[BaiduMobStat defaultStat] webviewStartLoadWithRequest:request]; return YES; }
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool { BaiduMobStat.default().webviewStartLoad(with: request) return true }
对于WKWebView,实现如下代理方法,并调用SDK的
didReceiveScriptMessage:body:
接口,传入的参数为message
的name
和body
-(void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message{ [[BaiduMobStat defaultStat] didReceiveScriptMessage:message.name body:message.body]; }
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { if let body = message.body as? Dictionary<String, AnyObject> { BaiduMobStat.default().didReceiveScriptMessage(message.name, body: body) } }
在您的HTML代码内,调用对应的API进行统计。API列表见下方。
API
JS的埋点Api,可以灵活使用,没有固定的调用场景,在JS代码的业务场景触发处埋点即可。
接口声明,请查看上面下载的JS Demo中的mobstat.js
。
具体调用方法可以参考JS Demo中的mobstat.html文件。
事件分析
无时长事件
// 接口声明
BaiduMobStat.onEvent(eventId, eventLabel);
// attributes 是以object形式传入的字典,如{'类型':'类型一', '数值': '3'}
BaiduMobStat.onEventWithAttributes(eventId, eventLabel, attributes);
// 调用示例
<li><a href="" onClick="BaiduMobStat.onEvent('event1', '自定义事件一');">onEvent(String, String)</a></li>
<li><a href="" onClick="BaiduMobStat.onEventWithAttributes('event4', '自定义事件四', {'类型':'类型一', '数值': '3'});">onEvent(String, String, Dict)</a></li>
固定时长事件
// 接口声明
BaiduMobStat.onEventDuration(eventId, eventLabel, duration);
// attributes 是以object形式传入的字典,如{'类型':'类型一', '数值': '3'}
BaiduMobStat.onEventDurationWithAttributes(eventId, eventLabel, duration, attributes);
// 调用示例
<li><a href="" onClick="BaiduMobStat.onEventDuration('event3', '自定义事件三', 1000);">onEventDuration(String, String, long)</a></li>
<li><a href="" onClick="BaiduMobStat.onEventDurationWithAttributes('event6', '自定义事件六', 1000, {'类型':'类型一', '数值': '3'});">onEventDuration(String, String, long, Dict)</a></li>
自定义时长事件
// 接口声明
BaiduMobStat.onEventStart(eventId, eventLabel);
BaiduMobStat.onEventEnd(eventId, eventLabel);
// attributes 是以object形式传入的字典,如{'类型':'类型一', '数值': '3'}
BaiduMobStat.onEventEndWithAttributes(eventId, eventLabel, attributes);
// 调用示例
<li><a href="" onClick="BaiduMobStat.onEventStart('event2', '自定义事件二');">onEventStart(String, String)</a></li>
<li><a href="" onClick="BaiduMobStat.onEventEnd('event2', '自定义事件二');">onEventEnd(String, String)</a></li>
<li><a href="" onClick="BaiduMobStat.onEventEndWithAttributes('event5', '自定义事件五', {'类型':'类型一', '数值': '3'});">onEventEnd(String, String, Dict)</a></li>
页面分析
// 接口声明
BaiduMobStat.onPageStart(pageName);
BaiduMobStat.onPageEnd(pageName);
// 调用示例
<li><a href="" onClick="BaiduMobStat.onPageStart('WebView');">onPageStart(String)</a></li>
<li><a href="" onClick="BaiduMobStat.onPageEnd('WebView');">onPageEnd(String)</a></li>