我已经为应用内购买的沙盒测试创建了一个测试帐户 . 我按照这些步骤进行测试
-
已退出任何现有帐户
-
打开应用程序并开始获取可用产品列表
-
开始下载产品的过程
SKPayment * payment = [SKPayment paymentWithProductIdentifier:productId];
[[SKPaymentQueue defaultQueue] addPayment:payment];
理想情况下,此时我应该被要求输入用户名/密码 . 但我没有提示任何事情,交易失败(显然是因为我没有登录)
如果我尝试从设置 - >商店登录,它会询问我的信用信息,我确信没有必要 .
有人可以帮我解决这个问题 .
谢谢...
4 回答
好 . 这太蠢了!但希望有人可以从我的错误中吸取教训:)我正在使用adhoc发布配置文件测试应用内购买 . 对于Apple工程师来说,只要你这样做,测试帐户就会“停止”成为一个测试帐户 .
只有在调试模式下通过XCode启动应用程序才能测试应用程序内购买!
Update
这不再是真的 . 据说它现在也适用于adhoc构建 .
来源:最近使用adhoc版本测试应用内购买 .
确保您在配置文件中启用了应用内购买
检查canMakePayments
在模拟器中,StoreKit只是没有响应:您应该在设备上进行测试
您必须至少有一名观察员添加到SKPaymentQueue
首先尝试询问产品清单(除了您已经知道productId的事实);听起来很傻,但SK框架远非完美 .
此外,在向验证服务器发送{“receipt-data”:...}时,请在将收据插入json对象之前使用Base64对收据进行编码 . 官方文档中没有提到这一点:仅限于几个博客 .
我遇到了同样的问题 . 正如Oleg所建议的那样,问题是productID无效 . 设置一个断点
您可能会发现productID不在response.products中 . 发生这种情况时,交易将在用户取消购买时继续进行,因此永远不会提示登录 .