Skip to content
 

Nextjs 项目接入神策埋点

更新: 9/4/2025字数: 0 字 时长: 0 分钟

1, 登录 获取数据接收地址

先登录神策后台,点击 数据管理- 数据接入,复制数据接收地址; image

image

2, 封装组讲

封装一个客户端组件SensorsAnalytics.tsx,将神策埋点代码封装在组件中,并把 上一步获取的 serverUrl 写入。

tsx
"use client";
import Script from "next/script";
import { chatStore } from "@/stores/chatState";

interface SensorsConfig {
  serverUrl: string;
  project: string;
  bid?: string; // 业务标识(可选)
}

export const SensorsProvider = () => {
  const { appId } = chatStore();

  // 只有dev环境和prd环境才加载 本地开发环境不监听
  const isProduction = process.env.NEXT_PUBLIC_ENV === "production" || process.env.NEXT_PUBLIC_ENV === "dev";
  if (!isProduction) return null;

  const config: SensorsConfig = {
    serverUrl: "", // 替换为获取到的数据接收地址
    project: "", // 替换为项目标识
    bid: appId // 业务标识
  };

  return (
    <Script id="sensors-analytics" strategy="lazyOnload">
      {`
          (function(serverUrl, project, bid) {
            // 1. 加载SDK
            var script = document.createElement('script');
            script.src = '/sensorsdata.js';
            script.crossorigin = true;
            
            // 2. SDK加载完成后初始化
            script.onload = function() {
              console.warn('神策埋点已加载');
              var sensors = window['sensorsDataAnalytic201505'];
              sensors.init({
                server_url: serverUrl + '?project=' + project,
                heatmap: {
                  clickmap: "default",
                  scroll_notice_map: "default"
                },
                is_track_single_page: true,
                use_client_time: true
              });

              // 3. 设置用户属性
              sensors.registerPage({
                platform_type: "web",
                project_name: project,
                app_id: bid,
              });

              // 4. 开启自动采集
              sensors.quick('autoTrack');
            };

            document.head.appendChild(script);
          })(
            "${config.serverUrl}",
            "${config.project}",
            "${config.bid}"
          );
        `}
    </Script>
  );
};

3, 引入组件

layout.tsx 中引入组件SensorsProvider

tsx
import { SensorsProvider } from "@/app/components/SensorsAnalytics";

export default function RootLayout({ children }: { children: ReactNode }) {
  return (
    <html lang="en">
      <body>
        {/* 神策埋点组件 */}
        <SensorsProvider />
        {children}
      </body>
    </html>
  );
}

4, 查看数据

登录神策后台,查看数据。

image

分析数据:

image

参考博客vue 项目接入神策

我见青山多妩媚,料青山见我应如是。