我正在开发一个用户可以购买自动续订订阅的应用程序。购买部分是正常的,但当用户删除应用程序并尝试恢复他的购买时会出现问题。以下是我写的处理它的代码。
我给了一个标题为“已经是订阅者”的按钮。当用户点击我拨打以下代码时。
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
这就是我在- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
方法中处理恢复的方法。
case SKPaymentTransactionStateRestored:
duration = [strDuration intValue];
if(transaction.transactionReceipt != nil){
receipt = [[NSString alloc] initWithData:[b64 dataByBase64EncodeFromData:transaction.transactionReceipt] encoding:NSASCIIStringEncoding];
[userDefault setObject:transaction.transactionReceipt forKey:@"LastReceipt"];
[queue finishTransaction:transaction];
[self callReceiptInfoImpl];
}
break;
以下是还原事务完成时的委托方法。
-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue{
NSLog(@"COMPLETED TRANSACTION RESTORED");
}
问题是,当用户点击“已经是订阅者”按钮时,第1步被调用,但第2步从未被调用。最后,我可以在屏幕上看到消息“已完成交易已恢复”。
如果有人遇到类似问题,请指导。
感谢您阅读.....
答案 0 :(得分:0)
在您的课程中,您必须实施回调 function paymentQueue:updatedTransactions:
此功能将在时间和时间接收有关交易的更新 它是制作的。因为您的交易即使在应用程序发生时也会发生 关闭后,您应该准备好尽快收到这些通知 你打开应用程序。所以最好的地方是初始化它 applicationDidFinishLaunching或等效方法。
来自link