Firebase LogEvents как двойники в веб-просмотре - PullRequest
0 голосов
/ 29 января 2019

Ведение журнала удваивается для аналитики Firebase в веб-просмотре, как рекомендовано в Firebase Код ссылки / примера на github приведет к тому, что значения окажутся в разных полях значений в зависимости от значения.Причина в том, что javascript имеет тип Number и десятичные дроби не отображаются, когда значение является целым числом (т. Е. 5,00 представляется как 5, а 5.01 - как 5.01).Когда параметры регистрируются с помощью logEvent () в веб-представлении, AnalyticsWebInterface.java проверяет, является ли значение параметра String, Integer или Double, и сохраняет значение в соответствующем поле (stringValue, intValue или floatValue).Следовательно, если вы регистрируете цену продукта в качестве параметра, он будет иметь значение intValue, если цена равна 5,00, и floatValue, если цена равна 5,01.Это действительно усложнит анализ этих данных.

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 голосов
/ 29 января 2019

Один из возможных способов ее решения - попытаться привести значение (если оно является строкой или целым числом) и записать его в несколько столбцов.Пример:

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