微信小程序集成说明
U-APM的小程序功能需要申请购买使用,可点击了解
一、快速接入
1.1 安装SDK
购买后访问SDK中心,获取最新的SDK并按照下述文档接入,点此访问SDK下载中心
1.2 集成
我们提供多种JS模块化规范的集成方式,只需在app.js 文件的顶部添加以下JS代码,即可进行稳定性指标的统计:
ESM
import "@umengfe/mini-apm";
App({
umengConfig: {
appKey: 'YOUR_UMENG_APPKEY', // 由友盟分配的APP_KEY
useOpenid: true, // 是否使用openid进行统计,此项为false时将使用友盟+随机ID进行用户统计。使用openid来统计微信小程序的用户,会使统计的指标更为准确,对系统准确性要求高的应用推荐使用OpenID
autoGetOpenid:true,// 是否需要通过友盟后台获取openid,如若需要,请到友盟后台设置appId及secret
debug: true, // 是否打开调试模式
},
})CJS
var uapm = require("@umengfe/mini-apm");
App({
umengConfig: {
appKey: 'YOUR_UMENG_APPKEY',
useOpenid: true,
autoGetOpenid:true,
debug: true,
},
})1.3 初始化
我们提供了两种SDK初始化方式,开发者可根据自身需要进行选择。
方式一:设置umengConfig,执行上下文时
// ESM
import "@umengfe/mini-apm";
App({
umengConfig: {
appKey: 'YOUR_UMENG_APPKEY',
debug: true,
},
});// CJS
var uapm = require("@umengfe/mini-apm");
App({
umengConfig: {
appKey: 'YOUR_UMENG_APPKEY',
debug: true,
},
})
说明 注意:切记一定要正确设置umengConfig,不要拼写错误
方式二:主动调用init方法进行初始化
// ESM
import { init } from "@umengfe/mini-apm";
init({
appKey: 'YOUR_UMENG_APPKEY',
debug: true,
})
App({
onlaunch(){}
});// CJS
var umapm = require("@umengfe/mini-apm");
uapm.init({
appKey: 'YOUR_UMENG_APPKEY',
debug: true,
})
App({
onlaunch(){}
});1.4 增加友盟+数据服务域名
在微信开发者后台添加request合法域名:https://umini.shujupie.com,https://errlog.umeng.com操作步骤:登录微信公众平台,进入小程序的 设置->开发->开发设置->服务器域名,把 https://umini.shujupie.com,https://errlog.umeng.com加入 request合法域名,如图:

1.5 SDK初始化参数配置
参数配置项 | 参数功能 | 注意事项 | 类型 | 首次使用默认值 |
appkey | 由友盟分配的APP_KEY | 暂无 | string | true |
autoGetOpenid | 告诉sdk进行请求获取openid;授权友盟+通过后台自动获取openid,可防止数据统计过程中因未采集到OpenID而造成数据丢失 | 设置后,需要在后台「设置」功能中填写小程序的appid及appsecrect,否则也不会获取openid;注意当此配置项为true时,请一定将useOpenid 配置项设为 true | boolean | true |
useOpenid | 统计的用户标识为openid;如果需要按照openid统计,一定要设置为true | 如果设置为true,但是没有设置友盟+获取openid或者没有上报openid,则用户数据不会发送 | boolean | false |
debug | 是否打开调试模式;建议打开,可以帮助在小程序端进行数据上报的debug | 暂无 | boolean | true |
pageFilter | 设置页面维度内采集行为的黑白名单(可限制页面内产生的错误和api采集上报) | 暂无 | Object | false |
errorFilter | 设置采集错误黑白名单 | 暂无 | Object | false |
apiFilter | 设置采集api请求黑白名单 | 暂无 | Object | false |
自动开启autoGetOpenid,需在应用信息内填写AppID和AppSecret

1.6 黑白名单设置
pageFilter
import { init } from '@umengfe/mini-apm';
init({
appKey:'appkey',
pageFilter: {
mode: 'ignore',
// 当类型为string时,表示包含当页面url包含该字符串时命中规则
rules: ['page/index'],
},
});errorFilter
import { init } from '@umengfe/mini-apm';
init({
appKey:'appkey',
errorFilter: {
mode: 'ignore',
// 当类型为string时,表示包含当错误堆栈包含该字符串时命中规则
rules: ['unhandledrejection', 'xxx is not defined'],
},
});apiFilter
import { init } from '@umengfe/mini-apm';
init({
appKey:'appkey',
apiFilter: {
mode: 'ignore',
// 当类型为string时,表示包含当api url含该字符串时命中规则
rules: ['/xxxx/getUserinfo'],
},
});用于设置采集项的黑白名单,可以在黑名单和白名单中选择其一,如果选择白名单的方式,那么只有符合标准会被采集,如果选择的是黑名单的方式,那么符合标准的不会被采集
此项非必须参数,用于判断是否过滤日志,包含如下属性
属性 | 含义 | 默认 | 类型 |
mode | 匹配模式 当值为ignore,表示黑名单模式,命中规则的不上报 、当值为match,表示白名单模式命中规则的上报 | ignore | 枚举值 ignore|match |
rules | 匹配规则集合,当类型为string时,表示包含该字符串时命中规则;当类型为Funtion,该函数返回true表示命中规则,false表示未命中规则;当类型为数组时,表示规则集合,规则之间为或的关系,只要任意一个规则命中,则规则集命中。 | [],该默认值表示黑名单为空,日志全部上报 | string | RegExp | Function | Array<string | RegExp | Function> |
二、高级功能
2.1 setOpenid
方法描述:关闭autoGetOpenid,可操作手动设置openid
类型:Function
参数:
id(string): 开发者获取到的用户openid
返回值:
无
import { init } from '@umengfe/mini-apm';
init({
appKey:'appkey',
autoGetOpenid: false,
useOpenid: true
});
wx.$umapm.setOpenid(id);说明 注意:如设置开启openid,不自动获取openid,SDK会等待setOpenid的设置结果再进行上报
2.2 setUserid
方法描述:可手动设置userid,用来追踪采集数据
类型:Function
参数:
id(string): 开发者获取到的用户userid
返回值:
无
import { init } from '@umengfe/mini-apm';
init({
appKey:'appkey',
useOpenid: false
});
wx.$umapm.setUserid(id);2.3 setUnionid
方法描述:开发者可手动设置unionid
类型:Function
参数:
id(string): 开发者获取到的用户unionid
返回值:
无
import { init } from '@umengfe/mini-apm';
init({
appKey:'appkey',
useOpenid: false
});
wx.$umapm.setUnionid(id);2.4 setPageFilter
方法描述:设置页面维度内采集行为的黑白名单
类型:Function
参数:
参考上述黑白名单设置
返回值:
无
import { init } from '@umengfe/mini-apm';
init({
appKey:'appkey',
useOpenid: false
});
wx.$umapm.setPageFilter({
mode: 'ignore',
rules: ['page/index'],
},
});2.5 setErrorFilter
方法描述:设置采集错误堆栈黑白名单
类型:Function
参数:
参考上述黑白名单设置
返回值:
无
import { init } from '@umengfe/mini-apm';
init({
appKey:'appkey',
useOpenid: false
});
wx.$umapm.setErrorFilter({
mode: 'ignore',
rules: ['unhandledrejection', 'xxx is not defined'],
});2.6 setApiFilter
方法描述:设置api请求采集黑白名单
类型:Function
参数:
参考上述黑白名单设置
返回值:
无
import { init } from '@umengfe/mini-apm';
init({
appKey:'appkey',
useOpenid: false
});
wx.$umapm.setApiFilter({
mode: 'ignore',
// 当类型为string时,表示包含当api url含该字符串时命中规则
rules: ['/xxxx/getUserinfo'],
});2.7 captureException
方法描述:自定义错误手动采集上报
captureException可以通过wx.$umapm在全局变量中取,也可以在import sdk的时候导出,下面是具体的手动采集上报的示例代码:
// 从全局中取用示例
import { init } from '@umengfe/mini-apm';
init({
appKey: 'appkey',
debug: true
})
try {
... YOUR CODE
} catch (error) {
wx.$umapm.captureException(error);
}// 引入时声明的示例
import { init, captureException } from '@umengfe/mini-apm';
init({
appKey: 'appkey',
debug: true
})
try {
... YOUR CODE
} catch (error) {
captureException(error);
}三、其他说明事项
慎重调用wx.clearStorage()以及wx.clearStorageSync()接口!SDK会将用户相关操作数据缓存在客户端数据存储模块,在特定时间启动发送策略。若调用该接口可导致数据统计不准确的问题;
若用户在使用小程序过程强制关闭微信有可能会造成统计数据丢失的情况。
四、第三方框架支持
目前小程序SDK支持以下第三方框架
uniapp
taro
加入开发者钉钉交流群
如您正在接入U-APM SDK 恰好有问题需要我们支持,或想和其他开发者交流 崩溃问题的优化与解决 都可以加入到该钉钉群.