Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone “如何跳过警报”;你';我已经买了这个,但还没有';“尚未下载”;_Iphone_In App Purchase - Fatal编程技术网

Iphone “如何跳过警报”;你';我已经买了这个,但还没有';“尚未下载”;

Iphone “如何跳过警报”;你';我已经买了这个,但还没有';“尚未下载”;,iphone,in-app-purchase,Iphone,In App Purchase,我正在测试我的应用内购买应用程序。当我在沙盒环境中使用我的用户帐户第二次购买耗材时,它总是向我显示一个警报:“您已经购买了此产品,但尚未下载。点击“确定”立即下载。”。有没有办法跳过警报 谢谢你的帮助 这实际上相当复杂。苹果在其交易过程中内置了这条信息,因此如果你让用户尝试回购他们已经拥有的产品,他们会看到这条信息 你可以用 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 恢复他们在进入“购买”屏幕之前购买的任何交易

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


谢谢你的帮助

这实际上相当复杂。苹果在其交易过程中内置了这条信息,因此如果你让用户尝试回购他们已经拥有的产品,他们会看到这条信息

你可以用

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

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

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

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

如果您使用非沙盒ID登录,或者沙盒ID错误(如来自与应用程序签名证书不同的开发程序),则在临时构建中使用完全有效的代码时也会发生这种情况。比如个人与公司。

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

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
在应用程序初始化期间,应用程序应向支付队列添加一个观察者。如果没有观察员附加到队列,则支付队列不会将其挂起交易列表与Apple App Store同步,因为没有观察员响应更新的交易

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


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

[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];

我只是在创建了一个新帐户后修复了这个问题。我认为苹果的系统只是得到了备份,并在一段时间内搞乱了账户


祝你好运

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

  • 转到“资源调配门户”,检查您的分发/开发人员资源调配配置文件是否仍然有效-如有必要,请续订它们,或者至少通过删除设备并再次添加来刷新它们

  • [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
    
  • 转到XCode中的管理器并删除所有配置文件,然后点击刷新

  • 从测试设备中删除您的应用程序和所有应用程序配置文件

  • 使用当前测试用户从appstore注销,并在以后需要时再次登录 你的应用内购买物品会要求你这样做

  • 当您在应用程序中购买项目时,请与您的测试用户进行清理、构建和登录

  • 祈祷它也能为你工作


  • 不,使用耗材时,restoreCompletedTransactions没有任何用处。请注意,当调用
    restoreCompletedTransaction
    时,密码输入屏幕将弹出,用户可能不知道原因。请注意,如果这样做,用户将需要输入用户名和密码。可能最好留一个按钮,用户可以从设置菜单中按下。这并不能解决“您已经购买了此软件,但尚未下载,但我们不允许开发人员再次触发下载”错误。您找到解决方案了吗。。。我在这里也遇到了同样的问题。不幸的是,这并没有解决我的问题。没错。另外,请确保在重新启动模拟器/设备后调用paymentQueue:updatedTransactions:并检查挂起事务的状态。在某些情况下,您必须调用finishTransaction。在FWIW部门,只需重新启动我的iPad Mini(运行7.0.4)即可恢复“正常”的沙盒行为(不会干扰配置文件-尽管我下一步将尝试上述步骤!)