当使用云调用直接获取开放数据时,遇到部分用户或机型不可以正常返回CloudID,导致获取开放数据失败,请按下述说明理解并根据自身业务规避:
微信官方文档中关于开放数据给定的最低基础库版本,只适用于「IOS/Android」平台运行的微信客户端,「WIN / MAC / 企业微信」平台运行小程序的基础库为独立迭代的,所以单纯通过版本号界定对这些平台无效。举个例子:mac平台的基础库2.13.2,虽然远远大于获取真实手机号要求的2.8.0,但仍然不具备获取手机号的能力。
虽然企业微信内置和微信同样的小程序引擎,但是基础库并没有和微信小程序完全对齐,根据自身形态做了部分支持和一些特有能力,具体参见微信小程序API支持情况
目前在企业微信、MAC、WIN平台运行的微信小程序基础库最新版本都不能支持云调用开放数据的获取,在这里建议你做以下两种规避措施:
- 在这些平台运行时,提示不能获取,请更换手机继续业务。
- 使用正常的加密信息解析方式来补足这一部分空缺(我们很快出相关的模版代码)
根据目前支持情况,我们会动态更新此条目的信息和代码,请使用如下代码来判断是否支持开放数据云调用获取方式:
// isopen('最低的版本号')
function isopen(minVersion = '2.7.0') {
const {
SDKVersion,
platform,
environment
} = wx.getSystemInfoSync()
if (environment == 'wxwork' || compareVersion(SDKVersion, minVersion) < 0 || ['android', 'ios', 'devtools'].indexOf(platform) == -1) {
// 不能使用云调用获取开放数据
return false
} else {
// 可以使用云调用获取开放数据
return true
}
}
function compareVersion(v1, v2) {
v1 = v1.split('.')
v2 = v2.split('.')
const len = Math.max(v1.length, v2.length)
while (v1.length < len) {
v1.push('0')
}
while (v2.length < len) {
v2.push('0')
}
for (let i = 0; i < len; i++) {
const num1 = parseInt(v1[i])
const num2 = parseInt(v2[i])
if (num1 > num2) return 1
else if (num1 < num2) return -1
}
return 0
}
如果你无法确定目标平台的具体系统信息,可以在目标平台访问以下小程序页面,将会展示关键信息,便于你进行排查决策。
小程序在提交审核时,由于部分审核同学使用PC端进行体验审核,导致开放数据获取出现问题,无法体验完整业务被拒绝过审。为了防止出现这种问题,建议养成习惯,使用小程序实时日志打印用户关键信息,便于事后排查。
如果因为此问题需要官方同学协助,请提供完整的如下信息: 小程序APPID
、云开发环境ID
、获取信息参考的官方文档地址
、用户的系统信息(最少包括基础库版本号、运行平台)
、关键的获取代码片段截图