Оптимизация Google не запускается при работе на локальном хосте - PullRequest
1 голос
/ 14 июня 2019

Я пытаюсь получить экспериментальные данные Google Optimize в JavaScript, следуя этим инструкциям . Но я не получаю обратного вызова и не вижу, что что-то происходит в отладчике.

Связанные инструкции используют способ gtag для настройки GA, поэтому я настроил gtag в соответствии с https://developers.google.com/gtagjs/devguide/snippet, и настроил Оптимизацию в соответствии с https://support.google.com/optimize/answer/7513085?hl=en с помощью Метод 1: Установка Оптимизируйте с помощью глобальный тег сайта (gtag.js) .

Я хочу показать точный код, который я использую, но так как я делаю это в React с рендерингом Next.js на стороне сервера, оригинальный код имеет некоторые дополнительные возможности по сравнению с обычным HTML + JS. Источник выглядит так:

require("dotenv").config()
import React from "react"
import Document, { Head, Main, NextScript } from "next/document"

export default class extends Document {
    render() {
        return (
            <html>
                <Head>
                    <script async src={`https://www.googletagmanager.com/gtag/js?id=${process.env.GA_TRACKING_ID}`}/>
                    <script
                        dangerouslySetInnerHTML={{
                            __html: `
                                window.dataLayer = window.dataLayer || [];
                                function gtag(){ dataLayer.push(arguments); }
                                gtag('js', new Date());
                                gtag('config', '${process.env.GA_TRACKING_ID}', { optimize_id: '${process.env.OPTIMIZE_ID}'});
                                console.log('GA setup done: ${process.env.GA_TRACKING_ID} + ${process.env.OPTIMIZE_ID}');
                                gtag('event', 'optimize.callback', {
                                    name: '${process.env.EXPERIMENT_ID}',
                                    callback: o => console.log(o)
                                });
                            `
                        }}
                    />
                </Head>
                <body>
                    <Main />
                    <NextScript />
                </body>
            </html>
        )
    }
}

Этот код создает страницу результатов, которая запускает Google Analytics и отслеживает просмотр страницы точно так же, как и должен, а когда я выполняю «ЗАПУСК ДИАГНОСТИКИ» в консоли Google Optimize, он открывает страницу, проверяет JavaScript и сообщает:

Оптимизировать правильно установлен

При проверке установки Optimize на этой странице не было обнаружено серьезных проблем.

Я также установил плагин Google Chrome Tag Assistant и сообщает, что тег Google Optimize установлен правильно.

Я вижу следующие звонки в сетевом журнале:

https://www.googletagmanager.com/gtag/js?id=UA-xxxxxx
https://www.google-analytics.com/analytics.js
https://www.google-analytics.com/gtm/js?id=GTM-xxxxxx&t=gtag_UA_xxxx&cid=nnn.nnn

Я также проверил, что глобальная переменная google_optimize создана, и у нее есть метод .get(). Если я посмотрю (на панели сети отладчика) ответ http на запрос https://www.google-analytics.com/gtm/js?..., я действительно смогу увидеть данные экспериментов Google Optimize с правильным экспериментом, встроенным в код.

Так что все выглядит хорошо, за исключением того факта, что событие optimize.callback кажется полным запретом. Это ничего не делает вообще. И я не знаю, как еще получить доступ к данным эксперимента, которые я вижу в ответе http в отладчике.

1 Ответ

1 голос
/ 17 июня 2019

Итак, я наконец понял, что вызвало мою борьбу: я работал с локального сервера NodeJS, на обычном http://localhost:3000 URL.Оказывается, Google Optimize никогда не вызовет эксперимент по http://localhost/... URL-адресам.Код требует hostname часть URL, которая может быть проанализирована в соответствии со схемой host.domain.

Другими словами, должно быть точкой в ​​имени хоста, чтобы Optimize мог инициировать эксперимент.

Для локального тестирования это можно исправить, создав псевдоним имени хостанапример, localhost.domain для 127.0.0.1 и доступ к веб-странице с использованием этого псевдонима.

...