SKPaymentTransactionStateRestored не вызывается при восстановлении покупки в приложении - PullRequest
8 голосов
/ 24 июля 2011

В моей покупке в приложении метод case SKPaymentTransactionStateRestored: не вызывается при восстановлении покупки, вместо этого вызывается case SKPaymentTransactionStatePurchased:, но он хотел бы показать пользователю другую информацию при восстановлении покупки.

Ответы [ 4 ]

3 голосов
/ 17 октября 2011

[queue restoreCompletedTransactions] вызовет состояние SKPaymentTransactionStateRestored, где очередью является SKPaymentQueue. Вы не должны ожидать, что это будет вызвано после того, как ваш пользователь подтвердит транзакции. Вместо этого пользователь будет предупрежден устройством, если он уже приобрел продукт.

0 голосов
/ 26 апреля 2013

В случае, если это еще не решено, вы можете сделать это с помощью логического трюка. Когда восстановление запускается, запомните его с логическим флагом (или перечисленным состоянием, если хотите) и покажите другое сообщение, когда запускается SKPaymentTransactionStatePurchased. Вы можете реализовать два метода делегата

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue

и

- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error

чтобы узнать, когда восстановление было закончено. И чтобы сохранить в этом случае, вы можете не позволить пользователю делать какие-либо покупки, пока идет восстановление. Вы можете показать пользователю что-то вроде this , чтобы пользователь увидел, что что-то происходит в данный момент.

Это то, что я сделал, и это работает для меня.

0 голосов
/ 05 июля 2012

Вы можете реализовать paymentQueueRestoreCompletedTransactionsFinished: чтобы определить, завершено ли восстановление:

http://developer.apple.com/library/ios/#documentation/StoreKit/Reference/SKPaymentTransactionObserver_Protocol/Reference/Reference.html

0 голосов
/ 23 сентября 2011

Понятия не имею. Метод (paymentqueue: updatedTransactions :) и особенно SKPaymentTransactionStateRestored: состояние вызывается, когда я создаю SKProductRequest и начинаю его загружать.

SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithArray: productIdentifiers]];
        request.delegate = self; 
        [request start];

Я посмотрю решение для Apple и посмотрю, смогу ли я найти какие-либо отличия.

...