全部產品
Search
文件中心

Quick Tracking:小程式 SDK

更新時間:Sep 12, 2025

SDK接入流程概覽

步驟

整合內容

本文中的位置

是否必選

第一步

SDK擷取

查看文檔「第1步下載SDK」

必選

第二步

開發配置

查看文檔「第2步開發配置,配置小程式網域名稱白名單」

必選

第三步

SDK整合

查看文檔「第3步整合-方式一、方式二,根據自身小程式選擇何時的整合方法」

必選

第四步

設定初始化參數

查看文檔 [第3步初始化參數說明-appKey,設定應用唯一標識」

必選

查看文檔 [第3步初始化參數說明-dsn,設定收數服務地址」

必選

在整合前需要先擷取appKey。

1. 下載SDK

下載SDK安裝包,解壓ZIP包後放到小程式源碼工程中,以備引用。

2. 開發配置

2.1 微信小程式後台配置

    1. 添加微信小程式網域名稱白名單,(網域名稱白名單為apm服務部署的收數網域名稱)

      操作入口:開發管理->開發設定-> 伺服器網域名稱->修改->填寫request合法網域名稱

      在微信中操作如下圖所示:

    2. image

    3. image

    4. image

    1. 若暫時無法佈建網域名白名單,開發階段可先在小程式編輯器的面板中勾選不校正合法網域名稱。

      操作步驟如下圖所示:image.png

2.2 支付寶配置

  1. 設定網域名稱白名單(網域名稱白名單為apm服務部署的收數網域名稱)。image.png

  2. 若暫時無法佈建網域名白名單,開發階段可先在小程式編輯器的面板中勾選不校正合法網域名稱。image.png

3. SDK整合

在app.js頂部開始位置引用第1步下載的sdk,整合方式支付寶和微信相同,微信引用wx開頭的檔案,支付引用alipay開頭的檔案,按照下面的方式來整合。

如圖所示,其中cjs為commonjs封包,一般在原生小程式中通過require引用,esm為es模組封包,一般使用import來引用,開發人員根據自己的業務情況選擇合適的引入方式。

3.1 方式一聲明式寫法,適用於原生小程式開發

esm 引入方式

// esm 引入方式 import { init } from './build/wx.esm';
import { init } from './build/wx.esm'

init({
  appKey: '您應用的唯一標識',
  dsn: '收數網域名稱',
  debug: true, //開啟調試日誌
  version:'x.y.z' //設定應用版本號碼
})

commonjs 引入方式

// commonjs 引入方式如下
require('./build/wx.cjs');
App({
  umengConfig: {
    appKey: '您應用的唯一標識',
    dsn:'收數網域名稱',
    debug: true, //開啟調試日誌
    version:'x.y.z' //設定應用版本號碼
  }
});

3.2 方式二命令式寫法

適用於uni-app、taro等三方架構

// commonjs 引入方式如下
const uapm = require('./build/wx.cjs');
uapm.init({
  appKey: '您應用的唯一標識',
  dsn:'收數網域名稱',
  debug: true, //開啟調試日誌
  version:'x.y.z' //設定應用版本號碼
});

4. 初始化參數說明

name

是否必填

含義

類型

支援平台

appKey

應用唯一標識

string

微信支付寶

dsn

apm小程式採集服務部署地址,收數網域名稱

string

微信支付寶

debug

是否列印調試日誌

boolean

微信支付寶

version

開發人員應用版本,若不填寫,則自動擷取小程式發布的版本,若填寫,則使用開發人員填寫的版本

string

微信支付寶

pageFilter

頁面過濾器,通過黑白名單方式過濾頁面日誌,如果命中,則該頁面所有日誌包括錯誤請求等都被過濾

IFilter

微信支付寶

errorFilter

錯誤過濾器,通過黑白名單方式過濾錯誤記錄檔

IFilter

微信支付寶

apiFilter

請求過濾器,通過黑白名單方式過濾請求日誌

IFilter

微信支付寶

rumConfig

全鏈路請求header注入配置

RumConfig

微信支付寶

IFiler類型說明

pageFilter、errorFilter 和 apiFilter 均繼承自 IFilter 介面,分別用於以下過濾目標:

  • pageFilter:用於過濾頁面路徑(path)

  • errorFilter:用於過濾堆棧資訊

  • apiFilter:用於過濾請求的 URL

您可以設定採集項的白名單或黑名單策略,二者選其一:

  • 若選擇白名單方式,則僅符合規則的頁面會被採集

  • 若選擇黑名單方式,則符合規則的頁面將被排除,不會被採集

此項非必須參數,用於判斷是否過濾日誌,包含如下屬性。

屬性

含義

預設

類型

mode

匹配模式

當值為ignore,表示黑名單模式,命中規則的不上報 、當值為match,表示白名單模式命中規則的上報

ignore

枚舉值 ignore|match

rules

匹配規則集合,當類型為string時,表示包含當頁面URL包含該字串時命中規則;當類型為Funtion,該函數返回true表示命中規則,false表示未命中規則;當類型為數組時,表示規則集合,規則之間為或的關係,只要任意一個規則命中,則規則集命中。

[],該預設值表示黑名單為空白,日誌全部上報

string | RegExp | Function | Array<string | RegExp | Function>

RumConfig類型說明

此項非必須參數,用於判斷是否過濾日誌,包含如下屬性。

屬性

含義

預設

類型

injectTraceHeader

SDK會對小程式網路請求注入對應的要求標頭,並且自動產生相關協議欄位

undefined

枚舉值

'traceparent' | 'b3' | 'sw8' | 'sentry-trace' | undefined

needTracedUrls

全鏈路監控注入Urls白名單,預設值為null

null,該預設值表示白名單為空白,如果設定此值,則僅符合規則的請求url會被注入要求標頭

Array<string | RegExp>

ignoredUrls

全鏈路監控注入Urls黑名單,預設值為null

null,該預設值表示黑名單為空白,如果設定此值,則僅符合規則的請求url 不會被注入要求標頭

Array<string | RegExp>

injectSDKRequest

是否對SDK內部請求注入要求標頭,預設為false,即不注入

false,該預設值表示SDK的內部請求url不會被注入要求標頭

boolean

執行個體方法說明

當引入SDK初始化後會在全域掛載執行個體$umapm對象,可分別通過wx.$umapm my.$umapm 調用以下方法。

含義

類型

樣本

支援平台

setUserid

設定使用者ID

Function

$umapm.setUserid('xxxx')

微信支付寶

setPageFilter

通過設定採集頁面黑白名單,過濾採集上報的頁面

Function

$umapm.setPageFilter({

mode: 'match',

rules: ['/home']

})

微信支付寶

setApiFilter

通過設定採集請求黑白名單,過濾採集上報的錯誤

Function

$umapm.setApiFilter({

mode: 'ignore',

rules: ['/getUserInfo']

})

微信支付寶

setErrorFilter

設定採集錯誤黑白名單

Function

$umapm.setErrorFilter({

mode: 'ignore',

rules: ["script error"]

})

微信支付寶

captureException

主動上報錯誤堆棧

Function

try{

throw new Error('錯誤') } catch (exception) { $umapm.captureException(exception);

}

微信支付寶

5. 案例

案例1

支援App umengConfig自訂屬性設定配置參數:

// wechat
const umapm = require('./wx.cjs');

App({
  umengConfig: {
    appKey: '應用唯一標識',
    dsn:'收數網域名稱',
    debug: true,
    version:'x.y.z',
    debug: true,
    pageFilter: {
      mode: 'match',
      rules: ['/home']
    }
  },
  onLaunch: function () {
    wx.request({
      url: "https://xxx/getUserId",
      method: "post",
      success: (res) => {
        wx.$umapm.setUserid(res.data.userid);
      }
    })
  }
});

案例2

支援執行個體init方法配置初始化:

// wechat
var umapm = require('./wx.cjs');
umapm.init({
  appKey: '應用唯一標識',
  dsn:'收數網域名稱',
  debug: true,
  version:'x.y.z',
  debug: true,
  pageFilter: {
    mode: 'match',
    rules: ['/home']
  }
});

App({
  onLaunch: function () {
    wx.request({
      url: "https://xxx/getUserId",
      method: "post",
      success: (res) => {
        wx.$umapm.setUserid(res.data.userid);
      }
    });
  }
});

案例3

uni-app架構下利用條件編譯整合SDK:

// 初始化的參數配置
// #ifdef MP-WEIXIN
import { init } from "./wx.esm";
init({
  appKey: '應用唯一標識',
  dsn: '收數網域名稱',
  version:'x.y.z',
  pageFilter: {
    mode: "ignore", 
    rules: []
  },
});
// #endif

// #ifdef MP-ALIPAY
import { init } from "./alipay.esm";
init({
  appKey: '應用唯一標識',
  dsn: '收數網域名稱',
  version:'x.y.z',
  pageFilter: {
    mode: "ignore", 
    rules: [] 
  },
});
// #endif

// #ifdef H5
import { init } from "./apm";
init({
  pageFilter: { mode: "ignore", rules: [] },
  pid: "H5應用唯一標識",
  logLevel:3,
});
// #endif

main.js中引入uapm.js

import Vue from 'vue'
import App from './App'
import './uapm';

Vue.config.productionTip = false

App.mpType = 'app'

const app = new Vue({
  ...App
})
app.$mount()