数商云MA 小程序端sdk
- 触发功能
- 投放功能
- 安装依赖:进到项目根目录运行以下命令
npm install --save shushangyun-masdk
- 使用用微信开发者工具点击【工具】菜单中的【构建npm】 相关文档请查看:https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html
提示:如果提示找不到目录的错误,可以先在项目根目录运行
npm init
命令
以上步骤如果正常执行,则可以看到项目会多了一个 miniprogram_npm/shushangyun-masdk
的文件夹,结构如下:
|--shushangyun-masdk
| |--components
| |--banner.js
| |--banner.json
| |--banner.wxml
| |--banner.wxss
| |--trigger.js
| |--trigger.json
| |--trigger.wxml
| |--trigger.wxss
| |--pages
| |--webview.js
| |--webview.json
| |--webview.wxml
| |--webview.wxss
| |--inxex.js
sdk包里有两个
Comonent
: banner和trigger,还有一个Page
:webview
index.js是sdk的核心文件
可以查看miniprogram_dev目录里的demo,注意:demo中的app.json文件中的配置与正式使用的目录结构不同,正式使用请参考下面的配置
1.在项目的app.json
中引用组件和配置页面
"pages":[ //在pages数组中增加下面一行
...
"miniprogram_npm/shushangyun-masdk/pages/webview"
],
"usingComponents": { //在usingCompnents对象中加下以下两行
...
"banner":"miniprogram_npm/shushangyun-masdk/components/banner",
"trigger":"miniprogram_npm/shushangyun-masdk/components/trigger"
}
2.初始化sdk, 建议在项目的app.js
中引入sdk核心文件并初始化(即一打开小程序就初始化)
//引入sdk文件,并把它加进App对象中。在其他页面中想要引入sdk,可以同样使用以下方式
const masdk = require('shushangyun-masdk');
App({
data: {},
onLaunch: function() {
//初始化sdk,应该在小程序打开的时候就初始化。
masdk.init({
appKey:"",//应用key,必填
appSecret:"",//应用secret,必填
debug:true,//是否开启debug模式,选填,默认为fasle
domain:null,//服务器地址,一般不用配置此项,此项只针对私有化部署客户 webviewUrl:null,//用来打开活动的页面,选填,默认值是组件提供的webview页面:miniprogram_npm/shushangyun-masdk/pages/webview,如果有需要,此项指针对需要使用自己定义的页面去打开活动的开发者
})
//登录一个测试用户
//上传用户信息,这个方法应该在用户登录之后调用,此例子直接在onLaunch方法里调用了。正式使用时应该在登录用户(获取到用户信息)时使用
masdk.infosUser({
userid: "user12345",
sex: "男",
province: "广东省"
});
}
})
3.使用触发功能(trigger)和投放功能(banner)
在需要用到触发功能的页面中引入sdk,比如demo页面。
demo.js代码:
const masdk = require('shushangyun-masdk');
Page({
data: {
param: {},//触发返回的数据
debug: [],
swiperOptoins: { //投放组件轮播图的配置,配置项请参考小程序的swiper组件
indicatorDots: true,
displayMultipleItems: 1
}
},
onShow: function () {
},
triggerDemo(){
//调用sdk的trigger方法
masdk.trigger({
userid: '1', //触发用户id
eventKey: 'datu'//事件key
}).then((res)=> {
this.setData({
param: res.data //触发成功后,把返回的数据赋值给param参数(wxml文件引入trigger组件传入此参数)
})
})
}
})
demo.wxml代码
<button size="mini" type="primary" plain="true" bindtap="triggerDemo">触发Demo</button>
<!--banner组件设置的地方就会显示投放的数据-->
<banner position-key="abc" swiper-options="{{swiperOptoins}}" default-image="/public/down.png"/>
<!--引入这个trigger组件显示触发图标-->
<trigger param="{{param}}"/>
除上了面的用法之外,某些开发者需要个性化的处理投放和触发结果。这种情况可以直接使用sdk的方法来获取投放和触发的数据,然后自行处理数据。
1.触发接口的调用:
//和普通用法基本一致。只是不使用sdk提供的trigger组件。
masdk.trigger({
userid: '1', //触发用户id
eventKey: 'datu'//事件key
}).then((res)=> {
//在这里拿到res.data后,自行处理
})
2.投放接口的调用:
masdk.banner({
userid: '1', //触发用户id
positionKey: 'banner'
}).then((res)=> {
//在这里拿到res.data后,自行处理
})
方法名 | 参数 | 类型 | 是否必填 | 说明 |
init | appKey | string | 是 | 应用key |
appSecret | string | 是 | 应用secret | |
debug | boolean | 否 | 是否开启debug模式,如果设置为true,调用接口时,接口返回的数据中会带有debug字段,提供一些调试信息 | |
domain | string | 否 | 服务器域名。针对私有部署商家指向到自己的服务器,一般商家不用设置 | |
init() 方法用于初始化sdk,参数是sdk的相关配置。因应在使用sdk其他功能前调用 | ||||
infosUser | userid | string | 是 | 用户的唯一标识,支持数字加字母组合的字符串,不支持中文和特殊字符等 |
其他 | string,int等 | 否 | 用户表中的其他字段:比如email,mobile等等,具体字段,每个商家都可能不同,根据创建的用户表字段来定 | |
infosUser() 方法用来登录当前用户,并把当前用户同步到ma系统。应该在小程序获取到用户数据时调用 | ||||
trigger | userid | string | 否 | 用户唯一标识,如果在调用triger方法前调用过infosUser,则可以不传此参数 |
eventKey | string | 是 | 事件key | |
conditions | object | 否 | 触发条件的参数,key-value格式。例如:{"age":18,"price":100} | |
trigger() 方法用来触发相关活动,在需要的地方调用。比如登录成功后,支付成功后等等 | ||||
banner | userid | string | 否 | 用户唯一标识,如果在调用triger方法前调用过infosUser,则可以不传此参数 |
positionKey | string | 是 | 位置key | |
conditions | object | 否 | 投放条件的参数,key-value格式。例如:{"age":18,"price":100} | |
banner() 一般情况下不需要直接调用本方法,直接使用banner组件即可 |