概述
多端支持可以让开发者开发一次,同一套代码不做任何改动可以发布到蚂蚁开放生态的各个端(支付宝和钉钉),节约开发成本,同时触达更多的用户群体。
整体框架
开发者使用同一套代码,通过IDE在不同环境下进行构建,然后上传并发布在不同的端上:
所有的端使用同一套小程序框架(点此查看详情),语法、基础API和基础组件都是一样的。API使用通用的前缀my
,例如:
my.navigateTo({
url: 'new_page?count=100'
})
不同的端在小程序通用框架基础上会有自己的扩展,这样开发者可以使用各端特色能力。不同的端API在my
的后面加上不同的扩展对象:支付宝为my.ap
,钉钉为my.dd
。在运行时,非当前端的扩展对象为空(undefined
),例如在支付宝端里,my.dd
为空;在钉钉端里,my.ap
为空。(注:为了保持兼容,支付宝my.ap
对象的扩展API在my
里面可以继续调用,另外不同端由于发布节点不同,更新框架的时机也不一样,这样有些新增的通用API在某个时刻可能暂时未支持,可以用my.canIUse来进行判断)。
支付宝端扩展API示例(小程序唤起支付):
my.ap.tradePay({
orderStr: 'myOrderStr', //完整的支付参数拼接成的字符串,从服务端获取
success: (res) => {
my.alert({
content: JSON.stringify(res),
});
},
fail: (res) => {
my.alert({
content: JSON.stringify(res),
});
}
});
钉钉端扩展API示例(发起DING):
my.dd.createDing({
users : ['100', '101'],// 用户列表,工号
type: 1, // 附件类型 1:image 2:link
alertType: 2, // 钉发送方式 0:电话, 1:短信, 2:应用内
alertDate: {"format":"yyyy-MM-dd HH:mm","value":"2015-05-09 08:00"},
attachment: {
images: [''],
}, // 附件信息
text: '', // 正文
bizType :0, // 业务类型 0:通知DING;1:任务;2:会议;
confInfo:{
bizSubType:0, // 子业务类型如会议:0:预约会议;1:预约电话会议;2:预约视频会议;(注:目前只有会议才有子业务类型)
location:'某某会议室' , //会议地点;(非必填)
startTime:{"format":"yyyy-MM-dd HH:mm","value":"2015-05-09 08:00"},// 会议开始时间
endTime:{"format":"yyyy-MM-dd HH:mm","value":"2015-05-09 08:00"}, // 会议结束时间
remindMinutes:30, // 会前提醒。单位分钟-1:不提醒;0:事件发生时提醒;5:提前5分钟;15:提前15分钟;30:提前30分钟;60:提前1个小时;1440:提前一天;
remindType:2 // 会议提前提醒方式。0:电话, 1:短信, 2:应用内
},
taskInfo:{
ccUsers: ['100', '101'], // 抄送用户列表,工号
deadlineTime:{"format":"yyyy-MM-dd HH:mm","value":"2015-05-09 08:00"} , // 任务截止时间
taskRemind:30// 任务提醒时间,单位分钟0:不提醒;15:提前15分钟;60:提前1个小时;180:提前3个小时;1440:提前一天;
},
success:function(res){
/*
{
"dingId": "1_1_a09f167xxx",
"text": "钉正文内容",
"result": true
}
*/
},
fail:function(err){
}
});
平台入驻
目前支付宝和钉钉各有自己的开放平台,需要在不同的平台分别入驻和创建应用:支付宝端:点击这里了解详情。钉钉端:点击这里了解详情。
创建项目时选择应用类型
创建项目时,开发者根据自己的应用场景,在不同的端下选择不同的应用类型:
切换应用类型
应用类型是和端关联的。同一套代码,开发者可以在研发时切换为其它端的应用类型,这时模拟器和真机预览自动适配开发者当前所选的端和应用类型,这样开发者可以在不同的端进行模拟和预览:
真机预览
不同端的真机预览在操作上是一致的,但需要使用当前端app扫码进行预览:
构建上传
不同端的上传在操作上是一致的,上传到当前端对应的开放平台:
发布上线
上传后,不同端分别到相应的开放平台提交发布申请,审核后即可上线。