iOS IAP 沙盒 - 是不是可以在不同的捆绑包 ID 上进行测试

Posted

技术标签:

【中文标题】iOS IAP 沙盒 - 是不是可以在不同的捆绑包 ID 上进行测试【英文标题】:iOS IAP Sandbox - is it possible to test on a different bundle IDiOS IAP 沙盒 - 是否可以在不同的捆绑包 ID 上进行测试 【发布时间】:2018-06-14 04:26:17 【问题描述】:

这与这个问题基本相同:Test iPhone in-app purchases on a different bundle? from 2010 - 从来没有一个被接受的答案,而且两个未被接受的答案都是推测而不是规范。

使用 React Native 和 Firebase 开发应用。我们使用 Crashlytics beta 发送 beta 测试版本,这些版本通过稍微不同的捆绑 ID 工作 - 例如:com.companyname.appname 用于生产应用程序,com.companyname.appname.dev 用于测试版。在 xCode 中,这是通过两个不同的构建目标来处理的,并且这些目标还具有与之关联的不同 Google Info plist(为了使用 prod/dev firestore 数据库)。

现在我们正在努力添加应用购买,我遇到了一个问题,为了在发布前正确测试它们,捆绑 ID 似乎需要完美匹配(没有通配符)。

我不希望使用生产版本进行测试,因为这意味着将测试人员指向生产数据库,但感觉就像 Apple 设计了一个强制执行此操作的系统。感觉必须有一个更好的方法,我错过了。其他人如何处理 ios 应用的 IAP 测试?

【问题讨论】:

【参考方案1】:

您需要为同一个 App 使用相同的 Bundle Identifier 来测试 IAP。

    如果您的应用程序包含 DEV Mobile Provisioning Profile,那么它会自动链接到沙盒模式。你只需要创建沙盒测试器到https://itunesconnect.apple.com 如果您需要测试自动续订 IAP,也可以这样做。 Apple 提供沙盒和生产 URL 以针对所有先前购买的 IAP 返回到 App 进行通信。如需自动续订,请查看此link。

【讨论】:

关于 DEV Mobile Provisioning 配置文件 - 如果您使用 xCode 托管配置文件,这将如何工作? 您的设备是使用 Apple 开发者帐户配置的,当您尝试运行或调试您的应用程序时,此时它被视为沙盒模式。如果您的应用在被视为生产模式时从 AppStore 下载。 hmmm... 我认为你是对的,因为捆绑 ID 必须相同。我将这个问题留一两天,希望有人回答他们如何在实践中应用这个问题(允许使用 Fabric 等工具对应用内购买进行 beta 测试),但我会将你标记为正确根本问题的答案。【参考方案2】:

我只需使用开发包 ID (com.companyname.appname.dev) 创建另一个 App Store Connect 记录,然后在两个记录中创建相同的 IAP 配置,就可以让它工作。这不是很漂亮,但它比在多个环境中使用相同的 bundle id 更好。

【讨论】:

以上是关于iOS IAP 沙盒 - 是不是可以在不同的捆绑包 ID 上进行测试的主要内容,如果未能解决你的问题,请参考以下文章

如何清除测试设备上非消耗品的 iOS IAP 收据?

我是不是需要为 macOS 应用内购买 (IAP) 启用沙盒网络功能?

您可以在提交应用程序或相关 IAP 之前使用 App Store 沙盒测试(特别是verifyReceipt)吗?

Apple开发如何在设备中切换IAP(内购)沙盒测试账户?

Apple开发如何在设备中切换IAP(内购)沙盒测试账户?

IAP - 无法连接到iTunes Store - 仅在Apple审核期间