IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【小程序迁移】微信小程序迁移到支付宝记坑 -> 正文阅读

[移动开发]【小程序迁移】微信小程序迁移到支付宝记坑

文档控制台网址汇总

不像微信的全部集中在一个控制台,一份文档,支付宝小程序更像是拼凑出来的东西,小程序一份文档一个控制台,云开发又一个,还不太好找,因此把链接汇集于此。

  1. 小程序开发文档:小程序本地API的文档。
  2. 小程序云开发文档:小程序云开发API的文档。
  3. 小程序开放平台:相当于微信公众平台,在这里你可以管理小程序的版本、信息、设置体验版、提交审核等。
  4. 小程序云:管理云开发资源,包括云函数、云文件、数据库等。
  5. 阿里云OpenAPI开发者门户:用于设置云函数超时时间,内存大小,数据库导入导出、云存储等的网站,不提交工单我都不知道有这东西。
  6. 提交工单:有问题直接提问,回复还是挺迅速的。
  7. EMAS平台:IDE云开发工具跳转,没什么用,可用作跳板打开小程序云。

前言

最近微信小程序云开发开始收费,从免费直接涨到了19.9元/月,论割韭菜还得是你腾讯,我的小程序尽管用的人不多,但那都是心血之作啊。为了学习微信小程序开发,把大部分的接口和API都调用过了,个人最多只能接受涨到5块/月,没办法,只能上微信的友商支付宝看看了。

微信云开发计费调整公告官方
微信团队07-04
各位微信云开发用户:
感谢大家一直以来对微信云开发的支持。由于云计算成本整体上升,为了继续为各位用户提供稳定可靠的服务,微信云开发将于 2022 年 08 月 18 日,对计费方式进行如下变更,部分指标价格将有所上浮。
新计费模式下,新用户免费使用 1 个月后,统一使用 “基础套餐+按量付费” 模式:购买带有一定配额的基础套餐后,超出套餐配额部分再按照实际使用量付费。
微信云开发涨价后资费

研究了一下,发现支付宝平台一样提供小程序云开发功能,并且免费!那就每天的空闲时间迁移一下吧。于是开始了我的微信小程序《通信人的工具箱》的迁移工作,有兴趣的朋友可以两边的都试一下看看区别,支付宝的可能还在审核。
然后就开始了迁移工作,并把需要手动修改的部分都记录了下来,方便后来的朋友参考。为了熟悉支付宝开发,我没有使用官方的antmove小工具进行迁移。小工具我试用了一下,发现里面使用了一大堆的JS代码做装饰器,把wx.装饰成my.,降低了程序的执行效率,提高了代码包的体积,也不利于学习,所以笔者手动迁移代码。
需要注意的是:下述的仅仅为我的小程序用到的接口需要修改的地方,并不是所有的区别。

本地区别

仅企业可用的功能

  1. 录音,详见:my.getRecorderManager
  2. 粘贴板,详见:my.setClipboard

第一点就很难受了,😟,相当于小程序的声音频谱分析功能无法迁移了。第二点是真的不能理解,我就是往用户的粘贴板写入处理结果,结果就不行。

限制功能

  1. 音乐播放器不支持播放本地的或者云存储的音乐,只能播放调用录音接口或者上传到优酷的音频文件,详见:音频播放 API 使用说明

直接使得小程序的“信号发生器”功能无法迁移,心凉了半截,不过为了学习,还是接着往下看吧。

插件区别

  1. 基础库2.0下不支持echarts数据绘图插件,官方建议用@AntV/F2代替。

云开发API区别

  1. 云文件的云端路径无法指定,不支持创建文件夹。
  2. 云文件只可以存储指定类型格式的文件。详见:uploadFile
  3. 云函数超时时间最大只能设置10s,在一些等待接口响应的业务很容易超时。

需要做的代码变更

xml部分

  1. 控件标签 bindtap -> onTap
  2. 控件标签 bindchange -> onChange
  3. 控件标签 bindinput -> onInput
  4. 渲染控制 wx: -> a:
  5. image控件: bindtouchend -> onTap
  6. canvas控件:canvas-id -> id
  7. input控件:要添加controlled='true’标签,否则可能不受setData控制
  8. textarea控件:可以慎重添加controlled='true’标签,但是有坑,用了可能会出现用户无法输入的情况。

CSS部分

  1. 不支持CSS样式暗夜模式的识别与匹配,具体为微信端的“@media (prefers-color-scheme: dark)”标签。
  2. page注意p要小写,否则样式不生效,微信无所谓。

JS部分

  1. my.showLoading不支持mask参数,实测默认是有遮罩的。
  2. my.showLoading的title参数名替换为content,详见:my.showLoading
  3. wx.showModal -> my.confirm ,且不支持showCancel参数。
  4. my.showToast没有icon参数,取而代之的是type,title参数名替换为content,详见:my.showToast
  5. 支付宝的弱社交功能,Page内没有onShareAppMessage和onShareTimeline,只有onShareAppMessage,详见:页面运行机制
  6. 表单元素查询不能使用this.selectComponent。
  7. wx.setNavigationBarTitle -> my.setNavigationBar,详见:my.setNavigationBar

自定义组件

  1. components不支持在调用它的页面中selectComponent或createSelectorQuery获取实例对象,需要在components的ref()中返回,在宿主的xml中使用ref标签定义监听函数,在JS的对应的监听函数中获取,详见:ref 获取组件实例
  2. 开发时遇到components的methods中的this指针没有setData方法,已经确定this指向没有改变,按照官方文档也不行。最后含有setData方法的this指针通过组件的didmount()生命周期的监听函数中的this获取。

比微信好的地方

  1. 云函数调用似乎没有限制参数和返回结果的数据长度,我用b64编码一张图片作为参数调用云函数,云函数返回一张图片,居然成功了。在微信端会提示参数过长,得先把图片上传云文件,云函数读取云文件图片读取后把结果保存到云文件,本地在下载处理结果。
  2. 保存图片到用户相册无需一长串的权限申请,直接调用my.saveImageToPhotosAlbum即可,就是不支持模拟器调试。
    my.saveImageToPhotosAlbum({
      filePath:that.data.output_image_src,
    }).then(e=>{
      my.showToast({
        content:'保存成功',
        type:'success',
      });
    }).catch(e=>{
      console.error(e);
      my.showToast({
        content:'保存失败,请用真机测试相册保存功能',
        type:'fail',
      })
    });
  1. 数据库更新支持"没有则创建"的选项,这个比微信要好,详见:updateOne
  2. 获取用户的唯一id不需要通过云函数,只需要调用授权函数即可。
  const res = await my.serverless.user.authorize({
    authProvider: "alipay_openapi"
  });
  if (res.success) {
  	//获取用户UUID
    my.serverless.user.getInfo().then(user => {
      console.log(user);
      //设为全局对象
      that.globalData.user = user.result.user;
  	}
  }

附录一些常用的代码段

云函数

//云端定义
module.exports = async (ctx) => {
  const {a, b} = ctx.args;
  return a + b;
}
//同步式调用
const { result } = await mpserverless.function.invoke('sum', { a: 1, b: 1 });
//异步式调用
mpserverless.function.invoke('sum', { 
	a: 1, b: 1 
}).then(console.log).catch(console.error);

数据库

//更新一条数据,不存在则创建
mpserverless.db.collection('users').updateOne({
    age: {$gt: 18}
}, {$set: {
    name: "Smith",
    age: 22,
    }
}, {
    upsert: true,
})
.then(res => {})
.catch(console.error);

云文件

//上传一个文件,无法指定云端路径
mpserverless.file.uploadFile({
      filePath: path,
    })
	.then(res => {})
	.catch(err => {});

后语

经过这次迁移,我知道微信涨价的底气在哪了,支付宝的小程序云开发感觉就是个半成品。支付宝的小程序大部分是一些点单的,交易的,其它类别用的人并不多,所以开发的除了商业需要,基本就像我一样是纯粹学习的。微信平台则用户众多,社交属性强大,这些更提供了它涨价的基础。现在19.9元/月还能勉强承受,后面变成39我估计就下线小程序云功能了。。。看到这了,不点个赞再走嘛?

后记

本部分用于记录小程序上线前的log,本以为小程序可以通过顺利审核,但可能支付宝比较谨慎,或者刚好赶上敏感时期,居然被驳回了,于是把该过程按时间线记录于此,以供参考。

  1. @2022/10/14 晚上:提交初次审核,小程序本体与信息会一同进行审核。
  2. @2022/10/19 11:53:被驳回,原因如下:

1、当前小程序具有违规情形,在可搜索,可编辑内容上没有对涉政敏感信息做特殊防控,涉及一些特殊人名或政治相关图片信息透出,希望商家自行排查。同时也可申请接入支付宝开放能力,详见:https://www.yuque.com/docs/share/88a1c6f2-1839-4028-ac5c-b1537c08f165?#|应用内容

打开链接发现是《内容风险识别接口服务·语雀》,意思就是要接入它家的内容审核平台呗,,该接口目前是邀约制,需要把小程序appid和名称发送到经理开通。
往下查看了接口的API,发现图片居然不能B64解码后发过去,而要上传图片的urls,还好查看文档后发现小程序云文件支持公开链接,或许可以试试。
3. @2022/10/21 11:09: 经过一番思想纠结后,其实是临近毕业,繁杂事务多了起来,等偷得半日闲时终于想起这事了,决定还是开通《内容风险识别接口服务》试试,发送了开通申请。
4. @2022/10/22 14:06: 文档太烂,经过一番调试与摸索,接入了《内容风险识别接口服务》并提交了第二次审核,接入过程已记录到我的文章《【小程序·开发】支付宝小程序接入<内容风险识别服务>流程指南》,欢迎参考。
5. @2022/10/22 17:19:支付宝小程序过审啦!!!
小程序过审通知邮件

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:26:57  更:2022-10-22 21:28:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 4:07:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码