Если вы создаете приложение, которое работает в автономном режиме, то понимание того, как пользователи взаимодействуют с вашим приложением, когда у них нет подключения, имеет решающее значение для оптимизации этого процесса.
Поставщикам аналитики, таким как Google Analytics, требуется сетевое подключение для отправки данных на их серверы, а это означает, что если подключение недоступно, эти запросы не будут выполнены, и эти взаимодействия будут отсутствовать в ваших аналитических отчетах. Это будет так, как будто их никогда не было.
Workbox Google Analytics решает эту проблему для пользователей Google Analytics, используя способность Service Worker обнаруживать неудачные запросы.
Google Analytics получает все данные через HTTP-запросы к протоколу измерений . Это означает, что сценарий Service Worker может добавить обработчик выборки для обнаружения неудачных запросов, отправленных в протокол измерений. Он может хранить эти запросы в IndexedDB, а затем повторять их позже, как только соединение будет восстановлено.
Workbox Google Analytics делает именно это. Он также добавляет обработчики выборки для кэширования сценариев Analytics.js и gtag.js , поэтому их можно запускать в автономном режиме. Наконец, при повторной попытке неудачных запросов Workbox Google Analytics также автоматически устанавливает (или обновляет) qt
в полезных данных запроса, чтобы временные метки в Google Analytics отражали время исходного взаимодействия с пользователем.
Включение Google Analytics для Workbox
Чтобы включить Workbox Google Analytics, вызовите метод initialize()
:
import * as googleAnalytics from 'workbox-google-analytics';
googleAnalytics.initialize();
Это единственный код, который необходим для постановки в очередь и повторения неудачных запросов к Google Analytics, и это самый простой способ заставить Google Analytics работать в автономном режиме.
Однако если использовать только приведенный выше код, повторные запросы неотличимы от запросов, которые успешны с первой попытки. Это означает, что вы получите все данные о взаимодействиях от пользователей, находящихся в автономном режиме, но не сможете определить, какие взаимодействия произошли, пока пользователь был в автономном режиме.
Чтобы решить эту проблему, вы можете использовать один из описанных ниже параметров конфигурации, чтобы изменить или аннотировать данные, отправляемые в повторном запросе.
Изменение отправляемых данных
Если вы хотите иметь возможность отличать повторные запросы от неповторных запросов, вы можете указать параметры parameterOverrides
или hitFilter
.
Эти параметры позволяют изменять параметры протокола измерений , которые отправляются в повторном запросе. Опцию parameterOverrides
следует использовать, если вы хотите установить одно и то же значение для определенного параметра для каждого повторного запроса. Опцию hitFilter
следует использовать в тех случаях, когда значение определенного параметра необходимо вычислить во время выполнения или получить из значения другого параметра.
В примерах ниже показано, как использовать оба варианта.
Примеры
Использование специального параметра для отслеживания онлайн- и офлайн-взаимодействий
В Google Analytics нет встроенного измерения онлайн- и офлайн-взаимодействий. Однако именно для этой цели вы можете создать собственное измерение, используя функцию, называемую специальными измерениями .
Чтобы отслеживать запросы, которые были воспроизведены сервисным работником с использованием специального измерения с помощью Workbox Google Analytics, выполните следующие действия:
- Создайте новый специальный параметр в Google Analytics. Дайте ему имя, например «Состояние сети», и установите его область действия на «обращение» (поскольку любое взаимодействие может происходить в автономном режиме).
Запишите индекс, назначенный для вновь созданного измерения, и передайте его в качестве имени параметра в параметр
parameterOverrides
в коде Workbox Google Analytics.Например, если это ваш первый специальный параметр, его индекс будет
1
, а имя параметра —cd1
(если бы индекс был8
, это было быcd8
):import * as googleAnalytics from 'workbox-google-analytics'; googleAnalytics.initialize({ parameterOverrides: { cd1: 'offline', }, });
(Необязательно) Поскольку значения
parameterOverrides
применяются только к повторным («автономным») запросам, вы также можете установить значение по умолчанию «онлайн» для всех остальных запросов. Хотя в этом нет строгой необходимости, это облегчит чтение ваших отчетов.
Например, если вы использовали фрагмент отслеживания Analytics.js по умолчанию для установки Google Analytics, вы можете добавить строкуga('set', 'dimension1', 'online')
, чтобы использовать значение по умолчанию'online'
для параметра "Сеть". Пользовательский параметр «Статус» для всех запросов, не воспроизведенных сервисным работником.<script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-XXXXX-Y', 'auto'); // Set default value of custom dimension 1 to 'online' ga('set', 'dimension1', 'online'); ga('send', 'pageview'); </script>
Использование пользовательской метрики для отслеживания времени, проведенного запросами в очереди.
Если вам было интересно узнать, сколько времени прошло между моментом автономного взаимодействия и моментом восстановления подключения и успешной повторной попытки запроса, вы можете отслеживать это с помощью пользовательской метрики и параметра конфигурации hitFilter
:
- Создайте новую специальную метрику в Google Analytics. Дайте ему имя, например «Время автономной очереди», установите его область действия «hit» и установите тип форматирования «Время» (в секундах).
Используйте опцию
hitFilter
, чтобы получить значение параметраqt
и разделить его на 1000 (чтобы преобразовать его в секунды). Затем установите это значение в качестве параметра с индексом вновь созданной метрики. Если это ваша первая специальная метрика, имя параметра будет'cm1'
:import * as googleAnalytics from 'workbox-google-analytics'; googleAnalytics.initialize({ hitFilter: (params) => { const queueTimeInSeconds = Math.round(params.get('qt') / 1000); params.set('cm1', queueTimeInSeconds); }, });
Тестирование Workbox Google Analytics
Поскольку Workbox Google Analytics использует фоновую синхронизацию для воспроизведения событий, тестирование может быть неинтуитивным. Дополнительную информацию можно найти в разделе «Тестирование фоновой синхронизации Workbox ».
Типы
GoogleAnalyticsInitializeOptions
Характеристики
- имя кэша
строка необязательна
- параметрOverrides
объект необязательный
- хитфильтр
аннулировать необязательно
Функция
hitFilter
выглядит так:(params: URLSearchParams) => {...}
- параметры
URLSearchParams
Методы
initialize()
workbox-google-analytics.initialize(
options?: GoogleAnalyticsInitializeOptions,
)
Параметры
- параметры
GoogleAnalyticsInitializeOptions необязательно.