跳到主要内容

WebView 数据

采集 WebView 配置

若当前使用的 SDK 版本大于等于 2.18.0,按以下方法配置

采集 WebView 数据需设置 setDomStorageEnabled(true),还需设置 WebViewClient 及 WebChromeClient,如项目中未调用上述方法,请添加以下内容

WebSettings webSettings = webview.getSettings();
webSettings.setDomStorageEnabled(true);
webview.setWebViewClient(new WebViewClient(){});
webview.setWebChromeClient(new WebChromeClient(){});

若当前使用的 SDK 版本低于 2.18.0,请按以下方法配置

采集 WebView 数据需设置 setDomStorageEnabled(true),还需设置 WebViewClient 及 WebChromeClient,如项目中未调用上述方法,请添加以下内容

WebSettings webSettings = webview.getSettings();
webSettings.setDomStorageEnabled(true);
webview.setWebViewClient(new WebViewClient(){});
webview.setWebChromeClient(new WebChromeClient(){});
  • 手动注入 JS 探针

    • 相关接口

      /**
      * 采集 WebView 数据需在 WebChromeClient 的 onProgressChanged() 方法中调用本接口
      * @param view WebView 对象
      * @param newProgress 加载进度
      */
      NBSWebChromeClient.initJSMonitor(view, newProgress);
    • 代码示例

      webview.setWebChromeClient(new WebChromeClient(){
      @Override
      public void onProgressChanged(WebView view, int newProgress) {
      NBSWebChromeClient.initJSMonitor(view, newProgress);// 手动注入 JS 探针
      super.onProgressChanged(view, newProgress);
      }
      });

采集 X5WebView 配置

若当前使用的 SDK 版本大于等于 2.18.0,按以下方法配置

采集 X5WebView 数据需设置 setDomStorageEnabled(true),还需设置 WebViewClient 及 WebChromeClient,如项目中未调用上述方法,请添加以下内容

WebSettings webSettings = webview.getSettings();
webSettings.setDomStorageEnabled(true);
webview.setWebViewClient(new WebViewClient(){});
webview.setWebChromeClient(new WebChromeClient(){});

若当前使用的 SDK 版本低于 2.18.0,按以下方法配置

采集 X5WebView 数据需设置 setDomStorageEnabled(true),还需设置 WebViewClient 及 WebChromeClient,如项目中未调用上述方法,请添加以下内容

WebSettings webSettings = webview.getSettings();
webSettings.setDomStorageEnabled(true);
webview.setWebViewClient(new WebViewClient(){});
webview.setWebChromeClient(new WebChromeClient(){});
  • 手动注入 JS 探针

    • 相关接口

      /**
      * 采集 X5WebView 数据需在 WebChromeClient 的 onProgressChanged() 方法中调用本接口
      * @param view WebView 对象
      * @param newProgress 加载进度
      */
      NBSWebChromeX5Client.initJSMonitorX5(view, newProgress);
    • 代码示例

      webview.setWebChromeClient(new WebChromeClient(){
      @Override
      public void onProgressChanged(WebView view, int newProgress) {
      NBSWebChromeX5Client.initJSMonitorX5(view, newProgress);// 手动注入 JS 探针
      super.onProgressChanged(view, newProgress);
      }
      });
  • 添加 JsBridge

    说明:X5WebView 手动注入 JS 探针,还需要添加 JsBridge。

    • 相关接口

      /**
      * @param x5WebView 为 X5 WebView 实例
      */
      NBSWebChromeX5Client.addWebViewBridge(WebView x5WebView);
    • 代码示例

      NBSWebChromeX5Client.addWebViewBridge(x5WebView);//生成 X5WebView 实例后调用

mpaas 内嵌 WebView 数据采集

可以通过此接口采集 mpaas 内嵌 WebView 数据。

  • 相关接口
/** 
* @param h5Page H5Page 对象
* @param apWebViewClient 若存在自定义的 APWebViewClient 实现类,传入该对象,否则传 null
* @param apWebChromeClient 若存在自定义的 APWebChromeClient 实现类,传入该对象,否则传 null
*/
NBSNebulaWebViewConfig.configWebView(H5Page h5Page, APWebViewClient apWebViewClient, APWebChromeClient apWebChromeClient);
  • 代码示例
MPNebula.getH5ViewAsync(this, param, new H5PageReadyListener() {
@Override
public void getH5Page(H5Page h5Page) {
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
// 不存在自定义的 APWebViewClient 或 APWebChromeClient 时,只需传入 h5Page 对象
NBSNebulaWebViewConfig.configWebView(h5Page, null, null);

mLayout.addView(h5Page.getContentView(), lp);
}
});