#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>