Botão Restaurar para compra no aplicativo não consumível do iOS

A Apple infelizmente rejeitou meu aplicativo por não ter um botão de restauração. Eu queria ter uma experiência perfeita para o usuário, mas há alguns problemas.

- (void)purchaseProUpgrade
{ 
   [[SKPaymentQueue defaultQueue] addTransactionObserver:self];

   // User is prompted for iTunes username and password here (1)
   [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}

// Then this delegate Function Will be fired
- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{
    if( queue.transactions.count == 0 ) {

        [self setUpgradeProductId];

       // User is prompted for iTunes username and password here (2)
        SKPayment *payment = [SKPayment paymentWithProductIdentifier:kInAppPurchaseProUpgradeProductId];
       [[SKPaymentQueue defaultQueue] addPayment:payment];                                                                 

    }else {

      [[NSNotificationCenter defaultCenter] postNotificationName:kInAppPurchaseManagerTransactionSucceededNotification object:self userInfo:NULL];
    }
  }

A acima é uma boa solução? A lógica seria:

O usuário pressiona o botão para remover a compra no aplicativo.Verifique se o usuário já fez uma compra (o usuário tem que digitar o nome de usuário e senha)Se o usuário já fez uma compra, restaureSe o usuário ainda não fez uma compra, solicite o pagamento (o usuário deve digitar a senha novamente).

Os problemas com essa abordagem são: 1. Uma chamada adicional do servidor 2. O usuário deve inserir detalhes duas vezes.

Alguém realmente implementou um botão Restaurar que possa demonstrar?

questionAnswers(4)

yourAnswerToTheQuestion