首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IAP恢复按钮

IAP恢复按钮
EN

Stack Overflow用户
提问于 2014-08-16 18:52:12
回答 1查看 790关注 0票数 1

我正在使用一个非自消耗的IAP,并试图使恢复按钮正常工作。

我注意到,当用户试图购买他们已经购买的东西时,苹果会发出警告说:“你已经买过了,你想免费再买一次吗?”

,所以我想知道如何使用相同的收据验证方法/代码来执行还原按钮?

我好像找不到密码了。我在paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions和其他地方看过了吗?

你能帮忙吗?谢谢!

更新

代码语言:javascript
复制
- (IBAction)purchaseRestore:(id)sender {
    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    [[SKPaymentQueue defaultQueue]restoreCompletedTransactions];
    // Stack
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
    NSLog(@"4 IBAction Purchase Restore Method");
}

UPDATE 2我无法判断我是否做得对,在某些代码上加倍,或者添加不需要的代码。

代码语言:javascript
复制
-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
    for (SKPaymentTransaction *transaction in transactions) {
        switch (transaction.transactionState) {
            case SKPaymentTransactionStatePurchasing:
                NSLog(@"2 Payment Queue updatedTransactions - needs to verify logged in user: Purchasing Product From Store!");
                break;
            case SKPaymentTransactionStatePurchased:
                if ([transaction.payment.productIdentifier
                     isEqualToString:INAPP_PRODUCT_ID_3]) {
                    NSLog(@"3 Payment Queue updatedTransactions - Product Purchased From Store!");
                    //Not sure if I need this
                    UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:
                                              @"3 Payment Queue updatedTransactions - Seems to to this twice: Purchase is completed succesfully" message:nil delegate:
                                              self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
                    [alertView show];

                    [self saveTransactionReceipt:transaction];
                    NSLog(@"3 Payment Queue updatedTransactions - Save Transaction Receipt: Called after product purchased");
                    [self saveValue:transaction];
                    NSLog(@"3 Payment Queue updatedTransactions - Save Value: Called after product purchased");
                    [self showButtonThree];
                    NSLog(@"3 Payment Queue updatedTransactions: will Show button Three now");

                    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
                    [defaults setBool:YES forKey:@"purchasedThree"];
                    NSLog(@"updatedTransactions Yes for purchasedTeamThree: %hhd", [defaults boolForKey:@"purchasedThree"]);
                    [defaults synchronize];

                    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                    NSLog(@"3 Payment Queue finishTransaction: Run");
                }
                break;
            case SKPaymentTransactionStateRestored:
                    NSLog(@"Restored");
                    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                purchaseButton.enabled = YES;
                NSLog(@"2 Payment Queue updatedTransactions: Purchase failed ");
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                break;
            default:
                break;
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-16 21:59:11

你的问题对我也非常有用,因为你让我意识到,我目前在AppStore审批过程中挂起的应用程序可能会被拒绝,因为我没有实现一个恢复按钮(我只是添加了一个标签,表示再次按Buy按钮将恢复以前的购买)。

执行还原过程的正确方法是实现调用此方法的按钮:

代码语言:javascript
复制
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

当然,在此之后,仅限于付费用户才能恢复应用程序的功能。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25342864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档