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

iOS Testflight应用内购促销码兑换成功但purchaseUpdatedListener未触发

iOS TestFlight应用内促销码兑换后purchaseUpdatedListener未触发

问题描述

在iPhone的TestFlight应用中,使用应用内购买促销码兑换后,App Store显示兑换成功,但purchaseUpdatedListener未被触发(已通过在监听器内添加弹窗验证)。常规应用内购买流程运行正常。

预期行为

  • 点击应用内按钮,通过URL itms-apps://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/freeProductCodeWizard?code=PROMO_CODE 触发促销码兑换
  • 点击「兑换」按钮
  • App Store显示成功提示
  • purchaseUpdatedListener 接收兑换事件及凭证

实际行为

  • 点击应用内按钮,通过上述URL触发促销码兑换
  • 点击「兑换」按钮
  • App Store显示成功提示
  • purchaseUpdatedListener 未接收任何事件

环境信息

  • react-native-iap: 12.10.5
  • react-native: 0.71.8
  • 平台:iOS真机(TestFlight应用)

解决方案

1. 前台主动拉取未处理订单

通过URL跳转到App Store兑换时,应用会被切到后台,purchaseUpdatedListener可能因状态变化暂停监听。可在应用回到前台时主动拉取订单:

import { AppState } from 'react-native';
import { getAvailablePurchases } from 'react-native-iap';

AppState.addEventListener('change', async (nextAppState) => {
  if (nextAppState === 'active') {
    const purchases = await getAvailablePurchases();
    if (purchases.length > 0) {
      // 复用原有purchase处理逻辑
      handlePurchase(purchases[0]);
    }
  }
});

2. 核对商品ID配置

确保促销码绑定的商品ID已在react-native-iap的商品列表中正确配置,且与App Connect中的设置完全一致,ID不匹配会导致监听器无法识别兑换事件。

3. 验证沙箱促销码有效性

TestFlight使用沙箱环境,需确认促销码已在App Connect中设置为沙箱可用,部分促销码仅对生产环境生效,需检查投放范围配置。

4. 升级react-native-iap版本

当前12.10.5版本可能存在促销码监听的已知问题,尝试升级到最新稳定版,查看官方更新日志是否修复相关bug。

5. 检查原生层监听逻辑

确认iOS项目中SKPaymentTransactionObserver的回调逻辑完整,react-native-iap依赖原生回调触发JS层监听器,可排查RNIapIos.m文件中的交易监听实现。

内容的提问来源于stack exchange,提问作者vrn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 01:35:16