我一直在尝试使用Google Analytics与Next。js和我通过观看这个YouTube视频配置了它-https://www.youtube.com/watch?v=lMSBNBDjaH8
基于视频,我在_document中添加了这两个脚本。js
<script async src={`https://www.googletagmanager.com/gtag/js?id=${process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS}`}/>
<script dangerouslySetInnerHTML={{
__html: `
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '${process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS}', {
page_path: window.location.pathname,
});
`,
}}
/>
在_app中添加以下代码。tsx -
useEffect(() => {
const handleRouteChange = (url: any) => {
pageview(url);
};
//When the component is mounted, subscribe to router changes
//and log those page views
router.events.on("routeChangeComplete", handleRouteChange);
// If the component is unmounted, unsubscribe
// from the event with the `off` method
return () => {
router.events.off("routeChangeComplete", handleRouteChange);
};
}, [router.events]);
并在lib/ga中添加了以下代码。ts -
export const pageview = (url: any) => {
if (typeof window !== 'undefined') {
(window as any)?.gtag('config', process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS, {
page_path: url,
});
}
};
export const event = ({ action, params }) => {
if (typeof window !== 'undefined') {
(window as any)?.gtag('event', action, params);
}
};
我面临一些问题-
1.如果页面没有文档标题,它将不会在“实时”选项卡中显示页面名称。有没有什么方法可以动态添加文档标题在每个网页或网页名称在谷歌分析使用的网址?
1.为了测试,我在其中一个页面中添加了文档标题,并且它在实时选项卡中工作。但在互动〉页面和屏幕选项卡下,我看不到页面名称,因为我们可以在下面的屏幕截图中看到。
如果有人知道如何解决上述问题,需要非常需要的帮助。非常感谢
1条答案
按热度按时间bfnvny8b1#
这里有很多事情要注意。
1.当您执行
gtag('event', action, params)
时,gtag将args推送到dataLayer,gtag正在监听它。js.Gtag.js当它看到一些东西被推送到DL时,它会抓取该数据并开始形成分析请求。分析请求包含的数据比您通常推送的数据多几倍。页面标题就是其中之一。它试图从页面上的url、referrer、useragent等等为你抓取它。这些字段中的大多数都可以通过设置参数覆盖。可以通过设置page_title参数来覆盖页面标题。以下是有关字段的更多文档: www.example.com1.如果您在实现中缺少适当的文档,就像您试图使用gtag一样,这样的覆盖是有意义的。js从后端。虽然这是可以做到的,但它过于复杂,因为你必须补偿不正确/不一致的客户端ID和会话ID。这是个问题你可能不想走这条路。