【问题标题】:How do i integrate Touch ID for my IAP?如何为我的 IAP 集成 Touch ID?
【发布时间】:2016-06-15 04:22:00
【问题描述】:

我的 IAP 有以下代码,它可以成功运行,但不支持那些想使用 Touch ID 购买的人。我需要在 removeAdsButton 方法中添加什么来支持这一点?如果我不添加任何支持 Touch ID 的内容,交易还会成功吗?

- (void)removeAdsButton {
    if([SKPaymentQueue canMakePayments]){

        SKProductsRequest *productsRequest = [[SKProductsRequest alloc]
        initWithProductIdentifiers:[NSSet setWithObject:kRemoveAdsProductIdentifier]];
        productsRequest.delegate = self;
        [productsRequest start];
    }
    else{
    }
}

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
    SKProduct *validProduct = nil;
    int count = (int)[response.products count];
    if(count > 0){
        validProduct = [response.products objectAtIndex:0];
        [self purchase:validProduct];
    }
    else if(!validProduct){
    }
}

- (void)purchase:(SKProduct *)product{
    SKPayment *payment = [SKPayment paymentWithProduct:product];

    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    [[SKPaymentQueue defaultQueue] addPayment:payment];
}

- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue{
    for(SKPaymentTransaction *transaction in queue.transactions){

        if(transaction.transactionState == SKPaymentTransactionStateRestored){
            [self doRemoveAds];
            [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
            break;
        }
    }   
}

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions{

    for(SKPaymentTransaction *transaction in transactions){

        switch(transaction.transactionState){
            case SKPaymentTransactionStateDeferred: 
                break;
            case SKPaymentTransactionStatePurchasing:
                break;
            case SKPaymentTransactionStatePurchased:
                [self doRemoveAds];
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                break;
            case SKPaymentTransactionStateRestored:
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                if(transaction.error.code == SKErrorPaymentCancelled){
                }
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                break;
        }
    }
}

- (void)restorePurchasesButton {
    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}

- (void)doRemoveAds{
    //Does my ad removal stuff.
}

【问题讨论】:

    标签: objective-c in-app-purchase touch-id


    【解决方案1】:

    请关注https://discussions.apple.com/thread/5349382?tstart=0线程。希望这对你有帮助。

    【讨论】:

    • 对不起,我没有关注。我读到的唯一相关内容是必须在 Dev 端设置 Touch ID。所以这意味着如果我保持原样,为 App Store 购买启用 Touch ID 的人只会被提示输入密码,它应该可以正常工作吗?
    猜你喜欢
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    相关资源
    最近更新 更多