目录

当您的应用为HyBird模式,并且该模式下需调用H5页面,通过js上报数据时,H5中调用Analytics SDK的方法,必须通过App的native代码进行转发,示例代码如下:

App中暴露给webView访问的方法

  1. //定义暴露给H5的js对象,其中用JavascriptInterface标注的方法均可被H5调用
  2. public class HiAnalyticsWebInterface{
  3.   HiAnalyticsInstance instance;
  4.   public HiAnalyticsWebInterface(Context context){
  5.       HiAnalyticsTools.enableLog();
  6.       instance = HiAnalytics.getInstance(context);
  7.       instance.setAnalyticsEnabled(true);
  8.   }
  9.   @JavascriptInterface
  10.   public void onEvent(String eventName,String jsonString) {
  11.       instance.onEvent(eventName,bundleFromJson(jsonString))
  12.   }
  13.   private Bundle bundleFromJson(String jsonString){
  14.    //
  15.   }
  16. }
  1. //将HiAnalyticsWebInterface的实例添加到webView的js接口上
  2. public class WebActivity extends AppCompatActivity{
  3. WebView webView;
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. webView=new WebView(this);
  7. //...
  8. //定义暴露给H5页面的js对象名为HiAnalyticsObj
  9. webView.addJavascriptInterface(new HiAnalyticsWebInterface(this),"HiAnalyticsObj");
  10. }
  11. }

H5页面中调用方法

  1. //以onEvent为例 其他方法访问类似
  2. function onEvent(eventName,eventParams){
  3.   if(!eventName){
  4.     return
  5.   }
  6.   if(window.HiAnalyticsObj){
  7.       window.HiAnalyticsObj.onEvent(eventName,JSON.stringify(eventParams))
  8.   }else{
  9.       console.log('no method found')
  10.   }
  11. }