版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。


Markdown
# 斐波那契 小程序 SDK 接入文档



## 目录

---

[TOC]


## 正文

---

### 1. SDK 使用步骤

#### 1.1 步骤一:小程序设置数据服务白名单
登录[微信公众平台](https://mp.weixin.qq.com)(必须是管理员帐号),进入 "开发" > "开发设置" 配置页面,在 "服务器域名 - request合法域名" 配置项中添加 **https://sdkapi.fibodata.com** 项。

#### 1.2 步骤二:引入 JS 文件

[【SDK文件地址:https://res.fibodata.com/data/fibosdk.miniapp.min.js】](https://res.fibodata.com/data/fibosdk.miniapp.min.js)

下载SDK文件并把文件放入小程序的工程目录中,并在小程序的app.js中引入。

```js
import fiboSDK form "./lib/fibosdk.miniapp.min.js" //文件路径请按自己的实际情况修改
```

#### 1.3 步骤三:通过 initApp 接口初始化

为了能够正常使用 SDK 接口,必须首先调用 initApp 接口进行初始化,initApp 接口返回值为一个Promise对象。

注意事项:
1. 请在小程序授权完成获取到用户信息后再进行 SDK 的初始化
2. [调用 wx.getUserInfo 获取用户信息时,请设置参数 lang = zh_CN](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserInfo.html)


参数获取:
1. [如何获取 pfid, appid (登录兔展创意云获取 pfid, appid)](http://docs.tuzhanai.com/pages/viewpage.action?pageId=1934912)
2. [如何获取当前小程序打开的场景值 scene](https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/scene.html)
```js
App({
  onShow: function() {
    var fibo = fiboSDK.initApp({
     pfid: "", // (必须)斐波那契分配的平台id
     appid: "", // (必须)1-50位,数字,大小写字母,下划线,短横线)表示小程序应用的id
     apptype: "", // (必须)应用类型,小程序的类型,企业门户=portalminiapp、员工小站=staffminiapp、外部导入小程序=externalminiapp、医药门户=healthminiapp、医药通=healthstaffminiapp、全员营销=marketminiapp、内容营销=contentminiapp
  	 userInfo: {}, // (非必须)如果有微信授权并能拿到用户信息,则必须填入微信公众号网页授权获取的用户信息JSON对象;支持传入用户字段管理下"已启用"的用户信息
  	 title: "", // (非必须)当前小程序页面标题
  	 scene: "", //(必须)当前小程序打开的场景值
  	 identitys: [{
       identityType: "", //(非必须)用户身份类型,如openid(微信openid)、 unionid(微信openid)、phone(手机号)或自定义的用户身份等,自定义的用户身份在导入前需要先在工作台创建
       identityValue: "", //(非必须)用户身份的取值,如微信openid的具体取值
       platform: "", //(非必须)平台类型,枚举值——contentminiapp(微信小程序)
       mpid: "", //(非必须)应用id,如公众号appid、小程序appid、企业微信corpid、自建应用id等
       isWeChatEcosystem: "" //(非必须)小程序SDK的initApp接口包括该参数,调用后端用户导入建档接口时,必须传入isWeChatEcosystem=true
  	 }] // (非必须)客户多身份类型标识,可以传入多组(最多支持五组)
    });
    
    
    // init 接口的返回值为一个Promise对象,可以调用 then 方法实现相应的业务逻辑。
    fibo.then(function() {
      // 分享链接,将需要分享的链接传入fiboSDK.dealUrl()
      var shareLink = fiboSDK.dealUrl(defaultShareData.path);
      ...
    }, function(err){
      
    });
  }
});
```

### 2. SDK 接口

#### 2.1 小程序打开事件

使用场景:小程序启动或切换到前台。
**这个接口必需要调用,请在 APP 对象的 onShow 方法内调用它**

记录用户打开小程序的操作。

```js
  App({
    // 小程序启动或切换到前台
    onShow: function() {
      fiboSDK.enterApp();
    }
  });
```

#### 2.2 小程序退出事件

使用场景:小程序切换到后台。
**这个接口必需要调用,请在 APP 对象的 onHide 方法内调用它**

记录用户最小化或退出小程序的操作。

```js
  App({
    // 小程序切换到后台
    onHide: function() {
      fiboSDK.leaveApp();
    }
  });
```

#### 2.3 微信分享事件

使用场景:
1. 小程序在各个时间段的分享率
2. 传播的层级,各层级所占比例

```js
onShareAppMessage: function() {
  fiboSDK.sharePage(); //推送分享操作
  return {
    title: "", // 分享标题
    path: fiboSDK.dealUrl(sharePath), // 分享页面路径,将需要分享的链接传入fiboSDK.dealUrl()
    imageUrl: "", // 分享图标
  }
}
```

#### 2.4 按钮点击事件

使用场景: 通过接入按钮点击事件,可以获取到按钮的点击次数和转化率。

对于需要记录点击次数的按钮,需要在待点击的元素上绑定 click 事件并调用 **fiboSDK.btnClick\(buttonId, buttonName)**,其中参数 buttonId 为按钮识别 id,buttonName 是该按钮的名称,例如:

```js
  // <button bindtap="buttonClick">登录</button>
  
  function buttonClick() {
      //登录流程...
      fiboSDK.btnClick("loginBtn", "登录按钮");
  }
```

如果需要统计多个不同按钮的点击次数,buttonId 必须不同。 如果两个不同的按钮传入同一个 buttonId,会算成同一个按钮的点击事件。

**为了防止 buttonId 与其他作品的冲突,导致统计混乱,建议使用 \`${appid}${buttonId}\` 的形式作为 buttonId 传入。**


#### 2.5 自定义表单推送

使用场景:推送自定义表单后,可以及时获取收集到的表单数据。

对于需要提交表单信息的小程序,可以推送表单信息,表单的格式必须是键值对。

注意事项:**表单的键和值都必须是字符串**。
```js
  var form = { 
    姓名: "张三", 
    手机: "13512345678" 
  };
  fiboSDK.saveFormInfo(form);
```

#### 2.6 处理 url 参数

使用场景:用户在分享时,处理分享链接,添加或修改 path 中 lc, sui 参数。
注意事项:在调用此方法前,一定要保证已经成功的调用 fiboSDK.initApp 接口完成了SDK的初始化。
- lc 从 0 开始(int) 层级参数
- sui 分享来源者的 viewid,由 sdk 从小程序 path 中获取
- 小程序页面 path 中请不要使用 lc、sui、cnl、cnltype、saudid、stepid、actid 来设置自定义参数; 

例如:在处理作品的分享链接时

```js
var link = fiboSDK.dealUrl(sharePath);
// 设置为分享链接
// ...
```
#### 2.7 翻页事件
使用场景:小程序内切换页面时。
使用 switchPage(currentPage, targetPage, totalPage) 接口。
其中 currentPage 当前页码,targetPage 目标页码,totalPage 总页数
```js
Page({
  // 如切换页面
  changePage: function () {
    fiboSDK.switchPage(1, 2, 10);
  },
});
```
#### 2.8 关闭事件
使用场景:小程序关闭或最小化、隐藏时。
使用 leaveApp() 接口。
```js
App({
  onHide() {
    fiboSDK.leaveApp();
  },
});
```
#### 2.9 上报手机号码
使用场景:小程序内自动获取手机号码时。
使用 getPhoneNumber({ phoneNumber, title }) 接口。
其中 phoneNumber 手机号码,title 页面标题
```js
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>
```
```js
Page({
  getPhoneNumber(e) {
    // 解密 e.detail.encryptedData 数据可以得到手机号码
    fiboSDK.getPhoneNumber({
      phoneNumber: "13666666666",
      title: "页面标题",
    });
  },
});
```
#### 2.10 上报自定义事件
使用场景:当系统预设的事件及事件属性不满足数据采集需求时,可以自定义采集的事件和事件属性,比如:自定义购买、加入购物车等事件,及加购事件对应的商品名称、商品价格等
注意事项:
1. 自定义事件的事件 ID 必须以c_开头,除c_外最多 30 个字符,只能是数字和字母,不区分大小写。
2. 属性 id 必须以c_开头,除c_外最多 30 个字符,只能是数字和字母,不区分大小写。事件属性的数据类型包括:文本型、数值型、布尔型、日期型
使用 pushCustomEvent(eventName, eventArgs) 接口。
其中 eventName 事件 ID,eventArgs 自定义属性对象
```js
Page({
  onLoad: function () {
    const eventName = "c_eventName";
    const eventArgs = { c_attribute1: 123456, c_attribute2: "自定义属性" };
    fiboSDK.pushCustomEvent(eventName, eventArgs);
  },
});
```