uni-app做的H5部署到随申办应用时 个别ios版本上传图片选择相册或相机导致整个应用闪退

uni-app做的H5部署到随申办应用时 个别ios版本上传图片选择相册或相机导致整个应用闪退

开发环境 版本号 项目创建方式
Windows CLI

示例代码:

<u-upload :action="action" :custom-btn="true" ref="other" :auto-upload="false" index="other" :file-list="otherfileList"  
        :deletable="!alldisabled" :header="uploadHeader" :show-progress="!alldisabled" width="130" height="130" @on-choose-complete="chooseUpload"  
        @on-remove="delUpload" @on-change="uploadChange">  
    <view slot="addBtn" class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150" v-if="!alldisabled">  
        <image src="../../static/images/addUpload.png"></image>  
    </view>  
</u-upload>

目前认为与上传图片的接口、上传图片按钮并无关系

操作步骤:

在点击上传图片后,手机自动弹出选择相册或者相机弹框,在选择相机或者相册

预期结果:

可以选择图片或者拍照

实际结果:

应用闪退

bug描述:

uniapp做的H5部署到随申办应用时,个别ios版本在上传图片时,选择相册或者相机整个应用闪退

应用了uview的上传图片组件,在点击上传图片后,手机自动弹出选择相册或者相机弹框,在选择相机或者相册之后,应用闪退,原因未知。


更多关于uni-app做的H5部署到随申办应用时 个别ios版本上传图片选择相册或相机导致整个应用闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

随申办应用 是个app吧,是使用 uniapp 制作的吗?

更多关于uni-app做的H5部署到随申办应用时 个别ios版本上传图片选择相册或相机导致整个应用闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的iOS WebView权限兼容性问题。随申办应用内嵌的WebView对H5调用相机/相册有严格的权限管控机制,特别是iOS 14+版本。

核心原因:

  1. iOS隐私策略升级:iOS 14开始加强了相册访问权限管理,需要明确声明NSPhotoLibraryAddUsageDescriptionNSCameraUsageDescription
  2. WebView容器限制:随申办这类政务应用通常使用定制化WebView,可能对H5的媒体设备调用做了额外限制
  3. uview组件兼容性:uview的upload组件底层调用的是uni.chooseImage API,在某些WebView环境中可能存在兼容问题

解决方案:

  1. 检查manifest.json配置
{
  "ios": {
    "privacyDescription": {
      "NSPhotoLibraryAddUsageDescription": "需要访问相册上传图片",
      "NSCameraUsageDescription": "需要使用相机拍照上传"
    }
  }
}
  1. 使用原生API替代组件
// 直接使用uni.chooseImage,避免组件封装层的问题
uni.chooseImage({
  count: 1,
  sourceType: ['album', 'camera'],
  success: (res) => {
    // 处理图片
  },
  fail: (error) => {
    console.error('选择图片失败:', error)
  }
})
  1. 添加异常捕获
try {
  await uni.chooseImage({...})
} catch (e) {
  uni.showToast({
    title: '图片选择失败,请检查权限设置',
    icon: 'none'
  })
}
回到顶部