在微信公众号开发过程中,遇到在安卓系统上可以正常调取手机相机和相册,而在iOS系统上则提示“已取消选择”的问题,通常是由于地址栏页面跳转问题导致的。
为了解决这个问题,可以将push
或者uni.navigateTo
跳转改为window.location.href
跳转。window.location.href
跳转才能改变地址栏的变化,从而确保签名成功。
// 获取当前客户端环境信息
const systemInfo = uni.getSystemInfoSync();
// 判断当前平台是否为iOS
if (systemInfo.platform === 'ios') {
// 如果是iOS平台,使用window.location.href进行跳转
window.location.href = `${location.protocol}//${location.host}/#/subpages/submit/submitMaterial?id=${record.id}&type=${record.type === 1 ? 'report' : 'modify'}&openid=${this.openid}&statename=${record.statename}®ionRadioKey=${regionRadioKey}®ionRadioVal=${regionRadioVal}`;
} else {
// 如果不是iOS平台,使用uni.navigateTo进行跳转
uni.navigateTo({
url: `/subpages/submit/submitMaterial?id=${record.id}&type=${record.type === 1 ? 'report' : 'modify'}&openid=${this.openid}&statename=${record.statename}®ionRadioKey=${regionRadioKey}®ionRadioVal=${regionRadioVal}`,
fail: e => {
console.log('open url fail', e);
}
});
}
- 获取当前客户端环境信息:通过
uni.getSystemInfoSync()
获取当前设备的系统信息。 - 判断当前平台是否为iOS:通过检查
systemInfo.platform
是否等于'ios'
来判断当前设备是否为iOS。 - iOS平台处理:如果是iOS平台,使用
window.location.href
进行页面跳转,以确保地址栏变化并签名成功。 - 非iOS平台处理:如果不是iOS平台,使用
uni.navigateTo
进行页面跳转。
这样处理后,无论是在安卓还是iOS平台上,都能够正常唤起相机和相册,避免出现“已取消选择”的问题。
© 版权声明
THE END
暂无评论内容