我正在制作一个应用程序,其中有书籍和书籍都有音频和视频服务。
客户希望应用内购买。
以下是In-App的工作方式。
如果用户想要购买该书,用户将购买该书,一旦交易完成,将自动下载zip文件(从我的服务器,我将添加图像,视频,书籍的音频)。
一旦我有拉链,我就会在下载完成后解压缩。
对我来说,问题是我如何识别用户xyz之前是否购买了这本书。
e.g。今天用户A支付了图书B.如何获得用户A购买图书的信息?
如果我可以拥有用户注册系统,我可以通过我系统的用户ID识别用户。
有人说,保存NSUserDefaults中的图书ID,但关注的是如果我删除该应用并再次安装,我应该免费下载图书B.
我只想知道,如何跟踪哪位用户下载了哪本书。
我正在为iOS 6和7制作应用
答案 0 :(得分:1)
编辑:
您的应用通过调用SKPaymentQueue的restoreCompletedTransactions方法启动该过程。这会向App Store发送请求以恢复所有应用已完成的交易。如果您的应用为其支付请求的applicationUsername属性设置了值,如“检测不规则活动”中所述,请使用restoreCompletedTransactionsWithApplicationUsername:方法在还原事务时提供相同的信息。 App Store为先前完成的每个事务生成新事务。已还原的事务具有对原始事务的引用:SKPaymentTransaction的实例具有originalTransaction属性,并且收据中的条目具有原始事务标识符字段。 如“等待App Store处理事务”中所述,您的事务队列观察器的状态为SKPaymentTransactionStateRestored,如“等待App Store处理事务”中所述。此时您采取的操作取决于应用程序的设计。
NSMutableArray *productIDsToRestore = <# From the user #>;
SKPaymentTransaction *transaction = <# Current transaction #>;
if ([productIDsToRestore containsObject:transaction.transactionIdentifier]) {
// Re-download the Apple-hosted content, then finish the transaction
// and remove the product identifier from the array of product IDs.
} else {
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}