2011-10-13 21 views
39

Dotarłem do tej pory: po ponownej instalacji użytkownik musi kliknąć "kupuj funkcję", a następnie przestraszy się pytaniem o 0,99 USD, następnie musi się zalogować, a następnie zostanie poinformowany, że funkcja jest już kupiona i otrzymuje ją za darmo.Przywróć już kupione zakupy w aplikacji na iPhonie?

Wiem, że jabłko jest religią, a użytkownicy są silnymi wyznawcami, ale czy nie ma lepszego sposobu? :-) Czego chcę, to sprawdzić tę funkcję, bez kupowania jej. Pozwolenie, aby użytkownik wprowadził swoje informacje o koncie, wydaje się być konieczne, może kupisz funkcję o wartości 0,00 USD? czy jest jakaś metoda, która to robi?

Używam MKStoreKit dla całego zakupu w aplikacji, ale każde rozwiązanie byłoby wspaniałe.


UPDATE

thanx do darvids0n, metoda rozwiązać mój problem! Oto niektóre kodu roboczego inni próbują to samo:

- (void)removePreviousPurchases { //just for sandbox testing 
    [[MKStoreManager sharedManager] removeAllKeychainData]; 
} 

- (void)restorePreviousPurchases { //needs account info to be entered 
    if([SKPaymentQueue canMakePayments]) { 
     [[MKStoreManager sharedManager] restorePreviousTransactionsOnComplete:^(void) { 
      NSLog(@"Restored."); 
      /* update views, etc. */ 
     } 
     onError:^(NSError *error) { 
      NSLog(@"Restore failed: %@", [error localizedDescription]); 
      /* update views, etc. */ 
     }]; 
    } 
    else 
    { 
     NSLog(@"Parental control enabled"); 
     /* show parental control warning */ 
    } 
} 

Odpowiedz

33

Jeśli pozycja $ 0.99 jest non-eksploatacyjnych, następnie należy podać przycisku (lub podobny) „Przywróć zakupy”, który nazywa

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

Zakładając dodałeś już obserwatora transakcji i wdrożyłeś protocol, w tym skrzynkę do obsługi przywróconej transakcji (ze stanem SKPaymentTransactionStateRestored), to zadziała.

+0

Dziękuję, w końcu znalazł sposób MKStore-Kit użyć do tego! (patrz edytuj na moje pytanie) –

+0

Jeśli mam 10 identyfikatorów zakupu innych niż konsumpcyjne, z których 4 są kupowane przez użytkownika. Czy w trakcie przywracania mogę się dowiedzieć, które z nich zostały wcześniej zakupione, a które nie? – Satyam

+0

@Satyamsvv Nie otrzymasz zwrotów za zakupy, których użytkownik nie kupił. Otrzymasz tylko 4 zaktualizowane transakcje w metodzie 'SKPaymentTransactionObserver' [' -paymentQueue: updatedTransactions: '] (http://developer.apple.com/library/ios/documentation/StoreKit/Reference/SKPaymentTransactionObserver_Protocol/Reference/Reference.html # // apple_ref/doc/uid/TP40008262-CH1-SW3), a 'transactionState' z nich będzie' SKPaymentTransactionStateRestored'. – darvids0n

9

Dodaj te dwie metody:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 

[[SKPaymentQueue defaultQueue]restoreCompletedTransactions]; 
+0

gdzie powinienem dodać te dwie metody? –

+0

gdzie powinienem to ująć – coolcool1994

Powiązane problemy