概述

多端支持可以让开发者开发一次,同一套代码不做任何改动可以发布到蚂蚁开放生态的各个端(支付宝和钉钉),节约开发成本,同时触达更多的用户群体。

整体框架

开发者使用同一套代码,通过IDE在不同环境下进行构建,然后上传并发布在不同的端上:

image.png

所有的端使用同一套小程序框架(点此查看详情),语法、基础API和基础组件都是一样的。API使用通用的前缀my,例如:

  1. my.navigateTo({
  2. url: 'new_page?count=100'
  3. })

不同的端在小程序通用框架基础上会有自己的扩展,这样开发者可以使用各端特色能力。不同的端API在my的后面加上不同的扩展对象:支付宝为my.ap,钉钉为my.dd。在运行时,非当前端的扩展对象为空(undefined),例如在支付宝端里,my.dd为空;在钉钉端里,my.ap为空。(注:为了保持兼容,支付宝my.ap对象的扩展API在my里面可以继续调用,另外不同端由于发布节点不同,更新框架的时机也不一样,这样有些新增的通用API在某个时刻可能暂时未支持,可以用my.canIUse来进行判断)。

支付宝端扩展API示例(小程序唤起支付):

  1. my.ap.tradePay({
  2. orderStr: 'myOrderStr', //完整的支付参数拼接成的字符串,从服务端获取
  3. success: (res) => {
  4. my.alert({
  5. content: JSON.stringify(res),
  6. });
  7. },
  8. fail: (res) => {
  9. my.alert({
  10. content: JSON.stringify(res),
  11. });
  12. }
  13. });

钉钉端扩展API示例(发起DING):

  1. my.dd.createDing({
  2. users : ['100', '101'],// 用户列表,工号
  3. type: 1, // 附件类型 1:image 2:link
  4. alertType: 2, // 钉发送方式 0:电话, 1:短信, 2:应用内
  5. alertDate: {"format":"yyyy-MM-dd HH:mm","value":"2015-05-09 08:00"},
  6. attachment: {
  7. images: [''],
  8. }, // 附件信息
  9. text: '', // 正文
  10. bizType :0, // 业务类型 0:通知DING;1:任务;2:会议;
  11. confInfo:{
  12. bizSubType:0, // 子业务类型如会议:0:预约会议;1:预约电话会议;2:预约视频会议;(注:目前只有会议才有子业务类型)
  13. location:'某某会议室' , //会议地点;(非必填)
  14. startTime:{"format":"yyyy-MM-dd HH:mm","value":"2015-05-09 08:00"},// 会议开始时间
  15. endTime:{"format":"yyyy-MM-dd HH:mm","value":"2015-05-09 08:00"}, // 会议结束时间
  16. remindMinutes:30, // 会前提醒。单位分钟-1:不提醒;0:事件发生时提醒;5:提前5分钟;15:提前15分钟;30:提前30分钟;60:提前1个小时;1440:提前一天;
  17. remindType:2 // 会议提前提醒方式。0:电话, 1:短信, 2:应用内
  18. },
  19. taskInfo:{
  20. ccUsers: ['100', '101'], // 抄送用户列表,工号
  21. deadlineTime:{"format":"yyyy-MM-dd HH:mm","value":"2015-05-09 08:00"} , // 任务截止时间
  22. taskRemind:30// 任务提醒时间,单位分钟0:不提醒;15:提前15分钟;60:提前1个小时;180:提前3个小时;1440:提前一天;
  23. },
  24. success:function(res){
  25. /*
  26. {
  27. "dingId": "1_1_a09f167xxx",
  28. "text": "钉正文内容",
  29. "result": true
  30. }
  31. */
  32. },
  33. fail:function(err){
  34. }
  35. });

平台入驻

目前支付宝和钉钉各有自己的开放平台,需要在不同的平台分别入驻和创建应用:支付宝端:点击这里了解详情。钉钉端:点击这里了解详情

创建项目时选择应用类型

创建项目时,开发者根据自己的应用场景,在不同的端下选择不同的应用类型:

image.png

切换应用类型

应用类型是和端关联的。同一套代码,开发者可以在研发时切换为其它端的应用类型,这时模拟器和真机预览自动适配开发者当前所选的端和应用类型,这样开发者可以在不同的端进行模拟和预览:

image.png

真机预览

不同端的真机预览在操作上是一致的,但需要使用当前端app扫码进行预览:

image.png

构建上传

不同端的上传在操作上是一致的,上传到当前端对应的开放平台:

image.png

发布上线

上传后,不同端分别到相应的开放平台提交发布申请,审核后即可上线。

原文: https://docs.alipay.com/mini/multi-platform/