iOS - 如果应用程序本身已购买,则在应用内购买时恢复

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS - 如果应用程序本身已购买,则在应用内购买时恢复相关的知识,希望对你有一定的参考价值。

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];
    }
}

谢谢。

答案

不可以,在添加应用内购买之前,您无法使用“恢复购买”功能向最初购买非免费应用的用户授予访问权限。当然,对于购买应用内购买的新用户,您需要在更新的应用中使用该功能。

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

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

以上是关于iOS - 如果应用程序本身已购买,则在应用内购买时恢复的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中取消或退款已购买的消耗品应用内购买?

iOS 应用内购买。如何查看购买是不是已经购买?

iOS 应用内购买不适用于真实账户,但可以使用沙盒

iOS 应用内购买无后端

有没有办法避免iOS中任何购买的应用内(30%)费用?

更新 iOS 应用内购买的流程是啥?