x***@126.com
x***@126.com
  • 发布:24 分钟前
  • 更新:23 分钟前
  • 阅读:20

【报Bug】ios使用 xcode 本地打包打出来的自定义基座 报 uni.chooseMedia is not a function.

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: MacBook Pro (Retina, 15-inch, Mid 2014)

HBuilderX类型: 正式

HBuilderX版本号: 5.15

手机系统: iOS

手机系统版本号: iOS 17

手机厂商: 苹果

手机机型: iphone 14pro

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

示例代码:

当前使用
console.log('[uts-api]', {
'chooseMedia': typeof uni.chooseMedia,
'getAppAuthorizeSetting': typeof uni.getAppAuthorizeSetting,
'getDeviceInfo': typeof uni.getDeviceInfo,
'getAppBaseInfo': typeof uni.getAppBaseInfo,
'getNetworkType': typeof uni.getNetworkType,
'getSystemInfo': typeof uni.getSystemInfo,
'getSystemSetting': typeof uni.getSystemSetting,
'network': typeof uni.network,
'openAppAuthorizeSetting': typeof uni.openAppAuthorizeSetting,
'privacy': typeof uni.privacy,
'prompt': typeof uni.prompt,
'storage': typeof uni.storage,
})
好多方法都是undefined 原生打包配置工程里面都在报undefined
{
"chooseMedia": "undefined",
"getAppAuthorizeSetting": "function",
"getDeviceInfo": "function",
"getAppBaseInfo": "function",
"getNetworkType": "function",
"getSystemInfo": "function",
"getSystemSetting": "function",
"network": "undefined",
"openAppAuthorizeSetting": "function",
"privacy": "undefined",
"prompt": "undefined",
"storage": "undefined"
}

操作步骤:

使用5.15HB 和 ios的sdk来进行离线打包 来进行上传图片或者视频,报‌TypeError: uni.chooseMedia is not a function.

预期结果:

可以正常弹出来拍照,录像,选择相册的方法

实际结果:

当前不行

bug描述:

‌TypeError: uni.chooseMedia is not a function.

当前已经配置DCloudUTSExtAPI.framework
App 模块配置 中勾选了 Camera & Gallery(相机和相册) 模块
Xcode里面也有CameraGallery

24 分钟前 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

感谢您的反馈。针对您提交的关于 iOS 离线打包后 uni.chooseMedia is not a function 的 Bug 报告,我们进行了详细的评审与分析,以下是评审意见及排查建议:

1. Bug 反馈内容完整性评审

  • BUG 描述:描述非常清晰,明确指出了报错信息以及当前已配置的依赖项(DCloudUTSExtAPI.framework 和 Camera & Gallery 模块),有助于官方人员快速定位问题背景。
  • 代码示例:提供了完整的 console.log 测试代码及输出结果,可以直接运行,无需官方人员二次调整。
  • 复现步骤:步骤描述清晰,结合提供的代码示例,官方人员可以明确复现操作路径。
  • 预期结果与实际结果:预期结果合理,实际结果如实反映了当前遇到的阻塞问题。
  • 分类信息:完整包含了 PC 环境、HBuilderX 版本号、手机系统版本、设备机型及 Vue 版本等信息。
  • 附件说明:请注意,我无法识别和查看附件内容。如果后续有截图或日志需要补充,请直接以文本形式粘贴在回复中。

2. Bug 是否成立及排查建议

结合官方文档及历史排查经验,该 Bug 的直接表现是 uni.chooseMedia 未被正确挂载到 JS 上下文中。请按照以下方向进行排查:

(1)确认 HBuilderX 与 iOS 离线 SDK 版本是否严格一致
在进行 iOS 离线打包时,要求 HBuilderX 版本与下载的 iOS 离线打包 SDK 版本完全一致。如果 HBuilderX 升级了,但 Xcode 工程中的 SDK 未全量替换更新,可能会导致部分 API(如 uni.chooseMedia)缺失。请确认当前使用的 iOS SDK 版本是否与您的 HBuilderX 版本完全匹配,并确保所有依赖库已全量替换。

(2)确认 Xcode 工程中 UTS 扩展模块的依赖配置
根据官方文档说明,uni.chooseMedia 属于 UTS 内置模块(uni-chooseMedia)。在 iOS 离线打包中,如果要在 JS 逻辑层或 UTS 插件中使用该 API,不仅需要在 manifest.json 中勾选“Camera & Gallery(相机和相册)”模块,还需要在 Xcode 主工程中正确添加并配置 DCloudUTSExtAPI.framework
请检查 Xcode 工程中该 framework 的引入方式是否正确:必须设置为 Embed & Sign(嵌入并签名),如果仅是普通的 Do Not Embed 引入,会导致运行时找不到该模块从而报 undefined

(3)清理 Xcode 缓存重新编译
如果依赖配置均正确,建议在 Xcode 中执行 Clean Build Folder(快捷键 Shift + Cmd + K),清理 DerivedData 缓存后,重新编译打包自定义基座运行测试。

3. 替代方案

如果当前急需实现拍摄和从相册选择图片/视频的功能,在排查上述配置问题的同时,您可以使用 uni.chooseImageuni.chooseVideo 作为替代方案。这两个 API 在 App 端支持良好,且不依赖于 UTS 扩展模块配置,可以满足大部分的媒体选择需求。

感谢您对 DCloud 产品的支持,希望以上排查建议能帮助您解决问题。

内容为 AI 生成,仅供参考

要回复问题请先登录注册