Как управлять отслеживанием Google Analytics в Nuxt на основе файлов cookie согласия?

#cookies #google-analytics #nuxt.js

#файлы cookie #google-analytics #nuxt.js

Вопрос:

Я реализовал отслеживание Google Analytics с помощью @nuxtjs/ google-analytics

Теперь я хотел бы контролировать, отслеживается ли пользователь на основе согласия, данного пользователем. Я нашел nuxt-cookie-control, который, по-видимому, позволяет собирать согласие.

Судя по документации для @nuxtjs / google-analytics // vue-analytics, похоже, просто нужно позвонить this.$ga.disable() , если пользователь не дает согласия.

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

В документации также указывается, что «отказ должен произойти до инициализации трекеров или очередей».

Я немного в недоумении, как / где в приложении мне нужно будет позвонить this.$ga.disable() . Кто-нибудь может дать мне указания?

Комментарии:

1. Вы нашли какие-либо указания?

2. Нет. Переключился на перенаправление всего через GTM с помощью github.com/nuxt-community/gtm-module .

Ответ №1:

вот мое решение:

прежде всего, я отключил Google-analytics по умолчанию, чтобы отслеживание не выполнялось до тех пор, пока пользователь не даст согласие. я сделал это, установив параметр disabled=true в nuxt.config.js . например:

     googleAnalytics: {
        id: 'UA-xxxxxxxx-x',
        disabled: true,
    },
  

затем я настроил accepted() обратный вызов в конфигурации cookies nuxt.config.js , чтобы включить Google Analytics, если согласие получено:

         optional: [
            {
                name: 'Google Analytics',
                identifier: 'ga',
                description: '...',
                initialState: false,
                cookies: ['_ga', '_gat', '_gid'],
                accepted: () => {
                    window.$nuxt.$ga.enable() // Activate module
                    window.$nuxt.$ga.page(window.$nuxt.$route.path) // Track current route
                },
                declined: () => {
                    window.$nuxt.$cookies.remove('ga') // Remove any existing Google Analytics cookies
                },
            },
        ],
  

Наконец, нам все еще нужно включать Google Analytics при каждом следующем обновлении страницы. Я сделал это в mount функции макета по умолчанию /layouts/default.vue :

 import { onAnalyticsReady } from 'vue-analytics'

export default {
    mounted() {
        onAnalyticsReady().then(() => {
            const hasConsent = this.$cookies.isEnabled('ga')
            if (hasConsent) {
                this.$ga.enable() // Activate module
                this.$ga.page(this.$route.path) // Track current route
            }
        })
    },
}
</script>