2012-05-11 69 views
9

To jest mój pierwszy raz przy użyciu zestawu Store Kit i wszystko poszło świetnie, dopóki nie spróbuję przywrócić zakupów. Widziałem kilka innych postów na temat przepełnienia stosu w podobnych sprawach, ale nie znalazłem rozwiązania, które byłoby dla mnie skuteczne.paymentQueueRestoreCompletedTransactionsFinished: zwraca pustą kolejkę, gdy powinny być w niej zawarte transakcje

Mam przycisk w mojej aplikacji, który dzwoni pod numer [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]. To z kolei wyzwala metodę SKPaymentTransactionObserverpaymentQueueRestoreCompletedTransactionsFinished:. Problem polega na tym, że paymentQueueRestoreCompletedTransactionsFinished: ma zerową transakcję w zwróconej kolejce.

Jeśli spróbuję dokonać zakupu, otrzymam powiadomienie, że dokonałem już zakupu. To mówi mi, że sklep wie, że mój test Apple ID pomyślnie dokonał zakupu po wcześniejszej próbie. Dlaczego zatem paymentQueueRestoreCompletedTransactionsFinished: zwraca pustą kolekcję transakcji w jej kolejce?

Istnieje kilka wzmianek o tym, że piaskownica zachowuje się chaotycznie, ale muszę sprawdzić, czy działa, zanim przejdę do AppStore.

Wszelkie pomysły? Czy czegoś brakuje?

Z góry dziękuję.

Odpowiedz

8

Czy obsługujesz transakcje pod numerem -paymentQueue:updatedTransactions:? To wywołanie zwrotne uzyskuje przywrócone transakcje przed oddzwonieniem z numeru paymentQueueRestoreCompletedTransactionsFinished:.

Powinieneś wykonać przetwarzanie i obsługę przywracania wewnątrz -paymentQueue:updatedTransactions:.

+6

Zajmuję się odtwarzaniem w obu metodach. Najdziwniejsze było rozwiązanie mojego problemu. Stworzyłem nowego użytkownika testowego w itunesconnect, a nowy użytkownik zachowuje się zgodnie z oczekiwaniami. Z jakiegoś powodu mój pierwszy użytkownik testowy nie może przywrócić zakupów. – process255

+0

To niepokojące. Mam nadzieję, że konta w świecie rzeczywistym nie działają w ten sposób. – Hyperbole

+0

Doświadczyłem EXACT to samo. Wyciągałam włosy na dwa dni, okazało się, że coś niewłaściwego w przypadku testowych użytkowników, z których korzystałem. Stworzyłem nowego użytkownika testowego, a potem wszystko dobrze. – Dermot

7

Uważam, że jest to błąd w piaskownicy App Store. Moje przywracania nie działały z moimi kontami testowymi (utworzonymi w erze iOS 5.0). -paymentQueue:updatedTransactions: nie został wywołany podczas przywracania.

Zgodnie z sugestią podaną przez process255 utworzyłem nowego użytkownika testu w iTunes Connect. Dzięki nowemu kontu testowemu wszystko działa poprawnie!

0

To zależy od rodzaju produktu które produkty będą kolejce z powrotem w:

-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue 

jako alternatywny, przeczytaj otrzymanie w:

[[NSBundle mainBundle] appStoreReceiptURL] 

tylko problem z wpływów jest że są przechowywane lokalnie, ale jabłko nie utrzymuje ich w zawieszeniu. Oczywiście zakupy są zapisywane również na serwerze Apple. Odśwież/załaduj potwierdzenie przez:

SKReceiptRefreshRequest *recreq = [[SKReceiptRefreshRequest alloc] init]; 
[recreq start]; 
Powiązane problemy