Firebase Analytics VIEW_ITEM_LIST ITEMS не отображается - PullRequest
3 голосов
/ 16 апреля 2020

Я пытаюсь сообщить о VIEW_ITEM_LIST событии с некоторыми ПУНКТАМИ внутри. Все отображается правильно в представлении отладки, за исключением элементов. Я не использую никаких пользовательских событий. Кажется, одна и та же проблема возникает как в Android, так и в iOS.

Вот мой код.

 override fun trackListViewEvent() {
    val eventBundle = Bundle().apply {
        val itemBundle1 = Bundle().apply {
            putString(Param.ITEM_NAME, "name1")
            putString(Param.ITEM_CATEGORY, "Category")
            putString(Param.PRICE, "49.95")
            putString(Param.CURRENCY, "EUR")
        }

        val itemBundle2 = Bundle().apply {
            putString(Param.ITEM_NAME, "name2")
            putString(Param.ITEM_CATEGORY, "Category")
            putString(Param.PRICE, "89.95")
            putString(Param.CURRENCY, "EUR")
        }
            putString(Param.ITEM_LIST_ID, "1234567890")
            putString(Param.ITEM_LIST_NAME, "WhateverListName")
            putString(Param.PRICE, "125.60")
            putString(Param.CURRENCY, "EUR")

            putParcelableArray(Param.ITEMS, arrayOf(itemBundle1, itemBundle2))
        }
    tracking.logEvent(Event.VIEW_ITEM_LIST, eventBundle)
}

В Logcat я получаю: W/FA-SVC: Param value can't be null: items

Другая проблема заключается в том, что кажется, что ITEMS принимает только некоторые параметры. При добавлении пользовательских параметров я получаю E/FA: Item cannot contain custom parameters, но при добавлении НЕ пользовательских параметров, таких как FLIGHT_NUMBER, я получаю ту же ошибку. И я не смог найти объяснения в документации, по которым принимаются параметры.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2020

Новый ответ:

Проблема в том, что вы создаете itemBundle1 и itemBundle2 внутри eventBundle функции *1005*, и к тому времени, когда вы вызываете putParcelableArray(Param.ITEMS, arrayOf(itemBundle1, itemBundle2)), они все еще null. Вы должны переместить эти 2 пакета из apply:

override fun trackListViewEvent() {
    val itemBundle1 = Bundle().apply {
        putString(Param.ITEM_NAME, "name1")
        putString(Param.ITEM_CATEGORY, "Category")
        putString(Param.PRICE, "49.95")
        putString(Param.CURRENCY, "EUR")
    }

    val itemBundle2 = Bundle().apply {
        putString(Param.ITEM_NAME, "name2")
        putString(Param.ITEM_CATEGORY, "Category")
        putString(Param.PRICE, "89.95")
        putString(Param.CURRENCY, "EUR")
    }

    val eventBundle = Bundle().apply {
        putString(Param.ITEM_LIST_ID, "1234567890")
        putString(Param.ITEM_LIST_NAME, "WhateverListName")
        putString(Param.PRICE, "125.60")
        putString(Param.CURRENCY, "EUR")
        putParcelableArray(Param.ITEMS, arrayOf(itemBundle1, itemBundle2))
    }
    tracking.logEvent(Event.VIEW_ITEM_LIST, eventBundle)
}

Старый ответ:

В вашем текущем коде предполагаемый тип arrayOf(itemBundle1, itemBundle2) равен Array<Bundle> .

Вы должны принудительно Kotlin использовать Array<Parcelable>:

putParcelableArray(Param.ITEMS, arrayOf<Parcelable>(itemBundle1, itemBundle2))
0 голосов
/ 20 апреля 2020

, которое вы используете - это карта списка массивов строк, которая не поддерживается. Взгляните на это обсуждение в группе Google Firebase.

Вы должны регистрировать только цифры c или строковые типы для параметров событий. Так что в вашем случае вы можете хранить свои данные в виде строки для преобразования JSON строки.

Примечание : поддерживаются строковые, длинные и двойные параметры. Строковые значения параметров могут быть длиной до 100 символов. Для получения дополнительной информации см. этот документ .

...