Расширение Chrome, уникальный идентификатор для каждой установки, для аналитики

Я хочу отслеживать события в расширении Chrome, которое я создаю. Поэтому я хочу иметь уникальный идентификатор для каждого пользователя.

Мне не нужна никакая информация о пользователе, я просто хочу, чтобы все события были сгруппированы вместе.

Есть ли хороший способ решить эту проблему, не пингуя сервер. Или я просто буду использовать очень длинную случайную строку, чтобы вероятность получения той же строки другим пользователем была низкой.

Я использую пакет analytics.js от segment.io для интеграции с mixpanel.


person Eoin Murray    schedule 21.02.2013    source источник
comment
как вам удалось получить эту работу, я загружаю segment.io в свой скрипт контента, но, похоже, он отправляет только страницу, а не треки   -  person user299709    schedule 30.08.2014


Ответы (2)


Не уверен, почему Mixpanel помечен в этом вопросе, но поскольку это так, я упомяну, что Mixpanel jslib решает эту проблему.

Если вы отправляете события без идентификации пользователя, jslib автоматически генерирует UUID на основе времени, Math.random() и характеристик браузера. Эти данные хранятся в файле cookie.

person raylu    schedule 21.02.2013
comment
Я собирался использовать segmentio для отправки событий в Mixpanel, я должен был указать. - person Eoin Murray; 22.02.2013
comment
Какой я нуб, чтобы не думать об использовании текущего времени для создания уникального идентификатора. Я не буду использовать jslib mixpanels, но тем не менее вы заслуживаете принятого ответа. - person Eoin Murray; 22.02.2013
comment
да, правда, но использовать его в качестве семени для 32-значной случайной строки будет нормально для меня - person Eoin Murray; 22.02.2013
comment
Уникальность использования Math.random() не гарантируется. Вероятно, он достаточно хорошо подходит для анонимной статистики, но если вы собираетесь отслеживать перезапуски браузера, вам следует сгенерировать уникальный идентификатор, а затем сохранить его с помощью chrome.storage. При запуске вы можете проверить, существует ли он в хранилище, и использовать его. Здесь есть отличная реализация RFC4122 . - person michaelday; 13.08.2014

Вы можете сгенерировать идентификатор при установке/обновлении расширения. Затем вы можете использовать это значение в качестве своего уникального идентификатора. Что-то вроде этого должно работать (поместите его на фоновую страницу):

chrome.runtime.onInstalled.addListener(function(info){
    //    
    // info.reason should contain either "install" or "update"

    var sessionId = localStorage.getItem("session-id");

    if(!sessionId){
      localStorage.setItem("session-id", "random-session-id");
    }
});

Дополнительная информация о onInstalled находится здесь: https://developer.chrome.com/extensions/runtime#event-onInstalled. NB: он срабатывает при установке, обновлении расширения и обновлении Chrome.

person Philip Nuzhnyy    schedule 23.08.2014
comment
Как я могу протестировать эту функцию во время разработки? - person Volatil3; 13.05.2016