Отслеживание людей в Mixpanel не работает

Я пытаюсь заставить Mixpanel отслеживать людей, но безуспешно. Я вижу в журналах, что create alias event отправляется, но в консоли Mixpanel профиль пользователя не создается.

Также это код из демо-приложения, в котором мне удалось воспроизвести проблему, я не могу поделиться кодом из оригинального приложения по соображениям конфиденциальности.

class MainActivity : AppCompatActivity() {

lateinit var mixpanel: MixpanelAPI

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    mixpanel = MixpanelAPI.getInstance(this, "mytoken")
    mixpanel.people.set("open date", Date())
    mixpanel.identify(mixpanel.distinctId)
    setContentView(R.layout.activity_main)
    initCustomer()
    postToMixpanel("TEST EVENT")
    MPLog.setLevel(MPLog.VERBOSE)
}

fun initCustomer() {
    mixpanel.alias("1", mixpanel.distinctId)
    val map = listOfNotNull(
            "\$name" to "Nikola",
            "Gender" to "Male",
            "Attraction" to "Girls",
            "Account type" to "WTF",
            "\$email" to "[email protected]"
    ).toMap()
    mixpanel.people.setMap(map)
    mixpanel.flush()
}

fun postToMixpanel(eventId: String, additionalProps: Map<String, Any>? = null) {
    val props = JSONObject()
    additionalProps?.let {
        for ((key, value) in it) {
            props.put(key, value)
        }
    }
    mixpanel.track(eventId, props)
}
}

Это журналы Mixpanel из события создания псевдонима, я не вижу там никаких особых свойств, таких как $name и $email.

 [{
"event": "$create_alias",
"properties": {
    "mp_lib": "android",
    "$lib_version": "5.4.1",
    "$os": "Android",
    "$os_version": "8.1.0",
    "$manufacturer": "UMIDIGI",
    "$brand": "UMIDIGI",
    "$model": "A1_PRO",
    "$google_play_services": "available",
    "$screen_dpi": 320,
    "$screen_height": 1344,
    "$screen_width": 720,
    "$app_version": "1.007-staging",
    "$app_version_string": "1.007-staging",
    "$app_release": 15,
    "$app_build_number": 15,
    "$has_nfc": false,
    "$has_telephone": true,
    "$carrier": "m:tel",
    "$wifi": true,
    "$bluetooth_enabled": false,
    "$bluetooth_version": "ble",
    "token": "",
    "Has Credit": "False",
    "Amount of Credits": "0",
    "time": 1530099794,
    "distinct_id": "b8769eeb-6a3b-4692-8973-261f9933537e",
    "alias": "260",
    "original": "b8769eeb-6a3b-4692-8973-261f9933537e"
},
"$mp_metadata": {
    "$mp_event_id": "43f9c3402ffa6f4c",
    "$mp_session_id": "c35a49a17d3b9de6",
    "$mp_session_seq_id": 0,
    "$mp_session_start_sec": 1530099793
}
}]

person Nikola Velimirovic    schedule 27.06.2018    source источник


Ответы (1)


Попробуйте вызвать метод identify() для объекта people. Он должен создать пользователя в Mixpanel.

mixpanel.people.identify(mixpanel.getDistinctId());

после

mixpanel.alias("1", mixpanel.distinctId)

в вашем забавном initCustomer() методе.

Пример:

fun initCustomer() {
    mixpanel.alias("1", mixpanel.distinctId)
    mixpanel.people.identify(mixpanel.getDistinctId());
    val map = listOfNotNull(
            "\$name" to "Nikola",
            "Gender" to "Male",
            "Attraction" to "Girls",
            "Account type" to "WTF",
            "\$email" to "[email protected]"
    ).toMap()
    mixpanel.people.setMap(map)
    mixpanel.flush()
}

Подробнее в документации по Android в разделе: Управление идентификацией пользователя

https://mixpanel.com/help/reference/android

person Cyprian    schedule 28.06.2018