如何跳过警告“你已经购买了这个,但它还没有被下载”

时间:2010-03-19 02:37:30

标签: iphone in-app-purchase

我正在测试我的应用内购买应用。当我在沙箱环境中第二次使用我的用户帐户购买我的耗材产品时,它总是向我显示一条警告“您已经购买了它但尚未下载。点击确定立即下载。”。有没有办法跳过警报?

感谢您的帮助。

7 个答案:

答案 0 :(得分:15)

如果您在购买消耗品之后购买消耗品,则不应该看到此警报。如果是,那么您从未从队列中删除该事务。在商店允许您再次购买之前,您需要将其删除。

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

答案 1 :(得分:10)

好吧,我在网上搜索了好几个小时的解决方案!不要忘记为您的IAP经理添加交易观察员

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
  

您的应用程序应在应用程序初始化期间将观察者添加到付款队列。如果没有观察者附加到队列,则支付队列不会将其待处理事务列表与Apple App Store同步,因为没有观察者响应更新的事务。

     

如果应用程序在仍在处理事务时退出,则这些事务不会丢失。下次启动应用程序时,支付队列将继续处理事务。您的应用程序应始终希望收到已完成交易的通知。

答案 2 :(得分:6)

这实际上相当复杂。 Apple在其交易过程中内置了此消息,因此,如果您让用户到达他们尝试重新购买他们已拥有的产品的位置,他们就会看到此消息。

您可以使用

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

要恢复之前购买的任何交易,然后才能进入购买屏幕。在加载商店GUI之前运行restoreCompletedTransactions,然后锁定在成功完成交易时解锁的任何内容的购买按钮。

答案 3 :(得分:2)

如果您使用非沙盒ID或错误的沙箱ID登录,则在ad-hoc构建中使用完全有效的代码也会发生这种情况 - 例如来自与应用程序签名的证书不同的开发程序用。例如,像个人与公司一样。

答案 4 :(得分:2)

确保已在处理所有请求的控制器中添加了这段代码。

[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];

答案 5 :(得分:2)

即使我添加了事务观察器并且还从队列中删除了删除事务,我也遇到了同样的问题。我能够通过清理我的配置文件来修复它:

  1. 转到配置门户并检查您的分发/开发者配置文件是否仍然有效 - 必要时续订或至少通过删除设备并再次添加来刷新它们。

  2. 转到XCode中的管理器并删除所有配置文件,而不是点击刷新。

  3. 从您的测试设备中删除您的应用和所有应用配置资料

  4. 从appstore退出当前的测试用户,稍后再次登录 你的应用内购买东西会要求你这样做。

  5. 在您的应用中购买商品时,清洁,构建并与测试用户一起登录

  6. 祈祷它也适合你!

答案 6 :(得分:1)

我刚刚创建了一个新帐户后修复了问题。我认为Apple的系统只是备份并且暂时搞砸了帐户。

祝你好运!