【发布时间】:2014-03-18 12:52:46
【问题描述】:
我在为 iAP 添加恢复方法时遇到了 2 个问题...
问题 1:每次我打开我的应用程序时,都会出现 iTunes 警报并询问我是否要登录 iTunes Store。这是因为我添加了以下恢复方法:
- (IBAction)Restore:(id)sender {
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}
现在,即使我删除了恢复方法,警报也会在启动时继续出现。似乎苹果已经在应用程序启动时连接了 iTunes。我只想在用户点击购买或恢复按钮时才这样做。我在 StackOverflow 上阅读了几篇文章,您必须在 AppDelegate 中添加一些内容,以便应用不会自动连接,但仍然没有运气。
问题 2:在我的手机上测试 iAP 并点击恢复按钮时,即使我之前没有购买过,该项目也可以恢复。用测试账号测试还原功能正常吗?您应该说Apple必须显示该项目从未购买过且无法恢复的警报?
有人可以指导我一步一步地让它工作吗?
提前致谢。
代码:
- (IBAction)Restore:(id)sender {
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}
-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
[self unlockFeature];
}
#pragma mark -
#pragma mark SKPaymentTransactionObserver
-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased:
[self unlockFeature];
[[SKPaymentQueue defaultQueue]
finishTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
NSLog(@"Transaction Failed");
[[SKPaymentQueue defaultQueue]
finishTransaction:transaction];
break;
default:
break;
}
}
}
【问题讨论】:
-
首先不要发布重复的stackoverflow.com/questions/22474139/… 其次,你的
viewDidLoadviewDidAppear/viewWillAppear方法中有什么。 -
对不起,我的 viewDidLoad:- (void)viewDidLoad { [super viewDidLoad]; _buyButton.enabled = 否; }
-
@sbarow,您提供的链接已被版主删除。仅供参考
标签: ios iphone objective-c in-app-purchase