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例程是否应该做额外的事情?
答案 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)如果您对沙盒用户已购买的商品执行此操作,则会收到以下警告:您已购买此商品。你想免费获得它吗? ---- [环境:沙箱] ----取消/确定
以上几点就是你得到的信息就像你之前看到的那样,而不是你真正购买时从底部弹出的收据类型项。
希望这有帮助,但第一次通过时仍然不是一个好的答案。