0

アプリ内購入で非消耗品が 5 つあるアプリを使用しています。

アプリ内購入ごとに、DBを画像で更新します。

5 つの非消耗品のアプリ内購入には 5 つのパッケージがあります。

非消耗品のアプリ内購入であるため、復元購入機能が追加されました。

私のアプリには単一の復元ボタンがあります。しかし、どの製品がすでに購入されているかを識別する方法は?

アプリの購入で復元するために次のコードを使用します。しかし、以前に購入した製品がわからないため、DB は更新されません。

    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 のみのリストを取得するには?

どんな助けでも大歓迎です...

4

2 に答える 2

5

を使用して購入を復元できます。

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

次に、SKPaymentTransactionObserverがその

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

SKPaymentTransactionStatePurchasedトランザクション状態で。トランザクションの配列を返すことがわかります。

を使用して単一のトランザクションを取得できます。

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

これにより、ユーザーが購入した識別子が出力されます。これらの値に関してNSUserDefaultsを設定できます

于 2013-05-13T05:43:34.447 に答える
4

購入した製品のリストを取得するには、以下の関数を呼び出すことができます:

[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

これにより、以前に購入したアイテムのリストが返されます。

詳細についてはこちらをご覧ください。アップルのドキュメントはこちらです。

于 2013-05-13T05:43:33.597 に答える