升级Xcode13 RC及最新RevenueCat后watchOS应用Purchases无法使用求助
解决方案
核心报错根因
你遇到的'PurchaserInfo' is not a member type of class 'RevenueCat.Purchases'错误是RevenueCat v4.0+版本的API不兼容变更导致的:该版本正式将原本的PurchaserInfo类重命名为CustomerInfo,旧命名被完全移除。
iOS端编译无报错是因为你的统一购买类没有被加入iOS端的编译源,或者iOS端的依赖缓存仍停留在v4.0之前的旧版本,没有触发API校验。
可执行修复步骤
- 第一步:替换废弃API命名
全局替换项目中所有Purchases.PurchaserInfo引用为CustomerInfo。如果需要同时兼容旧版RevenueCat,可以添加兼容层宏定义:import RevenueCat // 旧版兼容别名 typealias PurchaserInfo = CustomerInfo - 第二步:校验Watch Extension依赖配置
- 确认Watch Extension的部署目标版本 ≥ watchOS 6.2,这是RevenueCat v4.0+支持的最低watchOS版本
- 如果你使用Swift Package Manager引入依赖:打开项目配置 > Watch Extension目标 > General > Frameworks, Libraries, and Embedded Content,确认RevenueCat存在且状态为
Do Not Embed - 如果你使用CocoaPods引入依赖:确认Podfile中明确给Watch Extension的target添加了RevenueCat声明,示例:
配置修改后执行target '你的Watch Extension名称' do platform :watchos, '6.2' use_frameworks! pod 'RevenueCat' endpod install --repo-update重新生成项目配置 - 第三步:消除诊断文件告警
你遇到的Invalid diagnostics signature是Xcode 13 RC的已知bug,完整操作清理即可解决:- 关闭Xcode
- 执行终端命令删除全量缓存:
rm -rf ~/Library/Developer/Xcode/DerivedData - 重启Xcode,按住
Option键点击菜单栏的Product > Clean Build Folder,之后重新编译即可
额外校验点
打开Xcode项目导航栏的Package Dependencies分组,确认RevenueCat的版本号在所有平台下一致,避免出现多端拉取不同版本依赖的异常情况。
内容的提问来源于stack exchange,提问作者Yrb
相关产品推荐
相关产品推荐

