Ios SKPaymentQueue restoreCompletedTransactions:未还原任何事务

Ios SKPaymentQueue restoreCompletedTransactions:未还原任何事务,ios,transactions,storekit,Ios,Transactions,Storekit,我无法在我的paymentQueue:updatedTransactions:delegate方法中接收任何事务。只有委托方法paymentQueueRestoreCompletedTransactionsFinished:被调试器命中。当我尝试检索事务数组时,得到的是一个空数组 首先,我买了一个不更新的产品。从服务器成功购买并验证后,将从支付队列中删除。与启动时相比,我调用paymentqueuesrestoreCompletedTransactions方法。正如预期的那样,Storekit要

我无法在我的
paymentQueue:updatedTransactions:
delegate方法中接收任何事务。只有委托方法
paymentQueueRestoreCompletedTransactionsFinished:
被调试器命中。当我尝试检索事务数组时,得到的是一个空数组

首先,我买了一个不更新的产品。从服务器成功购买并验证后,将从支付队列中删除。与启动时相比,我调用paymentqueues
restoreCompletedTransactions
方法。正如预期的那样,Storekit要求我输入密码(来自sandbox用户)。但是update方法不会得到cougt。只有finish方法被捕获,并且如上所述,事务是空的

我做错了什么?是我的错,还是苹果的错

谢谢,比尔
Nic

很抱歉让您等了这么长时间

问题是,苹果公司明确表示,我不能恢复不续费的订阅。我必须自己存储购买的物品,并实现自己的恢复功能

我所做的是在产品名称中包含一些标识符,这些标识符告诉我它是什么类型的产品。(这是一种不用我自己的服务器来存储产品信息的方法)因此我的产品名称是,例如com.mycompany.iphone.non_renewaring_30d(此产品实际上被配置为非更新产品)

因此,当用户进行购买时,我将此信息存储在iDevice的CoreData数据库中。我还包括了过期功能,因为我有购买日期和产品过期日期(30d)

当时间到期时,用户会看到一个消息对话框,告诉用户进行新的购买。我真的不喜欢苹果实施不续费订阅,因为它告诉用户,他/她已经购买了产品,并要求他们重新购买,但我必须处理这个问题


我真的建议将购买信息存储在iOS设备上,因为你不需要创建自己的用户识别功能(例如用户ID或电子邮件地址),因为苹果关闭了UDID唯一性

如果我是对的,你必须在你自己的服务器上跟踪交易收据。我是这样做的。但每当我调用restoreCompletedTransactions方法时,它都应该恢复所有购买(因此应用内购买编程指南)消耗品不应该恢复,它们是一次性使用的。用非消耗品测试。我对非消耗品也有同样的问题。@D卡尼:非消耗品应该得到恢复。它是突然出现还是已经消失了?我也遇到了一个问题,恢复自动续费订阅,但结果是一个苹果沙箱问题@谢谢你的回答,它真的帮助我解决了这个问题!!但当用户卸载应用程序时,他们将失去购买。这有什么办法吗?没错!您需要将其存储在自己的服务器上。要存储特定用户的数据,还需要创建自己的帐户/登录系统。溴