Кнопка восстановления для покупки нерасходуемых материалов в приложении для iOS

Apple, к сожалению, отклонила мое приложение из-за отсутствия кнопки восстановления. Я хотел, чтобы у пользователя был беспроблемный опыт, но есть некоторые проблемы.

- (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];
    }
  }

Является ли вышеуказанное хорошим решением? Логика будет следующей:

  1. Пользователь нажимает кнопку, чтобы удалить покупку в приложении.
  2. Проверить, совершил ли пользователь покупку (пользователь должен ввести имя пользователя и пароль)
  3. Если пользователь уже совершил покупку, восстановить
  4. Если пользователь еще не совершил покупку, запросить оплату (пользователь приходится снова вводить пароль).

Проблемы с этим подходом: 1. Дополнительный вызов сервера 2. Пользователь должен ввести данные дважды.

Кто-нибудь реализовал кнопку «Восстановить», которую можно продемонстрировать?

12
задан Benjamin 18 February 2014 в 12:06
поделиться