You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用RevenueCat沙盒测试时订阅自动取消问题咨询

沙盒环境下RevenueCat订阅自动取消问题排查与咨询

问题描述

在移动应用中使用RevenueCat处理内购业务,Sandbox环境完成支付后,应用内的Pro版本会在几分钟后自动取消,需确认原因。

沙盒设置相关疑问

已在「设置->App Store->沙盒账户->管理」中开启「允许购买和续订(激活)」,并将续订频率设置为3分钟,从截图可见订阅在3分钟后过期,是否为问题诱因?即将上架App Store,担忧正式环境出现同类问题。

订阅状态检查代码

应用首次启动时调用以下代码检查用户购买状态:

func checkSubscribe() {
    Task {
        do {
            let customerInfo = try await Purchases.shared.customerInfo()
            DispatchQueue.main.async {
                if customerInfo.entitlements["AI Pro"]?.isActive == true {
                    self.isPro = true
                } else {
                    self.isPro = false
                }
            }
        } catch {
            AnalyticsManager.shared.sendEvent(eventName: "error_checkSubscribe", parameters: ["error":error.localizedDescription])
        }
    }
}

相关截图

  1. 订阅过期截图
  2. RevenueCat截图1
  3. RevenueCat截图2

问题原因与解答

  1. 沙盒测试机制导致自动过期
    你设置的3分钟续订频率是苹果沙盒环境的专属测试配置,目的是让开发者快速验证订阅续订、过期、权限回收等流程,属于正常测试行为。正式环境完全不会受此设置影响,正式环境的订阅周期严格遵循你在App Store Connect中配置的时长,只有用户主动取消、付款失败等正常场景才会导致订阅失效。

  2. 订阅状态检查逻辑的局限性
    当前仅在应用首次启动时调用状态检查,无法实时响应沙盒中订阅过期/续订的状态变化。当沙盒订阅按设置的3分钟周期过期后,customerInfo.entitlements["AI Pro"]?.isActive会变为false,你的代码会将isPro设为false,这是符合逻辑的结果。

优化建议

  • 正式环境无需担忧:沙盒的短周期测试机制是苹果提供的工具,正式环境不会自动触发订阅取消,放心上架即可。
  • 添加实时状态监听:除启动时检查外,建议通过RevenueCat的代理监听状态变化,实时更新应用内权限:
    // 遵循PurchasesDelegate协议
    func customerInfoDidUpdate(_ customerInfo: CustomerInfo) {
        DispatchQueue.main.async {
            self.isPro = customerInfo.entitlements["AI Pro"]?.isActive == true
        }
    }
    
    // 初始化时设置代理
    Purchases.shared.delegate = self
    
  • 调整沙盒测试配置:若需测试长期订阅状态,可在沙盒账户管理中延长续订频率,或使用苹果沙盒默认的订阅周期进行测试。

内容的提问来源于stack exchange,提问作者Ufuk Köşker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:37:44