内嵌Webview

对于使用UIWebView、WKWebView嵌入网页在应用内的App,我们封装了从JavaScript到Native的调用,并提供了与Native一致的统计API。(点此下载JS Demo

此处我们封装了从Javascript到Native的调用,但是如果您的APP已有JavaScript Bridge,您也可以进行自己封装。

使用方法

  • 引用mobstat.js到您的网页内
  • 对于UIWebview,实现如下代理方法,并调用SDK的webviewStartLoadWithRequest:接口,传入request参数
  1. - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
  2. [[BaiduMobStat defaultStat] webviewStartLoadWithRequest:request];
  3. return YES;
  4. }
  1. func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
  2. BaiduMobStat.default().webviewStartLoad(with: request)
  3. return true
  4. }
  • 对于WKWebView,实现如下代理方法,并调用SDK的didReceiveScriptMessage:body:接口,传入的参数为messagenamebody
  1. -(void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message{
  2. [[BaiduMobStat defaultStat] didReceiveScriptMessage:message.name body:message.body];
  3. }
  1. func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
  2. if let body = message.body as? Dictionary<String, AnyObject> {
  3. BaiduMobStat.default().didReceiveScriptMessage(message.name, body: body)
  4. }
  5. }
  • 在您的HTML代码内,调用对应的API进行统计。API列表见下方。

API

JS的埋点Api,可以灵活使用,没有固定的调用场景,在JS代码的业务场景触发处埋点即可。

接口声明,请查看上面下载的JS Demo中的mobstat.js

具体调用方法可以参考JS Demo中的mobstat.html文件。

事件分析

无时长事件

  1. // 接口声明
  2. BaiduMobStat.onEvent(eventId, eventLabel);
  3. // attributes 是以object形式传入的字典,如{'类型':'类型一', '数值': '3'}
  4. BaiduMobStat.onEventWithAttributes(eventId, eventLabel, attributes);
  5. // 调用示例
  6. <li><a href="" onClick="BaiduMobStat.onEvent('event1', '自定义事件一');">onEvent(String, String)</a></li>
  7. <li><a href="" onClick="BaiduMobStat.onEventWithAttributes('event4', '自定义事件四', {'类型':'类型一', '数值': '3'});">onEvent(String, String, Dict)</a></li>

固定时长事件

  1. // 接口声明
  2. BaiduMobStat.onEventDuration(eventId, eventLabel, duration);
  3. // attributes 是以object形式传入的字典,如{'类型':'类型一', '数值': '3'}
  4. BaiduMobStat.onEventDurationWithAttributes(eventId, eventLabel, duration, attributes);
  5. // 调用示例
  6. <li><a href="" onClick="BaiduMobStat.onEventDuration('event3', '自定义事件三', 1000);">onEventDuration(String, String, long)</a></li>
  7. <li><a href="" onClick="BaiduMobStat.onEventDurationWithAttributes('event6', '自定义事件六', 1000, {'类型':'类型一', '数值': '3'});">onEventDuration(String, String, long, Dict)</a></li>

自定义时长事件

  1. // 接口声明
  2. BaiduMobStat.onEventStart(eventId, eventLabel);
  3. BaiduMobStat.onEventEnd(eventId, eventLabel);
  4. // attributes 是以object形式传入的字典,如{'类型':'类型一', '数值': '3'}
  5. BaiduMobStat.onEventEndWithAttributes(eventId, eventLabel, attributes);
  6. // 调用示例
  7. <li><a href="" onClick="BaiduMobStat.onEventStart('event2', '自定义事件二');">onEventStart(String, String)</a></li>
  8. <li><a href="" onClick="BaiduMobStat.onEventEnd('event2', '自定义事件二');">onEventEnd(String, String)</a></li>
  9. <li><a href="" onClick="BaiduMobStat.onEventEndWithAttributes('event5', '自定义事件五', {'类型':'类型一', '数值': '3'});">onEventEnd(String, String, Dict)</a></li>

页面分析

  1. // 接口声明
  2. BaiduMobStat.onPageStart(pageName);
  3. BaiduMobStat.onPageEnd(pageName);
  4. // 调用示例
  5. <li><a href="" onClick="BaiduMobStat.onPageStart('WebView');">onPageStart(String)</a></li>
  6. <li><a href="" onClick="BaiduMobStat.onPageEnd('WebView');">onPageEnd(String)</a></li>