已经使用uni-app开发并发布了一个跨端小程序啦,嘻嘻嘻!
🧐 须知
- 这是一份详细的小程序各特性各端真机调研对比报告
- 测试机:iPhone7 plus IOS 12.4.1
- 客户端:微信7.0.5,支付宝10.1.72,今日头条7.4.0,抖音8.1.0,QQ8.1.5.461
- 🚫️ 百度小程序只有商户才能注册,个人开发者无法注册,没有appid功能受限(如百度开发者工具无法使用预览功能导致无法真机测试),所以暂时不测百度小程序
用户信息授权
- 授权方式:
- 授权信息清除方式:
- 【微信】删除小程序即可清除授权信息
- 【支付宝】我的-设置-安全设置-账号授权
- 【今日头条】我的-系统设置-清除缓存。【抖音】未找到清除方法
- 【QQ】未找到清除方法(据说开放小程序的QQ版本尚未灰度发布)
小程序登录
- 【微信】wx.login
- 【QQ】qq.login 基本同微信
- 【支付宝】my.getAuthCode
- 【头条】大致同微信,未找到模型文档
分享
- 行为:
- 【微信】直接调起聊天对话列表进行选择
- 【QQ】调起分享渠道列表:
- QQ好友
- QQ空间
- 点右上角三个点调起的列表还有微信好友和朋友圈两个项,在微信中打开qq小程序是走中间页
- 【支付宝】调起分享渠道列表:
- 支付宝朋友圈
- 支付宝联系人
- 微信好友|QQ好友(保存支付宝生成的分享图片后打开支付宝扫码)
- 钉钉好友(中间页自动打开支付宝小程序,中间页不自动关闭)
- 新浪微博(中间页自动打开支付宝小程序,和钉钉一个中间页)
- 【头条】调起分享渠道列列表:
- 转发到头条
- 微信好友|微信朋友圈(生成口令,复制口令后打开今日头条弹出识别弹窗)
- QQ|QQ空间(打开中间页,点击打开(QQ空间点了没反应),出现另一个中间页,自动打开AppStore,再点打开调起今日头条,最后居然没打开那个小程序🥴!!!)
- 【抖音】调起分享渠道列列表:
- 多闪好友
- 微信好友|微信朋友圈|QQ好友|QQ空间(生成抖音码图片,打开抖音扫码识别)
- 【头条】webview的转发暂未支持:
- 【今日头条】能转发,但转发的链接点击后总是提示加载失败!也可能是小程序未发布的原因,扫uni-app官方demo进行 webview转发是能正常打开的
- 【抖音】不支持转发,右上角胶囊只有一个关闭按钮
跳转到其他小程序
- 【微信】支持(navigateToMiniProgramAppIdList + navigateToMiniProgram)
- 【QQ】支持
- 【头条】支持(navigateToMiniProgramAppIdList + navigateToMiniProgram)
- 【支付宝】支持(后台配置 + navigateToMiniProgram)
🚫️ ️QQ,支付宝和头条未真机验证,因为须要一个其他小程序的appId
客服会话
- 【微信】支持(button open-type=“contact”)
- 【QQ】支持,须用户加一个客服机器人为好友
- 【支付宝】支持(contact-button)
- 【头条】不支持。
支付
🚫 ️QQ,支付宝和头条未真机验证,因为支付接口只有商户才有权限
地理位置
- 【微信】支持(须在app.json中配置permission字端),用户拒绝授权后再次调用不再出询问弹窗,而是直接走fail回调
- 【QQ】支持。真机行为同微信。QQ开发者工具上拒绝授权再次调用仍会出询问弹窗
- 【头条】支持,同微信
- 【支付宝】支持,用户拒绝授权后再次调用继续出询问弹窗
视频播放
复制文字
- 行为:
- 【微信】【QQ】复制成功后有一个默认的复制成功toast且无法控制
- 【支付宝】【头条】复制成功后没有toast
- 权限:
- 【支付宝】my.setClipboard 此功能仅支持企业支付宝账号。实际情况是:在IDE上个人账号是可以复制的,但在真机上调用就会报
ERROR 4: 无权调用该接口
错误 - 【微信】【QQ】【头条】无限制
- 【支付宝】my.setClipboard 此功能仅支持企业支付宝账号。实际情况是:在IDE上个人账号是可以复制的,但在真机上调用就会报
打电话
【微信】【QQ】【支付宝】【头条】都支持
收货地址
- 【微信】支持
- 【QQ】不支持
- 【头条】支持(实测【今日头条】支持,【抖音】不支持)
- 【支付宝】支持。但仅商户才有使用权限。且目前 my.getAddress 接口暂不支持在开发者工具调试和真机调试,仅支持真机预览
相机/图片相关
-
- 【微信】【QQ】支持
- 【支付宝】支持。IDE上会弹一个相册授权询问弹窗,真机上并没有弹窗
- 【头条】支持。但会弹出两个询问弹窗(相机权限,相册权限)
-
- 【微信】【QQ】支持
- 【支付宝】支持。IDE上会弹一个相册授权询问弹窗,真机上并没有弹窗。须调用 my.chooseVideo(文档未找到),uni.chooseVideo会报错
- 【头条】支持。但会弹出两个询问弹窗(相机权限,相册权限)
- ⚠️chooseVideo的maxDuration选项在【微信】和【支付宝】是只限制拍摄时长,在【头条】是同时限制相册选择视频时长和拍摄时长
-
【微信】【QQ】【支付宝】【头条】都支持
-
- 【微信】【QQ】【头条】支持,弹窗仅询问一次
- 【支付宝】tt.saveImageToPhotosAlbum 在IDE上报错
tt.saveImageToPhotosAlbum is not a function
,在真机上报错无权调用该接口
,文档未提及,猜测是仅商户可用,且不支持在开发者工具调试和真机调试,仅支持真机预览
接口返回值差异
// 支付宝
{
'nickName': 'test',
'gender': 'm',
'city': '北京市',
'province': '北京'
'countryCode': 'CN',
'avatar': 'https:\/\/tfs.alipayobjects.com\/images\/partner\/T1_38eXnRiXXXXXXXX',
'code': '10000',
'msg': 'Success',
}
// 微信
{
'nickName': 'test',
'gender': 1,
'city': 'Xinxiang',
'province': 'Henan',
'country': 'China',
'avatarUrl': 'https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTJCzUl7llykqrMLicpULvVfkbbL2bVDua4tI8ibjxq5E9ib1oPW3F4QazLIUdS2GsFMAGnrWSYjN05Ew/132'
'language': 'zh_CN',
}
// QQ
{
'nickName': 'test',
'gender': 1,
'city': '新乡',
'province': '河南'
'country': '中国',
'avatarUrl': 'https://thirdqq.qlogo.cn/qqapp/1108100302/D64611B2AE700324589177922EEBA5F4/100',
'language': 'zh_CN',
}
// 头条系(今日头条,抖音,皮皮虾,西瓜视频分别取各自用户信息)
{
'nickName': 'test',
'gender': 1,
'city': '新乡市',
'province': '河南省'
'country': '中国',
'avatarUrl': 'http://wx.qlogo.cn/mmhead/Q3auHgzwzM5uibSytRCXFs0Y3xSpdy12thibjWIoMrBIsf7FiaPp2ibnFg/0',
'language': '',
}
// 微信 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html
[
'scope.userInfo', // 用户信息
'scope.userLocation', // 地理位置
'scope.address', // 通讯地址
'scope.record', // 录音功能
'scope.camera', // 摄像头
'scope.writePhotosAlbum', // 保存到相册
'scope.userLocationBackground', // 后台定位
'scope.invoiceTitle', // 发票抬头
'scope.invoice', // 获取发票
'scope.werun', // 微信运动步数
]
// 头条 https://developer.toutiao.com/dev/miniapp/uQjMy4CNyIjL0IjM
[
'scope.userInfo', // 用户信息
'scope.userLocation', // 地理位置
'scope.address', // 通讯地址
'scope.record', // 录音功能
'scope.camera', // 摄像头
'scope.album', // *保存到相册*
]
// 支付宝 https://docs.alipay.com/mini/api/xmk3ml#-1
[
'userInfo', // 用户信息
'location', // 地理位置
'audioRecord', // 录音功能
'camera', // 摄像头
'album', // 保存到相册
]
// QQ https://q.qq.com/wiki/develop/game/frame/open-ability/authorize.html
[
'scope.userInfo', // 用户信息
'scope.userLocation', // 地理位置
'scope.qqrun', // QQ运动步数
'scope.writePhotosAlbum', // 保存到相册
'scope.appMsgSubscribed', // 订阅消息
]
主要入口
- 【微信】
- 首屏对话列表下拉
- 扫一扫
- 发现->小程序
- 搜索
- 【支付宝】
- 扫一扫
- 搜索
- 首页我的小程序
- 【今日头条】
- 我的->扫一扫
- 搜索
- 【抖音】
- 搜索->扫一扫
- 【QQ】
- 扫一扫
💣 头条小程序陷阱
- 目前仅在头条Android版本7.2.9及以上版本支持真机调试功能。iOS暂时不支持真机调试
- 抖音App的小程序上没有打开调试器选项,右上角胶囊只有一个关闭按钮
💣 支付宝小程序陷阱
- my.getOpenUserInfo用于获取支付宝会员基础信息,只能在真机上调试,无法在 IDE 中调试,也就是只要有用户授权的页面都需要推送到真机上开发调试!
- 支付宝授权平台只返回tocken和uid,由开发者自己维护session有效期,
checkSession
方法不可用 - 打开调试的调试器面板在调起用户授权弹窗时会消失,此时须使用真机调试
💣 uni-app 陷阱
- uni.getSetting,文档上说【支付宝】支持,调用却报错
支付宝小程序,暂不支持getSetting
,而直接调支付宝的api my.getSetting 确是支持的 - uni.chooseVideo,文档上说【支付宝】支持,调用却报错
支付宝小程序,暂不支持chooseVideo
,而直接调支付宝的api my.chooseVideo(文档未找到) 确是支持的 - uni.chooseAddress,文档上说【支付宝】不支持,实际上是支持的,只是需要调用 my.getAddress,且仅商户才能使用
- uni.getImageInfo,文档上说【头条】支持,调用却报错
头条小程序,暂不支持getImageInfo
,而直接调头条的api tt.getImageInfo 确是支持的
📌 TODO
- 模版消息
- 第三方插件
你有同时做多端小程序的分享内容吗
拜读了。。。