diff --git a/.env.example b/.env.example index a56f659..89c8dde 100644 --- a/.env.example +++ b/.env.example @@ -1 +1 @@ -NEXT_PUBLIC_GA_ID=G-XXXXXXXXXX +NEXT_PUBLIC_GA_MEASUREMENT_ID=G-XXXXXXXXXX diff --git a/src/components/analytics/GoogleAnalytics.tsx b/src/components/analytics/GoogleAnalytics.tsx index 4fed77b..09d9099 100644 --- a/src/components/analytics/GoogleAnalytics.tsx +++ b/src/components/analytics/GoogleAnalytics.tsx @@ -12,9 +12,9 @@ function GoogleAnalyticsContent() { useEffect(() => { if (!GA_MEASUREMENT_ID || typeof window === 'undefined') {return;} - + const url = pathname + (searchParams.toString() ? `?${searchParams.toString()}` : ''); - + if (window.gtag) { window.gtag('config', GA_MEASUREMENT_ID, { page_path: url, @@ -37,18 +37,20 @@ function GoogleAnalyticsContent() { window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); - - // 默认禁用存储,等待用户同意 + gtag('consent', 'default', { - 'analytics_storage': 'denied', + 'analytics_storage': 'granted', 'ad_storage': 'denied', + 'functionality_storage': 'granted', + 'personalization_storage': 'denied', + 'security_storage': 'granted', 'wait_for_update': 500 }); - + gtag('config', '${GA_MEASUREMENT_ID}', { send_page_view: false, anonymize_ip: true, - allow_google_signals: false, + allow_google_signals: true, allow_ad_personalization_signals: false, cookie_flags: 'SameSite=None;Secure' }); diff --git a/src/lib/analytics.ts b/src/lib/analytics.ts index 2709eaa..52b2b85 100644 --- a/src/lib/analytics.ts +++ b/src/lib/analytics.ts @@ -174,6 +174,14 @@ export const updateConsentDetailed = (preferences: CookiePreferences) => { personalization_storage: preferences.marketing ? 'granted' : 'denied', security_storage: 'granted', }); + + if (preferences.analytics) { + window.gtag('config', GA_MEASUREMENT_ID, { + page_path: window.location.pathname + window.location.search, + page_title: document.title, + page_location: window.location.href, + }); + } } };