Диспетчер тегов: как загрузить двоичный контейнер по умолчанию?

Я пытаюсь настроить Диспетчер тегов Google в соответствии с руководством Getting Started.

При добавлении контейнера по умолчанию, документы дают понять, что при использовании бинарного файла контейнера по умолчанию (в отличие от JSON).

Рекомендуется использовать двоичный файл, если ваш контейнер не содержат правил или тегов, вы можете использовать простой файл JSON вместо этого.

Я загрузил и добавил двоичный контейнер по умолчанию в res/raw. Но инициализация диспетчера тегов с loadContainerPreferNonDefault(), похоже, терпит неудачу.

PendingResult<ContainerHolder> pending =
    tagManager.loadContainerPreferNonDefault(CONTAINER_ID,
    R.raw.gtm_default_container);

Я получаю эту ошибку в журналах:

 W/GoogleTagManager﹕ Failed to extract the container from the resource file. 
 Resource is a UTF-8 encoded string but doesn't contain a JSON container

TagManager javadocs (пример в самом верху) подсказывает, что вы можете передать логический параметр, чтобы указать, является ли ресурс JSON или двоичным:

PendingResult pending = tagManager.loadContainerPreferNonDefault(
         myContainerId,    // container ID of the form "GTM-XXXX"
         R.raw.GTM-XXXX,   // the resource ID of the default container
         true);            // the default container is in JSON format (as opposed to binary)

Thing is, нет такого параметра в loadContainerPreferNonDefault()! Вы можете опционально передать обработчик, но не логический. Опасаясь, javadoc TagManager конфликтует здесь.

Так или иначе, возможно ли сделать то, что рекомендует руководство по началу работы, и использовать двоичный контейнер по умолчанию?

Используя 'com.google.android.gms:play-services-analytics:7.0.0'

Ответ 1

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

Да, можно использовать двоичный контейнер по умолчанию. Документация противоречит предыдущей версии Диспетчера тегов. Я считаю, что это противоречит v3. (Текущая версия для написания этого ответа - v4).

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

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

С другой стороны, TagManager.loadContainerPreferNonDefault() загрузит его бинарный контейнер, а затем проверит сеть для версии, которая в настоящее время опубликована. Если он найдет версию, которая будет опубликована, она будет использовать эту версию независимо от того, какой у вас двоичный контейнер. Пример:

Вы добавляете бинарный контейнер версии15. Однако вы опубликовали версию14. Этот метод по умолчанию будет равен 14, поскольку эта версия будет опубликована.

Если вы хотите протестировать версию 15, вам нужно будет использовать TagManager.loadContainerDefaultOnly().