苹果在iOS 11中引入了推广的应用内购买。尽管我已经实现了新的必需的SKPaymentTransactionObserver方法,paymentQueue:shouldAddStorePayment:for:,但我还没有成功地测试“购买”一件商品。应该能够在沙盒测试环境中进行测试和购买吗?
Apple确实讨论了通过以下形式的URL启动测试:
itms-services://?action=purchaseIntent&bundleId=com.example.app&productIdentifier=com.example.app.myIAP
我已经把URL放在给我自己的电子邮件里了。当我单击URL时,我会得到以下序列:
1)切换到MyApp,并使用我的产品标识符com.example.app.myIAP (鼓励性开始)调用shouldAddStorePayment
2)让paymentQueue:shouldAddStorePayment:for: return true。
3) paymentQueue:updatedTransactions:被调用,交易状态为正在购买(但未购买)。它的transactionIdentifier为空。
4)弹出提示,提示登录。我用一个沙盒Apple ID登录--点击登录提醒上的“购买”按钮。
5)另一个弹出窗口提示登录。我用一个沙盒Apple ID登录--点击登录提醒上的“购买”按钮。
6) paymentQueue:updatedTransactions:被调用,事务状态为failed。它有一个非空的transactionIdentifier。
shouldAddStorePayment例程应该做一些额外的事情吗?
发布于 2017-10-31 05:16:52
我提交了应用程序与有限的测试如上所述。而且我能够真正地购买推广的应用程序内购买。
但这里有一个先有鸡还是先有蛋的情况。现在项目已经在商店中了,我可以在本地/调试构建上运行,并从App store测试。但我想我也烧掉了几个沙箱的用户I。
下面是我现在可以做的一个序列。
1)进入App Store注销。
2)构建/运行您的应用程序并使用恢复购买-使用您的沙盒用户ID/密码登录。
3)验证您的Sandbox用户现在是否已登录到App Store (不要使用Sandbox用户直接登录到App Store,否则该用户将不再工作。)
4)找到您的应用程序,然后找到包含促销功能的应用内购买部分。选择推广的应用内购买功能。
5)您的应用程序已加载。过了一会儿,你会收到一个警告:确认你的应用内购买-你想花0.99美元买XXXX吗?-环境:沙盒-取消/购买
6)购买后,会收到警告:一切就绪。-您的购买成功。-环境:沙箱- OK
7)如果你在你的沙盒用户已经购买的物品上这样做,你会得到一个警告:你已经购买了这个。是否要再次免费获取?- Environment: Sandbox -取消/确定
上面的要点是,你会得到像你之前看到的那样的提醒消息,而不是当你进行真正的购买时,从底部弹出的收据类型的项目。
希望这会有所帮助,但对于第一次来说,这仍然不是一个好的答案。
https://stackoverflow.com/questions/46352694
复制相似问题