【问题标题】:How to get List of Only Purchased Product Ids fron inApp in ios?如何从 ios 的 App 中获取仅购买的产品 ID 列表?
【发布时间】:2013-05-07 02:05:56
【问题描述】:

我有一个应用程序,其中我有 5 次非消耗性应用程序内购买。

在每次应用内购买时,我都会使用图像更新我的数据库。

有 5 个包可用于 5 个非消耗性应用内购买。

现在有一个恢复购买功能,因为它是应用内购买的非消耗品。

我的应用中有一个恢复按钮。但是如何识别已经购买了哪些产品?

我使用以下代码恢复应用内购买。但它不会更新我的数据库,因为它不知道以前购买了哪些产品。

    if ([transaction.payment.productIdentifier isEqualToString:@"Pack1"])
    {
        if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedp1Once"])
        {
           // app already launched
           NSLog(@"Launching secondtime");
       }
       else
       {
           [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedp1Once"];
           NSLog(@"Launching first time");
           requestText= @"Animal";
           [self MakeQueryForUpdate];
           [self getdata];
       }
}


else if ([transaction.payment.productIdentifier isEqualToString:@"Pack2"])
{

    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedp2Once"])
    {
        // app already launched
        NSLog(@"Launching secondtime");
    }
    else
    {
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedp2Once"];
        NSLog(@"Launching first time");
        requestText= @"Celebrity";
        [self MakeQueryForUpdate];
        [self getdata];
    }

}

else if ([transaction.payment.productIdentifier isEqualToString:@"Pack3"])
{

    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedp3Once"])
    {
        // app already launched
        NSLog(@"Launching secondtime");
    }
    else
    {
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedp3Once"];
        NSLog(@"Launching first time");
        requestText= @"Nature";
        [self MakeQueryForUpdate];
        [self getdata];
    }
}

如何获取仅购买的产品 ID 列表?

任何帮助将不胜感激...

【问题讨论】:

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


    【解决方案1】:

    要获取已购买产品的列表,您可以调用以下函数:

    [SKPaymentQueue defaultQueue] restoreCompletedTransactions];
    

    这将返回以前购买的物品列表。

    你可以找到更多细节herehere是苹果的文档。

    【讨论】:

      【解决方案2】:

      您可以使用以下命令恢复购买:

      [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
      

      然后SKPaymentTransactionObserver将调用它的

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

      具有 SKPaymentTransactionStatePurchased 交易状态。您可以看到它为交易返回一个 Array

      您可以使用,

      for (SKPaymentTransaction * transaction in transactions) {
          NSLog(@"Purchased indentifier : %@", transaction.payment.productIdentifier);
      }
      

      这将打印出用户已购买的标识符。您可以根据这些值设置 NSUserDefaults

      【讨论】:

      • :谢谢您的回复。我会试试这个。
      猜你喜欢
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      • 2020-01-12
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多