2012-06-13 9 views
41

I wprowadziły w zakupów aplikacji do mojego aktualizacji aplikacji po raz pierwszy, tylko zbyt czekać 3 tygodnie i to odrzucone z następujących powodów:W zakupów aplikacji przywrócić przycisk

okazało się, że aplikacja oferty -App Zakup/y, które mogą zostać przywrócone , ale nie zawiera funkcji "Przywróć", aby umożliwić użytkownikom przywrócenie wcześniej zakupionych Zakupów w aplikacji. Aby odtworzyć wcześniej zakupione produkty w ramach aplikacji, należy podać przycisk "Przywróć" i zainicjować proces przywracania po kliknięciu przycisku "Przywróć". .

Teraz myślałem o dodanie przycisku navbar w prawo (w górę) z moim stole, gdzie zakupy aplikacji można zobaczyć/podsłuchu i dodając następujący kod, który zostanie połączony z przyciskiem:

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

Czy ktoś może sprawdzić, czy jest to poprawne i najprawdopodobniej wszystko, co jest potrzebne? Chciałbym, aby tym razem udało się pomyślnie przejść. Z góry dziękuję!

+7

Mam takie samo powiadomienie o odrzuceniu. Czy zawsze podajesz przycisk "przywracania"?!?!Chcę automatycznie sprawdzić, czy nie ma tam zakupów w aplikacji, ale kiedy wywołuję metodę restoreCompletedTransactions, użytkownik jest proszony o podanie hasła. To jest do bani! Czy istnieje inny API do tego? Czy mogę po prostu zmienić przycisk "KUP" na "KUPUJ/PRZYWRÓĆ" ??? Co wciąż jest do bani. Nie mam miejsca na pełen czas przycisk "RESTORE". – whatchamacallit

+1

@whatchamacallit Wszystko, co zrobiłem, to umieszczenie poniższego kodu z góry na metodzie podłączonej do przycisku w pasku nawigacyjnym, która została zatwierdzona. Jeśli nie masz miejsca na przycisk w pasku nawigacyjnym, prawdopodobnie musisz umieścić go w widoku ... może w tabeli lub nad stołem. Powodzenia! –

+5

Nie widzę przycisku przywracania w Angry Birds for Mighty Eagle? Dlaczego nie zostało odrzucone? – erkanyildiz

Odpowiedz

27

Alex, zostałem odrzucony z tego samego powodu w zeszłym tygodniu, i to jest to, co Apple chciał - po dodaniu takiego przycisku Restore nie zadawali żadnego innego pytania na ten temat.

Oczywiście trzeba nie tylko dzwonić pod numer [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];, ale także zaimplementować samą funkcję przywracania (to znaczy udostępniając zawartość użytkownikowi).

+0

Dzięki za odpowiedź Nikita. Bardzo frustrujące. Zasadniczo to, co zrobiłem z moimi zakupami w aplikacjach, to gdy użytkownik dokonał zakupu, trafiają do zakupionej tablicy dla tego identyfikatora produktu. po dotknięciu widoku oferującego zakup w aplikacji widok sprawdza, czy użytkownik znajduje się w zakupionej macierzy i na podstawie tego przekierowuje automatycznie do widoku zakupu lub do widoku reklamy. Czy możesz mi powiedzieć, co się dzieje dokładnie w momencie wywołania metody restoreCompletedTranscations? Dzięki –

+0

restoreCompletedTranscations daje przywrócone transakcje delegatowi SKPaymentObserver, dzięki czemu będziesz mógł zobaczyć, co użytkownik kupił wcześniej. Transakcje są tylko SKPaymentTransactions, a ich stan to SKPaymentTransactionStateRestored. –

+0

Dzięki za pomoc! zaakceptuje –

41

używam wariant to:

//inside of an IBaction 
[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions]; 


// Then this is called 
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue { 
    NSLog(@"%@",queue); 
    NSLog(@"Restored Transactions are once again in Queue for purchasing %@",[queue transactions]); 

    NSMutableArray *purchasedItemIDs = [[NSMutableArray alloc] init]; 
    NSLog(@"received restored transactions: %i", queue.transactions.count); 

    for (SKPaymentTransaction *transaction in queue.transactions) { 
     NSString *productID = transaction.payment.productIdentifier; 
     [purchasedItemIDs addObject:productID]; 
     NSLog (@"product id is %@" , productID); 
     // here put an if/then statement to write files based on previously purchased items 
     // example if ([productID isEqualToString: @"youruniqueproductidentifier]){write files} else { nslog sorry} 
    } 
} 

Niestety, jestem na moim iPadzie, jeśli to nie ma sensu.

+6

[[SKPaymentQueue defaultQueue] addTransactionObserver: self]; rozwiązał mój problem! Dzięki! Wiele innych przykładów zaniedbuje tę linię. – Sunkas

+1

To nie jest dokładne. Po wywołaniu metody restoreCompletedTransations, metoda delegata, która zostanie wywołana, to - (void) paymentQueue: (SKPaymentQueue *) kolejka updatedTransactions: (NSArray *) transakcje – odyth

+0

Może to nie być dla ciebie dokładne, ale zadziwiająco dobrze dla mnie. hmmm. –

3

Alternatywnym przyciskiem przywracania może być przełącznik przywracania w app settings bundle. Nie przytłacza interfejsu użytkownika i wydaje się, że Apple go przyjmuje (ale pamiętaj, aby wspomnieć, że w ten sposób wdrożyłeś mechanikę).

BOOL shouldRestorePurchases = [[NSUserDefaults standardUserDefaults] boolForKey:@"restorePurchasesKey"]; 
+1

To nie zadziała, jeśli przejdziesz z mojego starego telefonu do nowego telefonu –

+0

@AbdulYasin metoda opisana oferuje do przechowywania boolean w pakiecie ustawień.W aplikacji musisz wdrożyć logikę tak jak w przypadku "przycisku przywracania". –

2

Zostałem odrzucony z tego samego powodu. Wynika to z faktu, że możesz być zalogowany z tym samym Apple ID na różnych urządzeniach ios.

Załóżmy na przykład, że jestem zalogowany na [email protected] na iPadzie. Po pobraniu aplikacji zdaję sobie sprawę, że chciałbym usunąć reklamy (powiedzmy, że masz reklamy w swojej aplikacji, jeśli tego nie robisz), więc usunę je dla 99¢. Rok później postanawiam kupić iPhone'a i zalogować się na to konto pod numer [email protected], a następnie ponownie pobrać aplikację. Reklamy wciąż tam są, mimo że już za nie zapłaciłem. Kto chciałby zapłacić za to samo dwa razy? Dzięki funkcji restore mogę przywrócić zakupy, które wykonałem na moim komputerze iPad, i sprawić, aby działały na moim iPhone.

Aby przywrócić zakupu, można użyć:

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

Po tym, trzeba też podać treść, która kupiła użytkownika.

Powiązane problemy