解决iOS微信公众号浏览器中无法调取相机和相册的问题

微信公众号开发过程中,遇到在安卓系统上可以正常调取手机相机和相册,而在iOS系统上则提示“已取消选择”的问题,通常是由于地址栏页面跳转问题导致的。

图片[1]-解决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}&regionRadioKey=${regionRadioKey}&regionRadioVal=${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}&regionRadioKey=${regionRadioKey}&regionRadioVal=${regionRadioVal}`,
        fail: e => {
            console.log('open url fail', e);
        }
    });
}
  1. 获取当前客户端环境信息:通过uni.getSystemInfoSync()获取当前设备的系统信息。
  2. 判断当前平台是否为iOS:通过检查systemInfo.platform是否等于'ios'来判断当前设备是否为iOS。
  3. iOS平台处理:如果是iOS平台,使用window.location.href进行页面跳转,以确保地址栏变化并签名成功。
  4. 非iOS平台处理:如果不是iOS平台,使用uni.navigateTo进行页面跳转。

这样处理后,无论是在安卓还是iOS平台上,都能够正常唤起相机和相册,避免出现“已取消选择”的问题。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容