22

非消耗品のアプリ内購入を使用してアプリケーションを実装していますが、Apple によって拒否されました。理由は次のとおりです。

お客様のアプリは復元可能なアプリ内購入を提供していますが、ユーザーが以前に購入したアプリ内購入を復元できる「復元」機能が含まれていないことがわかりました。

以前に購入したアプリ内購入製品を復元するには、「復元」ボタンを提供し、「復元」ボタンがタップされたときに復元プロセスを開始することが適切です。

トランザクションの復元とストアの領収書の確認に関する詳細については、

参照するリンクはありません。私はすでに以下を実装しています:

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

ケース付き SKPaymentTransactionStateRestored

しかし、私は実装しませんでした:

`restoreCompletedTransactions`  or `paymentQueueRestoreCompletedTransactionsFinished`

アプリ内購入が承認されるためにこれらの方法が必要ですか、それとも正確な問題は何ですか。

ありがとう

4

1 に答える 1

22

以下を使用して、ユーザーがアプリから購入した製品 ID を復元します

- (void) checkPurchasedItems
{
   [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}// Call This Function

//Then this delegate Function Will be fired
- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{
  purchasedItemIDs = [[NSMutableArray alloc] init];

  NSLog(@"received restored transactions: %i", queue.transactions.count);
  for (SKPaymentTransaction *transaction in queue.transactions)
  {
      NSString *productID = transaction.payment.productIdentifier;
      [purchasedItemIDs addObject:productID];
  }

}

purchaseItemIDs には、ユーザーが購入したすべての製品 ID が含まれます。終了時にこの関数を呼び出すボタンを配置して、これらすべての製品を表示して、ユーザーが再度ダウンロードできるようにすることができます。

于 2012-06-11T06:50:21.590 に答える