EDIT:
元々、私は必要なものを得るために非常に長く、不必要な方法を投稿しましたが、以下に示すように、Mattは私がvari私が探していたことができました。
たとえば、以前にユーザーが自分のアプリを購入し、使用できないIAPをすべて購入してからアプリを削除したとします。ユーザーがアプリを再インストールするとき、私は彼らがいつ再び製品を購入するのかを判断できるようにしたいのですが、これは元の(初めての)購入か修復購入ですか?
私は「すべての購入を復元する」ボタンを実装しましたが、ユーザーはそれを見ていない/見ていないとし、前に購入した商品を選択しようとします。
通常の購入と同じように、私は、次の手順を実行します。ユーザーは自分のiTunesアカウントにログインした
if ([SKPaymentQueue canMakePayments])
{
self.productRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:productID]];
self.productRequest.delegate = self;
[self.productRequest start];
}
else
{
//error message here
}
した後、アプリケーションは、彼らがすでにこれを購入しているし、それが今で復元されますお知らせいたします。以下のデリゲートメソッドが呼び出されます。
-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
{
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
if(transaction.originalTransaction)
{
NSLog(@"Just restoring the transaction");
}
else
{
NSLog(@"First time transaction");
}
break;
}
default:
break;
}
}
}
トランザクションが復旧または初めて購入した場合はどんなに、transaction.transactionState
はSKPaymentTransactionStatePurchased
に等しいことになるだろう。
ここから、その購入が元の購入か修復購入かどうかをどのように判断するのですか?シンプル
:上記からわかるように、transaction.originalTransaction
が初期化されている場合だけ表示されます。 Appleの注記://状態がSKPaymentTransactionStateRestoredの場合のみ有効です。
SKPaymentTransaction
のoriginalTransaction
が初期化されている場合は、前回のトランザクションがあったことを意味します。それ以外の場合、このトランザクションは元のトランザクションです。
もう一度、正しい方向に私を指しているためとロジックロットクリーナーを作るためのマットに感謝!
あなたはhttp://stackoverflow.com/questions/1757467/when-to-use-restorecompletedtransactions-for-in-app-purchasesをご覧ください。 は、私の場合、私は –
おかげMicazeveを「以前のトランザクションの復元」ボタンでそれを使用しますが、ユーザーはちょうどので、スキップし続け、ボタンを「復元」と買い戻しにしようと経由して復元押すスキップ可能性のような分析的な観点からそれが聞こえますユーザーが購入したかどうか分析します。おそらく、トランザクションをすぐに開始するのではなく、製品を選択するときに、リストア・コンプリート・トランザクションを呼び出すときに、選択された製品がそのリストに含まれているかどうかを確認し、そうでない場合は、 。そのような痛み... – Will
すでに購入したアイテムを買戻ししようとすると、既にこのアイテムを購入したことをユーザーに警告するので、このボタンは不要です。この状況での主な問題は、彼が再び支払いを受け入れた後に警告されているということです。ユーザーが支払い手順をもう一度行う必要がないため、「復元ボタン」は心理的な方法で役立ちます。あなたが言ったように、そのような痛み;) –