如何测试ios11推广的应用内购买

时间:2017-09-21 20:30:10

标签: ios xcode in-app-purchase

Apple在iOS 11中推出了推荐的应用内购买。虽然我已经实现了新的必需SKPaymentTransactionObserver方法,paymentQueue:shouldAddStorePayment:for:,但我无法成功测试“购买”商品。是否应该能够在Sandbox测试环境中进行测试和购买?

Apple确实讨论了通过以下形式的网址启动测试:

ITMS服务://动作= purchaseIntent&安培; bundleId = com.example.app&安培;产品识别= com.example.app.myIAP

我已将该网址放入电子邮件中。当我点击URL时,我得到以下序列:

1)切换到MyApp,并使用带有我的产品标识符com.example.app.myIAP(鼓励开始)的产品调用shouldAddStorePayment

2)有paymentQueue:shouldAddStorePayment:for:return true。

3)paymentQueue:updatedTransactions:被调用,处于“购买”(但未购买)状态的交易。它有一个nil transactionIdentifier。

4)弹出警告说要登录。我使用沙盒Apple ID登录 - 点击登录警报上的“购买”按钮。

5)另一个弹出窗口说登录。我使用沙盒Apple ID登录 - 点击登录警报上的“购买”按钮。

6)paymentQueue:updatedTransactions:被调用,事务处于“失败”状态。它有一个非零的transactionIdentifier。

shouldAddStorePayment例程是否应该做额外的事情?

1 个答案:

答案 0 :(得分:1)

我使用上述有限测试提交了应用程序。而且我能够真正购买推广的应用内购买。

但这里有鸡肉和鸡蛋的情景。现在项目在商店中,我可以针对本地/调试版本运行并从App Store进行测试。但我认为我还通过几个Sandbox用户ID来解决问题。

以下是我现在可以做的一个序列。

1)前往App Store并注销。

2)构建/运行您的应用并使用Restore Purchases - 使用您的Sandbox用户ID /密码登录。

3)确认您的沙盒用户现已登录到App Store(不要使用Sandbox用户直接登录到App Store,否则该用户将无法使用。)

4)找到您的应用,然后找到包含推广功能的应用内购买部分。选择推广的应用内购买功能。

5)您的应用已加载。稍后,我们会收到一个警告:确认你的应用内购买----你想以0.99美元的价格购买XXXX吗? --- [环境:沙箱] ----取消/购买

6)购买后,获取警报:你已经完成了设置。 ----您的购买成功。 ---- [环境:沙箱] ----好的

7)如果您对沙盒用户已购买的商品执行此操作,则会收到以下警告:您已购买此商品。你想免费获得它吗? ---- [环境:沙箱] ----取消/确定

以上几点就是你得到的信息就像你之前看到的那样,而不是你真正购买时从底部弹出的收据类型项。

希望这有帮助,但第一次通过时仍然不是一个好的答案。