# 百度小程序 SDK

> ### *在使用前，请先阅读*[*数据模型*](https://54td.gitbook.io/shence/technical_guide/data_import/data_model)*的介绍。*

[更新日志](https://github.com/sensorsdata/sa-sdk-smartprogram/)

## 1. 获取和引入神策分析 SDK

### 1.1 下载 sdk

从 github 上下载 [百度小程序 sdk](https://github.com/sensorsdata/sa-sdk-smartprogram) ，sensorsdata.min.js 和 sensorsdata\_conf.js

把这两个文件放在小程序的根目录下文件夹 sa-sdk-smartprogram 。

引入 SDK 并设置一个全局变量

```javascript
// 引入 sdk
var sensors = require('./sa-sdk-smartprogram/sensorsdata.min.js')

App({ 
    onLaunch : function(){ 
    // 设置全局变量，以便于在 Page 里访问到 
        this.sensors = sensors 
    }
})
```

现在在其他 Page 里就可以通过 getApp 来使用神策的追踪了

```
var app = getApp();
app.sensors.track(eventName, properties) // 第一个参数事件名 字符串类型，第二个参数 属性值 对象类型
```

### 1.2 sensorsdata\_conf.js 参数配置

* **server\_url**: 数据接收地址, 如果你使用的是 cloud 云版环境，地址类似于  [http://xq\_zgq.cloud.sensorsdata.cn/sa?project=gxq\&token=251d0b0。](http://xq_zgq.cloud.sensorsdata.cn/sa?project=gxq\&token=251d0b0%E3%80%82)  ***注意***: 请在“小程序详情／设置”中添加 httpRequest 接口请求域名白名单，把这个地址加上。

## 2. 标识用户

在进行任何埋点之前，都应当先确定如何标识用户。**distinct\_id** 是神策用来标识用户的一段唯一的字符串。

在小程序中，会有下面 2 种 id\
1\. 默认情况下，我们会生成一个随机数 uuid ，保存在本地缓存中，我们暂时称这个为 **uuid**\
2\. 数据库中保存的，用户真实 id 。我们暂时称为 **"你们服务端分配给用户具体的登录 ID"**

如果不做任何操作，小程序会使用 uuid 作为 distinct\_id ，注意： uuid 在换了设备，或者删除小程序后，会重新生成。

### 2.1 调用sensors.login("你们服务端分配给用户具体的登录 ID") 来标识真实用户

通过 `sensors.login("你们服务端分配给用户具体的登录 ID")` 来把 SDK 自动生成的 **uuid** 关联成现在传入的 **"你们服务端分配给用户具体的登录 ID"**。且以后会一直使用这个 **"你们服务端分配给用户具体的登录 ID"**。

```
    sensors.login('user1312312123');
```

### 2.2 使用 sensors.identify 来修改匿名 id

默认情况下，是把 **uuid** 作为 **distinct\_id** 的。如果你能取到其他匿名 id（比如你们自己生成的 uuid），可以用 `sensors.identify(id,true)` 来改变当前的**distinct\_id**。

## 3. 自定义事件追踪

第一次接入神策分析时，建议使用 sensors.track() 先追踪 3\~5 个关键的事件，只需要几行代码，便能体验神策分析的分析功能。例如：

电商产品，可以追踪用户注册、浏览商品和下订单等事件。

```
    // 追踪浏览商品事件。  
    var app = getApp();
    app.sensors.track('ViewProduct', {
        ProductId: '123456'，
        ProductCatalog: "Laptop Computer",
        ProductName: "MacBook Pro",
        ProductPrice: 12345
    });
```

事件公共属性：可以在小程序页面 Page() 执行前使用 registerApp() 方法注册事件公共属性，这样在后续的所有事件都会添加这些公共属性。例如：

```javascript
    // 注册事件公共属性。  
    var app = getApp();
    app.sensors.registerApp({
        userLever: 'VIP3',
        userSex: '男'
    });
```

## 4 设置用户属性

### 4.1 sensors.setProfile(properties)

直接设置用户的属性，如果存在则覆盖。

* properties：`object`，必选。

```
    sensors.setProfile({email:'xxx@xx'});
```

### 4.2 sensors.setOnceProfile(properties)

如果不存在则设置，存在就不设置。

* properties：`object`，必选。

```
    sensors.setOnceProfile({email:'xxx@xx'});
```

## 5 实际案例使用

先把下载下来的 sensorsdata.js 和 sensorsdata\_conf.js 放在目录 until 目录下

### 5.1 在根目录的 app.js 中加入

```
// 这行是必须加入的
var sensors = require('./sa-sdk-smartprogram/sensorsdata.min.js');

App({
  onLaunch: function () {
          // 设置全局变量
          this.sensors = sensors;
          // 如果获取到了用户的信息,可以给这个用户设置 profile
          sensors.setProfile({name:'tiantian',age:18});
  }
  ......
});
```

### 5.2 在 Pages 里的 js 中可以通过 getApp() 来获取 sensors

```
var app = getApp();
//下面模拟某个用户在浏览一张桃花的图片，当用户点击这张图片时，我们发送一个 clickImage 事件
Page({
  bindTapImage: function(){
      app.sensors.track('clickImage',{name:'桃花'});
  },
  onLoad: function(){

  }
});
```
