Диспетчер тегов

Менеджер тегов публичного класса

Это мобильная реализация Диспетчера тегов Google (GTM). Пример использования:

 Container container = TagManager.getInstance(context).openContainer(myContainerId);
 String value = container.getString("myKey");

 DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
 dataLayer.push(DataLayer.mapOf("event", "openScreen", "screenName", "Main Page"));
Контейнер — это набор макросов, тегов и правил. Он создается в приложении GTM , и ему присваивается идентификатор контейнера. Этот идентификатор контейнера используется в этом API.

Класс Container предоставляет методы для получения значений по ключу. Подпрограммы getBoolean(String) , getDouble(String) , getLong(String) , getString(String) возвращают текущее значение ключа макроса сбора значений, в зависимости от правил, связанных с контейнером.

Например, если в вашем контейнере есть макрос сбора значений со speed ключа, значение которой равно 32, а правило включения — « Language — «en»; и еще один макрос сбора значений со speed ключа, значение которого равно 45, а правило включения — « Language не «en», затем выполняется следующий вызов:

 container.getLong("speed")
вернет либо 32, если текущий язык устройства — английский, либо 45 иначе.

Уровень данных — это карта, содержащая общую информацию о приложении. Класс DataLayer предоставляет методы для отправки и получения данных с уровня данных. Нажатие ключа event на уровень данных приведет к срабатыванию тегов, соответствующих этому событию.

С приложением поставляется начальная версия контейнера. Его следует разместить как актив с именем tagmanager/ ContainerId, гдеContainerId — это тот же идентификатор контейнера, который вы будете использовать в этом API. Когда вы вызываете openContainer(String, Container.Callback) , контейнер будет возвращен с этими связанными правилами/макросами. Вы создадите контейнер в пользовательском интерфейсе и используете кнопку «Загрузить», чтобы загрузить его.

Вы можете изменить контейнер в пользовательском интерфейсе и опубликовать новую версию. В этом случае, когда мобильное приложение в следующий раз обновит контейнер из сети (в настоящее время каждые 12 часов), оно получит эту новую версию. Когда вы вызываете одну из процедур get..., значение будет вычислено с использованием самых последних правил.

Загруженный контейнер сохраняется локально; когда вы вызываете openContainer(String, Container.Callback) , он сначала загружает контейнер по умолчанию, а затем асинхронно загружает любой сохраненный контейнер. Если ничего не найдено или оно старше 12 часов, он попытается получить более новую версию из сети. Вы можете узнать статус этих асинхронных загрузок, передав Container.Callback в openContainer(String, Container.Callback) .

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

Когда вы закончите работу с контейнером, вызовите close() .

Сводка вложенных классов

интерфейс TagManager.Logger Простой интерфейс для регистрации ошибок/предупреждений/информации/отладки/подробного журнала.
перечисление TagManager.RefreshMode Режим обновления контейнера.

Краткое описание общедоступного метода

Контейнер
getContainer ( строка идентификатор контейнера )
Контекст
Уровень данных
статический менеджер тегов
getInstance ( контекст контекста )
Регистратор
TagManager.RefreshMode
Контейнер
openContainer ( StringContainerId , обратный вызов Container.Callback )
пустота
setLogger ( регистратор )
пустота

Публичные методы

общедоступный контейнер getContainer ( StringContainerId )

Возвращает открытый контейнер, связанный с containerId ; возвращает null если контейнер еще не открыт.

общедоступный контекст getContext ()

Возвращает сохраненный контекст, связанный с этим объектом.

общедоступный уровень данных getDataLayer ()

Возвращает объект уровня данных, используемый диспетчером тегов.

общедоступный статический TagManager getInstance ( контекст контекста )

Получите одноэлементный экземпляр класса TagManager , создав его при необходимости.

общедоступный регистратор getLogger ()

Возвращает регистратор, используемый Диспетчером тегов.

общедоступный TagManager.RefreshMode getRefreshMode ()

Возвращает режим обновления, используемый для всех контейнеров.

общедоступный контейнер openContainer ( StringContainerId , обратный вызов Container.Callback )

Возвращает контейнер. Обратный вызов будет вызываться, когда с контейнером происходят различные события. Как минимум, openContainer попытается загрузить сохраненную версию контейнера. Если сохраненной версии нет или если сохраненная версия устарела, будет предпринята попытка загрузки из сети.

Обычно возвращаемый контейнер будет пустым, но загрузка будет происходить в отдельном потоке, поэтому возвращаемый контейнер может быть обновлен до его возврата, после его возврата или никогда не обновляться (если, например, нет сетевое соединение в течение срока службы контейнера).

Если вы вызовете openContainer второй раз для данного containerId , будет выдано исключение.

Параметры
идентификатор контейнера идентификатор контейнера, который нужно открыть
перезвонить объект, различные методы которого будут вызываться во время процесса загрузки. Обратите внимание, что методы могут вызываться из разных потоков. Кроме того, они могут быть вызваны до возврата openContainer .

public void setLogger ( регистратор )

Заменяет существующий регистратор, используемый Диспетчером тегов.

public void setRefreshMode ( режим TagManager.RefreshMode )

Устанавливает режим обновления, используемый для всех контейнеров.