微信小程序SDK接入指南

前置条件

配置request合法域名:进入微信小程序后台→设置→开发者设置,添加request 合法域名:https://cdp.linkflowtech.com

小程序基础库支持:版本不低于2.4。

绑定开放平台:小程序与其他公众号、小程序绑定到同一开放平台(非必须,如无法绑定开放平台,需要重新设计identify逻辑)。

配置环境

引入SDK

鼠标右键点击小程序SDK 【另存为】文件:lf-wx-miniapp.min.js下载最新, 然后拷贝到小程序项目的utils文件夹中。

入js

在app.js文件顶部(其他代码之前)添加如下代码:

var linkflow = require("./utils/lf-wx-miniapp.min.js");

var sdk = linkflow.setup({
  name: 'lfsdk',    //SDK 使用的一个默认的全局变量名,会注册在 App 全局函数中,默认为 LFAPP
  token: 'MS1mYzE3ODQxYS1h**********QxMC03YTQ3ODFlMjY5OTA=',    //必填,用于识别埋点小程序的连接

  defaultPath: 'pages/index/index',    
  server_url: 'https://cdp.linkflowtech.com',    //必填埋点数据收集的后端服务器地址

  utm_stractegy:'OVERWRITE',  //'OVERWRITE' | 'SESSION' | 'MAX_AGE'    默认 OVERWRITE

  //OVERWRITE: 一直使用前一次存储的utm直到新的utm进来

  //SESSION: utm值只在本次launch的过程中有效,下次重新初始化SDK时,不会从存储中获取utm  

  //MAX_AGE: 一个组utm值进来的时候,记录当时的时间戳,等到下次SDK初始的时候,从存储中获取utm的值,并且比较时间戳是否在有效范围内,如果在有效范围内这使用该utm,该有效性检查只在SDK初始化时候进行,在本次launch中间不会再次检查这组utm的有效性

  utm_max_age:720 , //默认720h 

  auto_anonymous_id:true ,  //默认值 true,如果为false的话,SDK不会自动生成anonymouseId,如果没有identitiy被设置,SDK则不会发送message到后台
  auto_track: {

    app_launch: true,    //自动追踪onAppLaunch事件,默认值为true
    app_show: true,    //自动追踪onAppShow事件,默认值为true
    app_hide: true,    //自动追踪onAppHide事件,默认值为true
    page_show: true,    //自动追踪onPageShow事件,默认值为true
    page_share: true,    //自动追踪onPageShare事件,默认值为true
    page_leave: true,    //自动追踪离开页面事件,此事件会记录页面的停留时长,默认值为false

  }
});

开始开发(埋点)

识别联系人(identify)

作用

实名联系人,标识该用户是谁,带有何种标识、特征等,例如:姓名、性别等。

更新用户属性。

与同一开放平台下其他公众号或者小程序打通:同一开放平台下,小程序用户进入之后,setIdentities传入unionId,会根据它查找其他该平台下同一unionId的用户,查到则发生合并。

调用时机

【进入小程序】:用户进入小程序,判断localStorage是否存有用户信息;

——如果有,调用identify;

——如果没有,获取用户信息,再调用identify,并且用户信息存入localStorage。

【更新用户信息】:包括但不限于用户授权、完善用户信息等所有可能获取到用户信息的时候,例如:用户授权手机号、在用户信息页完善个人信息时。


如果存在切换账号的情况需要在调用 identites 之前清空 缓存

var app = getApp()['lfsdk']

app.cleanIdentities();



示例代码

var identities = [{  
      type:'wxa.openId', // 小程序的openeid
      id:'oaDgs5TUy6Cxs***0K4A2n1jdnYk'
    },{
      type:'wechat.unionId',
      id:'ovfdf6ny6Ko****fyecRqVNw'  // 开放平台的unionid
    }
 ];

var profile = {
    nickname:'昵称',
    mobilePhone:'13888888888',
    avatar:'头像地址',
    gender:'male',   //  male:男  female:女 unknown:保密
    props:{// 自定义用户属性

         udc_props1:'test'

     }
}

// 在 `app.js` 中
sdk.setIdentities(identities)

sdk.setProfile(profile)
// 在页面文件 `page.js` 中
var app = getApp()['lfsdk']

app.setIdentities(identities)

app.setProfile(profile)

发送事件(sendEvent)

前置条件

在linkflow平台,配置事件元数据,此步骤可由甲方管理员或者拥有配置权限角色来配置。

示例代码

var app = getApp()['lfsdk']

app.track({
   event:'事件ID',
   props:{ 

     props_1:'创建订单',

     props_2:88

       }
});

参数说明

字段名

属性名称

数据类型

是否必传

备注说明

nickname

昵称

字符串



mobilePhone

手机号

字符串



avatar

头像

字符串



gender

性别

字符串


male 男 ; female 女 ; unknown 保密

dateOfBirthday

出生年月

日期


如:1990-11-01

name

姓名

字符串



country

国家

字符串



state

字符串



city

字符串



street

街道

字符串



props

自定义属性

对象


自定义属性

验证

SDK配置验证

小程序SDK正常初始化之后,用户打开小程序之后,SDK会自动追踪如下事件:

  • 启动小程序——首次打开小程序,或者关闭后打开小程序。(关闭小程序的情形包括:小程序崩溃,关闭微信进程)。
  • 展示小程序——解除锁屏或重新打开微信,将之前隐藏的小程序重新展示(非页面展示)。
  • 隐藏小程序——手机锁屏、小程序页面最小化时、最小化微信、离开小程序页面(看不到小程序了)。
  • 打开小程序页面——进入小程序页面。
  • 分享小程序页面——通过微信转发或其他形式将小程序页面分享。

可登录linkflow连接云,在主页右侧时间轴查看是否收到这些事件。如正常收到,则SDK配置无问题;否则,可查看

识别联系人

查找到该联系人:通过联系人页面搜索姓名、昵称或者手机号,也可通过搜索微信ID来查找到该用户。

查看用户画像:仔细核对页面左侧用户信息,确认是否与小程序端上传的数据一致。

发送事件

查找到该联系人:通过联系人页面搜索姓名、昵称或者手机号,也可通过搜索微信ID来查找到该用户。

查看时间轴:进入人物画像,点击时间轴,在时间轴中找到该事件,并仔细核对事件属性,确保事件属性与小程序端发送的事件一致。

wepy、Taro框架

如果您的小程序使用了 wepy或是Taro框架,打开小程序页面分享小程序页面这两个事件Linkflow无法自动获取,小程序开发人员需要手动添加代码,实现这两个事件的追踪。

wepy 框架

wepy 框架触发打开小程序页面(onPageShow) 以及分享小程序页面(onPageShare)示例如下:

let app = getApp()['lfsdk']

wepy.page({

    //打开小程序页面

    onShow(options){

        app.linkflow.onPageShow(getCurrentPages());

    },

    

    //分享小程序页面

    onShareAppMessage(options){

        app.linkflow.onPageShare('pages/index');

    }

})

Taro 框架

Taro 框架触发打开小程序页面(onPageShow) 以及分享小程序页面(onPageShare)示例如下:

//打开小程序页面

Taro.useDidShow(

app.linkflow.onPageShow(getCurrentPages())

)

//分享小程序页面

Taro.useShareAppMessage(

app.linkflow.onPageShare("/pages/index")

)