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.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");
    }