2010-07-29 1 views
3

Что происходит здесь программисты, яблоко выпустили storekit, и мы даже не можем получить какие-либо функции обратного вызова для отмены события, когда пользователь вводит в его/ее электронной почты и пароль дляловя отменить событие для [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]

. НЕ ДОПУСКАЙТЕ ЭТО КОНФUSЗИРОВАНИЕ с отменой отмены при отмене покупки, это отжимает отмену при попытке восстановить транзакции. нет обратных вызовов для пользователя, отменяющего отмену или даже нажатия кнопки ok. Единственный обратный звонок, который вы получаете, - это когда возвращается информация с сервера, указывающая, была ли она успешной или нет. Неприемлемо. пожалуйста, если у кого-нибудь есть ответ, ответьте. спасибо

ответ

9

Попробуйте это:

@protocol SKPaymentTransactionObserver <NSObject> 

.... 

@optional 

// Sent when an error is encountered while adding transactions from the user's purchase history back to the queue. 
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0); 


@end 
+2

Если кто-то хочет знать, как отличить Отмены и проблема соединения внутри paymentQueue: restoreCompletedTransactionsFailedWithError :, то вы должны смотреть на error.code. Я заметил, что я получаю код ошибки 2, когда отменяю восстановление, и код ошибки -1009, когда во время восстановления возникает проблема подключения. Обе ошибки содержат одно и то же локализованное описание: «Не удается подключиться к iTunes Store». Я не уверен в других кодах ошибок. То, что я делаю, завершает запрос молча, если это код 2 и показывается общее сообщение об ошибке. – aiham

+0

Я должен добавить, что нецелесообразно проверять значение 2, и было бы гораздо безопаснее проверить коды ошибок, приведенные в http://developer.apple.com/library/ios/#documentation/StoreKit/Reference /StoreKitTypes/Reference/reference.html В случае отмены, вам нужно будет сравнить код ошибки с SKErrorPaymentCancelled. – aiham

+1

... который сейчас равен 2 (третий индекс в неназванном перечислении, определенный в ''), но, конечно, это может измениться. Сравнение с «SKErrorPaymentCancelled» кажется самым мудрым способом. –