2011-10-13 20 views
39

Şimdiye kadar aldım: Bir yeniden yüklemeden sonra, bir kullanıcının "satın al özelliği" ni tıklaması, ardından 0.99 $ 'lık sorudan korkması, daha sonra giriş yapması ve daha sonra bu özelliğin satın alınmış olması gerektiğini söylemesi ve ücretsiz olarak alması gerekiyor.iPhone'da zaten satın alınan uygulama içi satın alımları geri yükleme?

Elmanın bir din olduğunu ve kullanıcıların güçlü inananlar olduğunu biliyorum, ama daha iyi bir yolu yok mu? :-) İstediğim şey, aslında satın almadan özelliği kontrol etmektir. Kullanıcının hesap bilgilerini girmesine izin vermek gerekli gibi görünüyor, belki de 0,00 $ bir özellik satın alıyor? ya da bunu yapan bir yerde bir yöntem var mı?

Uygulama İçi Satın Alma işleminin tamamı için MKStoreKit kullanıyorum, ancak herhangi bir çözüm harika olurdu. darvids0n için


GÜNCELLEME

dan, senin yöntem sorunumu çözdü! $ 0.99 öğesi olmayan sarf ise

- (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 */ 
    } 
} 

cevap

33

, o zaman bir "satın Restore" butonuna (veya benzeri) vermelidir varsayarsak

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

çağırır: burada, diğerleri aynı çalıştıkları için bazı çalışma kod Zaten bir işlem gözlemcisi eklediniz ve geri yüklenen bir işlemin (SKPaymentTransactionStateRestored durumundaki) çalışması için protocol uygulandı.

+0

, teşekkür ederiz! Ben 10 sigara sarf alım kimlikleri ve bunların dışında 4 kullanıcı tarafından satın Eğer –

+0

(Soruma düzenlemeyi bakınız). Geri yükleme sırasında, hangisinin daha önce satın alındığını ve hangilerinin bulunmadığını nasıl öğrenebilirim? – Satyam

+0

Aşağıdaki durumlarda kullanıcı satın henüz alımlar için geri aramalar almazsınız @Satyamsvv. Yalnızca "SKPaymentTransactionObserver" yönteminde 4 güncellenmiş işlem alacaksınız ['-paymentQueue: updatedTransactions:'] (http://developer.apple.com/library/ios/documentation/StoreKit/Reference/SKPaymentTransactionObserver_Protocol/Reference/Reference.html # // apple_ref/doc/uid/TP40008262-CH1-SW3) ve bunların 'transactionState'' SKPaymentTransactionStateRestored' olacaktır. – darvids0n

9

bu iki yöntem ekleyin: nihayet bu kullanmak için MKStore-Kit yöntemini buldum

[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 

[[SKPaymentQueue defaultQueue]restoreCompletedTransactions]; 
+0

Bu iki yöntemi nereye eklemeliyim? –

+0

nereye koymalıyım – coolcool1994

İlgili konular