当您的应用为Hybrid模式,并且该模式下需调用H5页面,通过JavaScript上报数据时,H5中调用Analytics SDK的方法,必须通过App的native代码进行转发,示例代码如下:
// 定义暴露给H5的js对象,其中用JavascriptInterface标注的方法均可被H5调用
public class HiAnalyticsWebInterface{
HiAnalyticsInstance instance;
public HiAnalyticsWebInterface(Context context){
HiAnalyticsTools.enableLog();
instance = HiAnalytics.getInstance(context);
instance.setAnalyticsEnabled(true);
}
@JavascriptInterface
public void onEvent(String eventName,String jsonString) {
instance.onEvent(eventName,bundleFromJson(jsonString));
}
private Bundle bundleFromJson(String parameters){
// 将字符串转化为Bundle对象
}
} // 将HiAnalyticsWebInterface的实例添加到WebView的js接口上
public class WebActivity extends AppCompatActivity {
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
webView = new WebView(this);
// ...
// 定义暴露给H5页面的js对象名为HiAnalyticsObj
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new HiAnalyticsWebInterface(this), "HiAnalyticsObj");
}
}