SKPaymentQueue restoreCompletedTransactions:没有恢复任何事务

时间:2011-11-29 16:27:25

标签: ios transactions storekit

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

首先,我购买了一款不续订的产品。从服务器成功购买并验证后,它将从支付队列中删除。比启动时,我称之为paymentqueues restoreCompletedTransactions方法。正如预期的那样,Storekit会要求我输入密码(来自沙盒用户)。但更新方法将无法获得。只有完成方法被捕获并且如所描述的那样,交易是空的。

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

谢谢,BR NIC

1 个答案:

答案 0 :(得分:3)

很抱歉让你等了这么久!

问题是苹果In-App Purchase Programming Guide明确表示,我无法恢复非续订订阅。我必须自己存储购买并实现自己的恢复功能。

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

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

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

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