iOS-如果已经购买了应用本身,则可以恢复应用购买

时间:2019-04-21 23:51:17

标签: ios objective-c in-app-purchase

iOS应用是最初付费的应用,后来通过应用内购买选项免费提供。

对于已经购买了该应用程序的用户,下面的restore代码是否真的可以恢复?还是只将应用专门还原到应用内购买?

如果仅是应用程序内购买,我如何才能确保已为该应用程序实际付款的用户也已“恢复”:

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

    for (SKPaymentTransaction *transaction in transactions)
    {
        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased:
                NSLog(@"Purchased Case");
                [defaultQueue finishTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                NSLog(@"Failed Case");
                [defaultQueue finishTransaction:transaction];
                break;
            case SKPaymentTransactionStateRestored:
                NSLog(@"Restored Case");
                [defaultQueue restoreCompletedTransactions];
                break;                
            default:
                break;
        }
    }

}

然后我使用以下方法获取应用程序内购买产品本身:

- (void) getProductInfo
{
    if ([SKPaymentQueue canMakePayments])
    {
        NSSet *productID = [NSSet setWithObject:@"myoneoffid"];
        SKProductsRequest *request = [[SKProductsRequest alloc]initWithProductIdentifiers:productID];
        request.delegate = self;
        [request start];
    }
}

谢谢。

1 个答案:

答案 0 :(得分:2)

否,您不能使用“还原购买”功能向最初在添加应用内购买之前购买非免费应用的用户授予访问权限。当然,对于确实购买了应用内购买的新用户,您需要在更新的应用中具有该功能。

要处理应用的早期购买者,您需要进行收据验证。您可以获取收据并检查原始购买版本。如果该版本比您通过应用内购买转换为免费版本的版本要旧,那么您可以授予用户访问这些功能的权限,而无需让他们付费。

有关更多详细信息,请参见Change paid app to free but know if user previously purchased it