SDK接入流程概覽
步驟 | 整合內容 | 本文中的位置 | 是否必選 |
第一步 | SDK擷取 | 查看文檔「第1步下載SDK」 | 必選 |
第二步 | 開發配置 | 查看文檔「第2步開發配置,配置小程式網域名稱白名單」 | 必選 |
第三步 | SDK整合 | 查看文檔「第3步整合-方式一、方式二,根據自身小程式選擇何時的整合方法」 | 必選 |
第四步 | 設定初始化參數 | 查看文檔 [第3步初始化參數說明-appKey,設定應用唯一標識」 | 必選 |
查看文檔 [第3步初始化參數說明-dsn,設定收數服務地址」 | 必選 |
在整合前需要先擷取appKey。
1. 下載SDK
下載SDK安裝包,解壓ZIP包後放到小程式源碼工程中,以備引用。
2. 開發配置
2.1 微信小程式後台配置
添加微信小程式網域名稱白名單,(網域名稱白名單為apm服務部署的收數網域名稱)。
操作入口:開發管理->開發設定-> 伺服器網域名稱->修改->填寫request合法網域名稱
在微信中操作如下圖所示:



若暫時無法佈建網域名白名單,開發階段可先在小程式編輯器的面板中勾選不校正合法網域名稱。
操作步驟如下圖所示:

2.2 支付寶配置
設定網域名稱白名單(網域名稱白名單為apm服務部署的收數網域名稱)。

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

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()