В моей покупке в приложении метод case SKPaymentTransactionStateRestored:
не вызывается при восстановлении покупки, вместо этого вызывается case SKPaymentTransactionStatePurchased:
, но он хотел бы показать пользователю другую информацию при восстановлении покупки.
SKPaymentTransactionStateRestored не вызывается при восстановлении покупки в приложении
Ответы (4)
[queue restoreCompletedTransactions] активирует состояние SKPaymentTransactionStateRestored, где очередью является SKPaymentQueue. Вы не должны ожидать, что это будет вызвано после того, как ваш пользователь подтвердит транзакции. Вместо этого пользователь будет предупрежден устройством, если он уже приобрел продукт.
У меня есть подсказка. Метод (paymentqueue:updatedTransactions:) и особенно состояние SKPaymentTransactionStateRestored: вызывается, когда я создаю SKProductRequest и начинаю его загружать.
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithArray: productIdentifiers]];
request.delegate = self;
[request start];
Я посмотрю на решение Apple и посмотрю, смогу ли я найти какие-либо различия.
Вы можете реализовать paymentQueueRestoreCompletedTransactionsFinished:, чтобы определить, было ли завершено восстановление:
В случае, если это еще не решено, вы можете сделать это с помощью логического трюка. Когда запускается восстановление, запомните его логическим флагом (или состоянием перечисления, если хотите) и покажите другое сообщение, когда запускается SKPaymentTransactionStatePurchased. Вы можете реализовать два метода делегата
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
и
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
чтобы узнать, когда восстановление было завершено. И чтобы сэкономить в этом случае, вы можете не позволять пользователю совершать какие-либо покупки, пока идет восстановление. Вы можете показать пользователю что-то вроде это, чтобы пользователь видит, что что-то в данный момент происходит.
Это то, что я сделал, и это работает для меня.