H5桥接

在进行H5桥接前,需要首先集成App SDK和JS SDK,并初始化。私有化统计SDK H5桥接功能仅支持Android 4.2(及更高版本),低于4.2版本的Android OS上不支持桥接。

API接口

H5页面中事件统计协议跟随Native上报

//此接口需要在WebView控件宿主Activity的onCreate函数中调用,标记h5页面的开始和结束
SpmAgent.attach(WebView);
SpmAgent.detach();

注意:SPM插件SDK内部,通过在WebView对象UserAgent内容中追加特殊内容,以通知JS SDK可以调用Native层相关桥接API。所以如果开发者需要定制UserAgent中的内容,必须通过追加方式修改,如果直接替换原有UserAgent,可能导致H5桥接功能失效。

SpmAgent.attach(WebView);

此接口需要在WebView控件宿主Activity的onCreate函数中调用

参数

类型

备注

WebView

WebView对象

需要桥接H5页面的容器WebView对象

示例:

public class WebviewAnalytic extends Activity {
    private static final String TAG = "WebviewAnalytic";

    WebView mWebView;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_webview);
        MobclickAgent.skipMe(this, TAG); //WebView宿主Activity不需要统计native成页面PV事件
        WebView webView = findViewById(R.id.webview);
        mWebView = webView;
        
        // 绑定WebView控件到SPM插件SDK,此WebView内访问H5页面中的aplus_cloud.js SDK可以和
        // SPM插件SDK配合,实现H5页面埋点统计数据统一通过Native统计SDK发送。
        SpmAgent.attach(mWebView);
        
        webView.loadUrl("file:///android_asset/index.html");
    }

   // ......
SpmAgent.attachX5(WebView); 此接口仅用于开发者使用腾讯X5Webview三方控件场景。需要在腾讯X5WebView控件宿主Activity的onCreate函数中调用。 注意:SPM插件SDK内部通过WebView对象UserAgent内容中追加特殊内容以通知JS SDK可以 调用Native层相关桥接API。所以如果开发者需要定制UserAgent中的内容,必须通过追加方式修改, 如果直接替换原有UserAgent,可能导致H5桥接功能失效。

参数


类型


备注


WebView


com.tencent.smtt.sdk.WebView对象


需要桥接H5页面的容器X5WebView对象

示例:
import android.app.Activity;
import android.os.Bundle;

import com.tencent.smtt.sdk.WebSettings;
import com.tencent.smtt.sdk.WebSettings.LayoutAlgorithm;
import com.tencent.smtt.sdk.WebView;

import com.umeng.analytics.MobclickAgent;
import com.umeng.spm.SpmAgent;

public class X5WebviewAnalytics extends Activity {
    private static final String TAG = "X5WebviewAnalytics";

    com.tencent.smtt.sdk.WebView mWebView;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_x5webview);
        MobclickAgent.skipMe(this, TAG); //WebView宿主Activity不需要统计native成页面PV事件
        com.tencent.smtt.sdk.WebView webView = findViewById(R.id.webview);
        mWebView = webView;

        // 如下设置参考X5Webview腾讯官方Demo配置,具体设置请开发者依照自己App要求配置
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webSettings.setAllowFileAccess(true);
        webSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
//        webSettings.setSupportZoom(true);
//        webSettings.setBuiltInZoomControls(true);
//        webSettings.setUseWideViewPort(true);
        webSettings.setSupportMultipleWindows(true);
        // webSetting.setLoadWithOverviewMode(true);
        webSettings.setAppCacheEnabled(true);
        // webSetting.setDatabaseEnabled(true);
        webSettings.setDomStorageEnabled(true);
//        webSettings.setGeolocationEnabled(true);
        webSettings.setAppCacheMaxSize(Long.MAX_VALUE);
        // webSetting.setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);
        webSettings.setPluginState(WebSettings.PluginState.ON_DEMAND);
        // webSetting.setRenderPriority(WebSettings.RenderPriority.HIGH);
        webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);

        // 绑定WebView控件到SPM插件SDK,此WebView内访问H5页面中的aplus_cloud.js SDK可以和
        // SPM插件SDK配合,实现H5页面埋点统计数据统一通过Native统计SDK发送。
        SpmAgent.attachX5(mWebView);
        
        webView.loadUrl("file:///android_asset/index.html");
    }

   // ......
SpmAgent.detach();

此接口需要在WebView控件宿主Activity的onCreate函数中调用

示例:

@Override
    protected void onDestroy() {
        super.onDestroy();
        SpmAgent.detach(); // 在WebView宿主Activity销毁时解除绑定
    }

Native页面PV事件不上报

MobclickAgent.skipMe(this, pageName);

当对Activity中的h5层进行统计时,若需要避免native层和h5层页面PV事件重复上报,需要在WebView控件宿主Activity的onCreate函数中调用此函数。

此函数调用后,SDK不会在对当前Activity页面native层页面PV事件进行统计及上报,避免和H5层页面PV事件重复上报。

参数

类型

备注

this

Activity对象

WebView宿主Activity对象

pageName

字符串

当前Activity页面调用MobclickAgent.onPageStart接口时传入的页面名称

示例:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_webview);
        
        //WebView宿主Activity不需要统计native成页面PV事件
        MobclickAgent.skipMe(this, "WebviewAnalytic"); 
        
        WebView webView = findViewById(R.id.webview);
        mWebView = webView;
        // 绑定WebView控件到SPM插件SDK,此WebView内访问H5页面中的aplus_cloud.js SDK可以和
        // SPM插件SDK配合,实现H5页面埋点统计数据统一通过Native统计SDK发送。
        SpmAgent.attach(mWebView);
        webView.loadUrl("file:///android_asset/index.html");
    }

阿里云首页 Quick Tracking 相关技术圈