Подтвердить что ты не робот

Восстановить уже купленные в приложении покупки на iPhone?

Я до сих пор: после переустановки пользователь должен нажать кнопку "купить функцию", затем он испугался вопроса с 0,99 долл., затем должен войти в систему, а затем ему сообщили, что функция уже куплена, и он получает ее бесплатно,

Я знаю, что яблоко - это религия, а пользователи - сильные верующие, но нет ли лучшего способа?:-) Я хочу проверить эту функцию, не покупая ее. Позволяя пользователю вводить данные своей учетной записи, кажется, необходимо, может быть, купить $0,00? или есть способ где-то это делать?

Я использую MKStoreKit для всего In-App-Purchase, но любое решение будет замечательным.


UPDATE

thanx to darvids0n, ваш метод решил мою проблему! здесь некоторый рабочий код для других, пытающихся сделать то же самое:

- (void)removePreviousPurchases { //just for sandbox testing
    [[MKStoreManager sharedManager] removeAllKeychainData];
}

- (void)restorePreviousPurchases { //needs account info to be entered
    if([SKPaymentQueue canMakePayments]) {
        [[MKStoreManager sharedManager] restorePreviousTransactionsOnComplete:^(void) {
             NSLog(@"Restored.");
             /* update views, etc. */
        }
        onError:^(NSError *error) {
            NSLog(@"Restore failed: %@", [error localizedDescription]);
            /* update views, etc. */
        }];
    }
    else
    {
        NSLog(@"Parental control enabled");
        /* show parental control warning */
    }
}
4b9b3361

Ответ 1

Если элемент $0.99 не потребляется, тогда вы должны указать кнопку "Восстановить покупки" (или аналогичную), которая вызывает

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

Предполагая, что вы уже добавили наблюдателя транзакций и внедрили protocol, включая случай обработки восстановленной транзакции (с состоянием SKPaymentTransactionStateRestored), это сработает.

Ответ 2

Добавьте эти два метода:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];