AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
# 小程序SDK接入 [TOC] ***** 在您的小程序中接入SDK后,[Linkflow](https://app.linkflowtech.com/)可以实现小程序用户基本事件追踪。您也可在linkflow的自定义事件([事件元数据](../../%E4%BA%8B%E4%BB%B6%E5%85%83%E6%95%B0%E6%8D%AE.md))模块设置小程序自定义事件([事件元数据](../../%E4%BA%8B%E4%BB%B6%E5%85%83%E6%95%B0%E6%8D%AE.md)),同时在小程序中埋点,实现小程序用户自定义事件追踪。 * 注:linkflow对于小程序基础库支持的最低版本是有要求的,基础库版本低的时候,linkflow会报错,阻塞线程; 建议使用>=1.2.4 版本! ## 1. 配置 SDK 点击下载最新[SDK 21.08.R1](https://static.linkflowtech.com/wechat_sdk/21.08.R1/wechatapp-sdk.zip),将解压得到的文件 [Linkflow](https://app.linkflowtech.com/)-wechatapp.min.js 和 linkflow-conf.js 拷贝到小程序项目的utils文件夹中。 * **注意**:如果您的小程序使用了 wepy或是Taro框架,打开小程序页面、分享小程序页面这两个事件[Linkflow](https://app.linkflowtech.com/)无法自动获取,您的小程序开发人员需要手动添加代码,实现这两个事件的追踪。 使用编辑器打开 [Linkflow](https://app.linkflowtech.com/)-conf.js 文件,修改其中配置。 ~~~ exports.token = 'MTE4LWMzZWU2YzI3LTBlNzMtNDJiOS1iThiMzM0NzIxNDU3YQ=='; // 请在此行填写从联否后台获取的 token exports.appId = 'wxfd45483b0c0609'; // 小程序的 appid exports.defaultPath = 'pages/index/index'; // 小程序的默认首页, 用于分享时path为空时 exports.apihost = 'https://app.linkflowtech.com'; // 私有化部署使用的替代接口域名 exports.USE_CUSTOM_ANONYMOUS_ID = true ; // 开启 保存小程序openid 默认是不开启 ~~~ * token可在linkflow创建的小程序连接详情页获取 * 路径:【连接管理】> 找到与Linkflow对接的小程序并点击 ![](https://img.kancloud.cn/b6/a3/b6a3b936491c18a2c9bce494a2433dbc_1308x540.png) * * * * appId可登录微信公众账号获取 ![](https://img.kancloud.cn/60/a1/60a1dfaa87317b159c23645dfa9897d1_959x495.png) * 使用编辑器打开 app.js 文件,在文件顶部(其他代码之前)添加如下代码: ~~~ var linkflow = require("./utils/linkflow-wechatapp.min.js"); ~~~ ## 2. 添加微信request合法域名 管理员或开发者身份在微信小程序后台→设置→开发者设置中添加request 合法域名。Saas产品的域名为:app.linkflowtech.com;如果是私有化部署,请联系开发人员获取域名。详情如下: ![](https://img.kancloud.cn/18/92/1892469ef6b97da65ea79c41841bdf12_2876x1636.png) * * * ## 小程序系统事件 Linkflow 小程序SDK会自动捕获以下事件: * 1、**启动小程序**——首次打开小程序,或者关闭后打开小程序。(关闭小程序的情形包括:小程序崩溃,关闭微信进程)。 * 2、**展示小程序**——解除锁屏或重新打开微信,将之前隐藏的小程序重新展示(非页面展示)。 * 3、**隐藏小程序**——手机锁屏、小程序页面最小化时、最小化微信、离开小程序页面(看不到小程序了)。 * 4、**打开小程序页面**——进入小程序页面。 * 5、**分享小程序页面**——通过微信转发或其他形式将小程序页面分享。 **注意**:如果是通过扫描linkflow生成的小程序码进入小程序页面,【打开小程序页面】事件上会带有二维码id和对应的utm参数。此时退出小程序,通过“微信聊天主界面下拉”重新进入小程序,小程序会打开之前缓存的页面路径,因为之前路径是有二维码信息,这次【打开小程序页面】事件上仍然会带有二维码id和对应的utm参数,但并不是通过扫描小程序码进入的。 * 所以做小程序流量分析的时候,最好使用场景(如扫描二维码、微信聊天主界面下拉)+utm综合判断,而不要使用二维码id进行判断。 ***** **注意**:如果您的小程序使用了 wepy 或者是 Taro 框架,【打开小程序页面】和【分享小程序页面】这两个事件Linkflow无法自动获取,您的小程序开发人员需要手动添加代码,实现这两个事件的追踪,示例代码如下: ![](https://img.kancloud.cn/17/77/1777bf978003cff30fb6cc9cdcc6e9c0_1230x496.png) * * * Taro 框架触发打开小程序页面(onPageShow) 以及分享小程序页面(onPageShare)示例如下: ``` Taro.useDidShow( app.linkflow.onPageShow(getCurrentPages()) ) Taro.useShareAppMessage( app.linkflow.onPageShare("/pages/index") ) ``` ## 3. 自定义事件配置 ### 如何创建自定义事件 * 创建路径:【设置】> 【连接管理】> 点击已连接的【小程序】> 点击【事件元数据】,如下: ![](https://img.kancloud.cn/b7/21/b721710e3c7de57b09567eeca332bdcb_1095x546.png) * 注:需要创建小程序的自定义事件,需要先在[【事件属性】](https://help.linkflowtech.com/lfcs/2175699)中创建“自定义事件属性”,然后在[【事件元数据】](https://help.linkflowtech.com/lfcs/2177470)中再创建“自定义事件”! ***** * **创建顺序如下:** 1. **先在【事件属性】中创建“自定义事件”**——创建路径:【设置】> 【元数据管理】> 【事件属性】> 点击【新建】 ![](https://img.kancloud.cn/85/80/8580c926451797a2e6d8e00c1a542310_1285x552.png) ![](https://img.kancloud.cn/3f/51/3f517424e91edf0673371729391e687b_698x431.png) ![](https://img.kancloud.cn/33/a3/33a3783c342a03db3d91425f900e7e1c_685x311.png) 2. **在【事件元数据】中创建“自定义事件”**——创建路径:【设置】> 【元数据管理】>【事件元数据】> 点击“![](https://img.kancloud.cn/36/bc/36bcd3a5d8c734ee9f61ccb449e3427e_86x45.png)” * ![](https://img.kancloud.cn/4f/7f/4f7fc428e1880f4d292d5170264a39d5_1134x548.png) ![](https://img.kancloud.cn/c3/d2/c3d2eaac7f26512b263540db07e29439_685x410.png) ![](https://img.kancloud.cn/3c/af/3cafeccb2c6465d05618dee862dbecce_698x387.png) ![](https://img.kancloud.cn/da/3c/da3c0c53383bd172709607a1fc7168f6_712x384.png) ![](https://img.kancloud.cn/48/aa/48aa9a0c774e295a509447da44b79d55_701x494.png) * 更多关于详细操作可以点击此处查看[《元数据管理-事件元数据》](https://help.linkflowtech.com/lfcs/2177470)! ***** 然后在您的小程序项目里进行自定义事件埋点。 自定义事件代码示例: ~~~ var app = getApp(); app.linkflow.sendEvent( { "event": "UDE_10DGHSGAG2", "attr1": "重油污清洁剂", "attr2": "ID3976687974636", }) ~~~ | 参数 | 类型 | 描述 | | --- | --- | --- | | Linkflow事件编码 | string | 在Linkflow上创建的自定义事件的事件编码 | | 参数值 | 在Linkflow上创建的自定义事件的attr对应的类型 | 不超过255个字符,不支持数字,英文,中文,"-"、"\_"、"+",以外的字符格式 | **以上内容的参数值与描述对应如下:** ![](https://img.kancloud.cn/1c/c6/1cc6788e2e01267279a141526f5635a5_2018x964.png) * * * ## 4. 获取用户信息 Linkflow 统计 SDK 不会主动发起用户授权请求,需要由开发者在小程序中[发起用户授权请求](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html),SDK 才可以收集到用户信息。 * **注:需要登录小程序后台才能发起用户授权请求。** 如果希望 Linkflow 将小程序用户与微信用户打通集中管理,请确保您的微信小程序渠道已经绑定到开放平台[(为什么要把公众号/小程序绑定到开放平台)](https://help.linkflowtech.com/lfcs/977672)。并在调linkflow SDK 提供的 identify 接口将用户信息以及 unionID 发送给 Linkflow。 * * * 注意: * 1、请小程序开发者在调用wx.login 接口的时候指定返回语言为"zh\_CN"(小程序默认为“en”),避免后期数据分析时产生英文数据信息。 * 2、2021年4月13日后发布的小程序新版本,无法通过wx.getUserInfo获取用户个人信息(头像、昵称、性别与地区),将直接获取匿名数据(包括userInfo与encryptedData中的用户个人信息),获取加密后的openID与unionID数据的能力不做调整。此前发布的小程序版本不受影响,但如果要进行版本更新则需要调整为wx.getUserProfile接口,新增getUserProfile接口将于微信基础库2.10.4版本开始支持,可获取[用户个人信息](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/UserInfo.html)(头像、昵称)。 获取用户信息代码示例: ~~~ // 获取用户信息 wx.getUserProfile({ success: res => { var userInfo = { ...res.userInfo, externalId:'123456', //必填。用户唯一标志。如果想在用户关注微信公众号时,通过unionId将公众号渠道联系人合并到此小程序渠道联系人,请将unionId作为此字段的值。 nickName:'NICKNAME', mobilePhone:'mobilePhone', gender:'', // 0 未知 1 男 2 女 gender 只能传 0 1 2 这三个值 city:'CITY', province:'PROVINCE', country:'COUNTRY', avatarUrl:'AVATARURL', props:{ // 用户自定义属性 attr1: "string", //自定义字段属性名称 attr2: 2 //自定义字段属性名称 date 类型 "yyyy-MM-dd" }, wechatInfo: { unionId: 'unionId',// 用户关注公众号的粉丝unionId,非小程序unionId。如果公众号和小程序关联到同一个微信开放平台,小程序和公众号粉丝的unionId是相同的 } } // linkflow SDK 提供的 identify 接口 // 在 `app.js` 中 getApp().linkflow.useCustomIdAsAnonymousId(openid) // openid 是小程序开发获取的小程序openid this.linkflow.identify(userInfo, function() { // success }, function(){ // fail }) // 在页面文件 `page.js` 中 var app = getApp() app.useCustomIdAsAnonymousId(openid); // openid 是小程序开发获取的小程序openid app.linkflow.identify(userInfo, function() { // success }, function(){ // fail }) ~~~ * * * ### 获取用户信息方式推荐 #### **UnionID获取**(参见[《微信小程序开发文档》](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html)) ### **UnionID 机制说明** 如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。 ### **获取途径** 绑定了开发者帐号的小程序,可以通过以下途径获取 UnionID。 1. 调用接口[wx.getUserInfo](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserInfo.html),从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。 2. 开发者可以直接通过[wx.login](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html)+`code2Session`获取的登录凭证可以直接换取unionID,无须用户授权。 3. 用户在小程序(暂不支持小游戏)中支付完成后,开发者可以直接通过`getPaidUnionId`接口获取该用户的 UnionID,无需用户授权。注意:本接口仅在用户支付完成后的5分钟内有效,请开发者妥善处理。 4. 小程序端调用[云函数](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/capabilities.html#%E4%BA%91%E5%87%BD%E6%95%B0)时,如果开发者帐号下存在**同主体的**公众号,并且该用户已经关注了该公众号,可在云函数中通过[cloud.getWXContext](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-server-api/utils/getWXContext.html)获取 UnionID。 5. 小程序端调用[云函数](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/capabilities.html#%E4%BA%91%E5%87%BD%E6%95%B0)时,如果开发者帐号下存在**同主体的**公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用,也可在云函数中通过[cloud.getWXContext](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-server-api/utils/getWXContext.html)获取 UnionID。 * * * * 注意: 2021年2月23日起,若小程序已在微信开放平台进行绑定,则通过wx.login接口获取的登录凭证可直接换取unionID,无需满足原限制条件(用户已经关注了该公众号;用户已经授权登录过该公众号或移动应用)。 * * * **mobilePhone获取** 您可以引导用户在小程序页面填写手机获取mobilePhone,也可以利用微信[getPhoneNumber](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html)获取微信用户绑定的手机号。