Firebase LogEvent在WebView中翻倍

时间:2019-01-29 14:07:51

标签: android firebase webview firebase-analytics

按照Firebase reference/example code on github中的建议,在Web视图中记录两次以进行Firebase分析,这将导致值最终取决于值而位于不同的值字段中。原因是javascript具有数字类型,并且当值是整数时不显示小数(即5.00表示为5,而5.01表示为5.01)。在网络视图中使用logEvent()记录参数时,AnalyticsWebInterface.java将测试参数值是String,Integer还是Double,并将值存储在相应的字段(stringValue,intValue或floatValue)中。因此,如果您将产品的价格记录为参数,如果价格为5.00,则它将最终为intValue;如果价格为5.01,则将最终为floatValue。这确实会使该数据的分析复杂化。

Object value = jsonObject.get(key);

   if (value instanceof String) {
       result.putString(key, (String) value);
   } else if (value instanceof Integer) {
       result.putInt(key, (Integer) value)      
   } else if (value instanceof Double) {
       result.putDouble(key, (Double) value);
   } else {
       Log.w(TAG, "Value for key " + key + " not one of [String, Integer, Double]");
   }

1 个答案:

答案 0 :(得分:1)

解决该问题的一种可能方法是尝试强制转换值(如果它是String或Integer)并将其记录到多列中。示例:

if (value instanceof String) {
            try{
                result.putString(key, (String) value);
                result.putDouble(key, Double.parseDouble((String) value));
                result.putInt(key, Integer.parseInt((String) value));
            } catch(Exception e){}
        }
        if (value instanceof Integer) {
            try{
                result.putInt(key, (Integer) value);
                result.putDouble(key, Double.valueOf((Integer) value));
            }catch(Exception e){}
        }
        if (value instanceof Double){
            result.putDouble(key, (Double) value);
        }