开发谷歌插件之GA埋点

server/2024/9/24 3:16:46/

目录

一、背景

二、踩坑

三、谷歌插件开发的GA埋点的实现方式


一、背景

开发了一个谷歌插件,领导需要对用户的一些行为进行分析,于是让我在代码里面加上GA埋点。由于我们的PC端的项目一直都有进行GA埋点,当时就想着,这不就是把相关的代码搬过来就可以了吗。简单。于是说干就干,花了几分钟的pc端相关的GA埋点的代码搬了过来,代码如下:

  • 引入react-ga4的插件库
import ReactGA from 'react-ga4';const initializeGA = () => {ReactGA.initialize(process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS as string);
};const trackGAEvent = (category: string,action: string,label: string,value?: number
) => {// Send GA4 EventReactGA.event({category: category,action: action,label: label,...(typeof value === 'number' && value >= 0 && { value: value })});
};
  • 先在全局代码中初始化GA埋点的代码,然后在需要打点的事件上调用trackGAEvent事件

在service_worker文件里面监听onInstalled事件,然后进行全局初始化:

import {initializeGA} from '@/utils/ga';chrome.runtime.onInstalled.addListener(function (details) {if (details.reason === "install") {initializeGA()}
});

然后在需要打点的事件上调用 trackGAEvent事件

import { initializeGA,trackGAEvent } from '@/utils/ga';trackGAEvent('account.signin', 'signinBtn.click.email', '');
二、踩坑

代码写完后很自信的重新打了一个插件包给领导用,然后第二天反馈的是,在谷歌分析后台没有看到对应的打点事件,一开始怀疑是不是在service_worker里面初始化GA之后没有生效、是不是eventName太长等等,于是在每次埋点之前都进行初始化以及缩短eventName等等,发现都不行。于是我就重新看了一下谷歌插件开发的文档,才发现谷歌插件开的GA埋点是有属于的实现方式的,相关文档:https://developer.chrome.com/docs/extensions/how-to/integrate/google-analytics-4?hl=zh-cn

三、谷歌插件开发的GA埋点的实现方式

1、获取api_secret以及measurement_id

2、生成 client_id

client_id是特定设备/用户唯一的标识符,通过调用self.crypto.randomUUID()生成一个client_id 存储在 chrome.storage.local中,以确保其在安装扩展程序期间保持不变。

注意:使用chrome.storage.local,需要在manifest中配置storage 权限:

"permissions": ["storage"]
const getOrCreateClientId = async()=> {let { clientId } = await chrome.storage.local.get("clientId");if (!clientId) {// Generate a unique client ID, the actual value is not relevantclientId = self.crypto.randomUUID();await chrome.storage.local.set({ clientId });}return clientId;}

3、准备好api_secret、measurement_id以及client_id之后就可以进行分析事件的发送了

const GA_ENDPOINT = 'https://www.google-analytics.com/mp/collect';
const MEASUREMENT_ID = `G-...`;
const API_SECRET = `...`;const fireEvent = ()=>{fetch(`${GA_ENDPOINT}?measurement_id=${MEASUREMENT_ID}&api_secret=${API_SECRET}`,{method: 'POST',body: JSON.stringify({client_id: await getOrCreateClientId(),events: [{name: 'button_clicked',params: {id: 'my-button',},},],}),});
}

http://www.ppmy.cn/server/121136.html

相关文章

操作系统 | 学习笔记 | | 王道 | 5.1 I/O管理概述

5.1 I/O管理概述 5.1.1 I/O设备 注:块设备可以寻址,但是字符设备是不可寻址的 I/O设备是将数据输入到计算机中,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件; 设备的分类 按使用特性分类&#xff…

Docker实操:安装MySQL5.7详解(保姆级教程)

介绍 Docker 中文网址: https://www.dockerdocs.cn Docker Hub官方网址:https://hub.docker.com Docker Hub中MySQL介绍:https://hub.docker.com/_/mysql ​ 切换到“Tags”页面,复制指定的MySQL版本拉取命令,例如 &#xff1a…

Java项目实战II基于Java+Spring Boot+MySQL的作业管理系统设计与实现(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者 一、前言 在教育信息化的大潮中,作业管理作为教学过程中的重要环节,其效率与效果直接影…

探索未来科技的无限可能:IT领域的深度剖析与趋势展望

探索未来科技的无限可能:IT领域的深度剖析与趋势展望 在当今这个日新月异的时代,信息技术(IT)已不仅仅是支撑社会发展的幕后英雄,它更是推动全球经济转型、文化交融与生活方式变革的强大引擎。从云计算的普及、大数据…

公司用什么软件监控电脑?六个企业必备的电脑监控软件分享,赶紧Get吧!

公司在进行电脑监控时,通常会选择一系列功能强大、易于管理的软件来确保信息安全和提升工作效率。 以下是六个企业必备的电脑监控软件分享,它们各具特色,能够满足不同企业的需求: 1. 安企神系统 核心功能: 实时监控…

找不到libcef.dll怎么办,libcef.dll丢失怎么重新安装

在计算机使用过程中,我们常常会遇到各种问题。其中,libcef.dll丢失是一个常见的错误提示。libcef.dll是Chromium Embedded Framework的动态链接库,它是许多应用程序和游戏所必需的组件。当libcef.dll丢失或损坏时,可能会导致程序无…

【webpack4系列】webpack构建速度和体积优化策略(五)

文章目录 速度分析:使用 speed-measure-webpack-plugin体积分析:使用webpack-bundle-analyzer使用高版本的 webpack 和 Node.js多进程/多实例构建资源并行解析可选方案使用 HappyPack 解析资源使用 thread-loader 解析资源 多进程并行压缩代码方法一&…

伊犁云计算创建ftp

1 yum 安装不再说, 2 有局域网搭建不再说 参考之前的文档 我们直接干ftp 先装ftp 服务 进入 etc/vsftpd/vsftpd.conf 修改如上图 看一下ftp 21 端口是不是在监听 开始测试