多端开发 是指使用支付宝小程序提供的各种接口,来开发小程序并发布到各个端使用。也就是说可以让开发者开发一次支付宝小程序,同一套代码不做任何改动就可以通过 ide 发布到各个端,同时触达更多的用户群体,节约了开发成本。当前支付宝小程序支持的端分类为:小程序、小程序插件,每个类别支持相应的端,需要下载 小程序开发者工具(ide v1.17 或更高版本) 界面查看。当前支持的端如下图查看 ide 界面:
- 在 ide 初始页面选择一种小程序项目类别,点击右侧界面的 “ ” 新建项目。
- 选择需要开发的端(可同时选择一个或多个端,选择多个端后在开发过程中可随时切换端进行测试)。
需要登录 > 进入对应小程序详情页 > 其他 > 多端发布支持 选择开通所需端。
说明:
- 支付宝开放平台默认支持开通的端请以开发平台实际情况为准。
- 支付宝本身除了支付宝小程序之外还支持小程序的 iot 端发布,小程序通过发布到 iot 端(如:蜻蜓设备)为商家提供门店数字化经营凯发app官方网站的解决方案。
开发者使用同一套代码,通过 ide 在不同环境下进行构建,然后上传并发布在不同的端上。
所有的端使用同一套小程序框架(),语法、基础 api 和基础组件都是一样的。api 使用通用的前缀 my
,例如:
//.js my.navigateto({ url: 'new_page?count=100', });
不同的端在小程序通用框架基础上会有自己的扩展,这样开发者可以使用各端特色能力。不同的端 api 在 my
的后面加上不同的扩展对象,如:支付宝为 my.ap
,钉钉为 my.dd
。在运行时,非当前端的扩展对象为空(undefined
),例如在支付宝端里,my.dd
为空;在钉钉端里,my.ap
为空。
注意: 为了保持兼容,支付宝my.ap
对象的扩展 api 在my
里面可以继续调用,另外不同端由于发布节点不同,更新框架的时机也不一样,这样有些新增的通用 api 在某个时刻可能暂时未支持,可以用 来进行判断。
支付宝端扩展 api 示例(小程序唤起支付):
//.js my.ap.tradepay({ orderstr: 'myorderstr', //完整的支付参数拼接成的字符串,从服务端获取 success: res => { my.alert({ content: json.stringify(res), }); }, fail: res => { my.alert({ content: json.stringify(res), }); }, });
钉钉端扩展 api 示例(发起 ding):
//.js 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) {}, });
目前支付宝和钉钉各有自己的开放平台,需要在不同的平台分别入驻和创建应用。具体支持的端以实际页面显示为准。
- 支付宝端:点击这里了解详情。
- 其中口碑掌柜、uc、quark、天猫精灵 app、淘票票、包裹侠、优酷、橙运、点我达、阿里数据、驿站掌柜、小 yi 工作台、溪鸟、菜鸟裹裹均使用支付宝账号登录,点击这里了解详情。
- 淘宝端:。
- 钉钉端:。
- 天猫精灵端:。
- 支付宝 iot 端:。
- 阿里车端:。
- 阿里云端(工具应用):。
- 口碑端:。
- mpaas 端:。
创建项目时选择应用类型
创建项目时,开发者根据自己的应用场景,选择不同的端类型。
- 在 ide 初始页面选择一种小程序项目类别,点击右侧界面的 新建项目。
- 选择需要开发的端(可同时选择一个或多个端,选择多个端后在开发过程中可随时切换端进行测试)。
切换应用类型
应用类型是和端关联的。同一套代码,开发者可以在研发时切换为其它端的应用类型,也可以直接增加或删除端再进行切换。
此时模拟器和真机预览自动适配开发者当前所选的端和应用类型,这样开发者可以在不同的端进行模拟和预览:
真机预览
不同端的真机预览在操作上是一致的,但需要使用当前端 app 扫码进行预览。
互投评估
互投评估是小程序开发完成后切换为其他端应用时用于检测当前代码中所有的 jsapi 在当前运行的小程序目标产品端,是否支持。
操作方式:在最新版 ide(v1.17 或更高版本)项目页面左侧工具栏点击 代码扫描 工具按钮,点击 互投评估工具,点击 发起扫描评估任务,工具即可查找出代码中 jsapi 对于所选端应用的支持情况。
说明:当前仅 支付宝小程序 和 高德小程序 支持互投评估功能。
构建上传
不同端的上传在操作上是一致的,上传到当前端对应的开放平台:
发布上线
上传后,不同端分别到相应的开放平台提交发布申请,审核后即可上线。