IOS В запросах на покупку приложений дважды - программирование
Подтвердить что ты не робот

IOS В запросах на покупку приложений дважды

Я добавляю в App Purchase в одно из своих приложений. При необходимости я добавил кнопку, чтобы пользователи могли повторно загружать купленные предметы. Вот для этого метод IBAction:

- (IBAction)touchedButtonUnlockAgain:(id)sender {
    [self.activityIndicator startAnimating];            
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

}

Когда я нажимаю эту кнопку, я получаю стандартное поле для входа. Я ввожу имя пользователя и пароль Sandbox (правильно, проверено). После этого окно регистрации исчезает, оно появляется через полсекунды позже. Итак, я снова вхожу в систему с тем же именем пользователя и паролем (правильно, проверено), и THEN покупки загружаются повторно. Я проверил, что это происходит в Simulator и на устройстве (iOS 6.0 в обоих случаях).

Почему я дважды запрашиваю свое имя пользователя/пароль?

4b9b3361

Ответ 1

Единственная причина для этого - незавершенные транзакции - призраки, ожидающие своего вызова finishTransaction для погашения. Они могут существовать из-за подписанных пользователем инициированных пользователем транзакций, которые не могут быть завершены, или просто из-за внезапного завершения приложения, прежде чем они смогут закончить. В принципе, неуравновешенные вызовы addPayment/restoreCompletedTransactions и finishTransaction могут вызывать их.

Проверьте своих делегатов: paymentQueue:RestoreCompletedTransactionsFinished: и paymentQueue:restoreCompletedTransactionsFailedWithError:

Вы делаете что-нибудь дважды? Вы получаете какую-либо ошибку?

Еще одна вещь, которую нужно проверить: когда в жизненном цикле приложения вы вызываете следующую инструкцию?

[[SKPaymentQueue defaultQueue] addTransactionObserver]

Это важно, чтобы быть вызванным как можно раньше - потому что иногда теряются транзакции, которые превращают призраков из-за закрытия приложения, - ожидая завершения. Без активного наблюдателя они не попадают в метод updatedTransactions, который является их окончательным шлюзом к вызову finishTransaction.

Ответ 2

В телефоне попробуйте войти в Настройки /iTunes и App Store и выйдите из существующего Apple ID, указанного там. Вернитесь в свое приложение и повторите попытку.