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