2014-10-03 23 views
6

benim app uygulama içi satın alma var ve iOS 8'e yeni işlemler, kısmen ne işe yaradığını anlamak ve ben UI engellemek ve benim UI güncelleştirmek değil gerektiğini a tech noteUygulamanın ertelenmiş SKPaymentTransaction yanıtına göre ne yapması gerekir?

açıklanan "ertelenmiş" vardır işlem durumunun ertelendiğini yansıtmak için. Ama şu anki işlemi göz ardı etmek için -(void)transactionDeferred:(SKPaymentTransaction *)transaction yöntemine ne koymalıyım?

Yalnızca UI'yi günceller miyim? Ayrıca kullanıcı arayüzünün içeriği ne olmalı? Fiyat etiketini "Satın almanız ertelenmiş" gibi bir şeyle değiştirmem gerekiyor mu? Bunu test etmenin bir yolu olduğunu düşünmüyorum, en azından sandbox test hesabımla ilgili hiçbir şey görmedim. Süreci gözden geçirmenin ve nasıl çalıştığını görmenin bir yolu olsaydı, benim için çok daha mantıklı olurdu.

cevap

14

Ne yapıyorum geçerli:

Onay Beklerken:

  1. bir uyarı gösteriliyor düğmelerini
  2. geri ve satın etkinleştirilmesi göstergesi animasyonu
  3. Durdurma
    Teşekkür ederiz! Satın alma işleminiz ebeveyninizden onay beklerken Altershot'ı kullanmaya devam edebilirsiniz.

WWDC 14 videosunu izledim. Apple, kullanıcı arayüzünü engellememeniz gerektiğini ve tekrar satın al düğmesini tıklamanıza izin verdiğini söylüyor. Ebeveynlik uyarısı durumunda buna ihtiyacımız var, bu yüzden çocuk bir tane daha gönderebilir.

Bildiğim olduğunu biz olmamalı çağrı ertelenmiş işlemler için aşağıdaki yöntemi:

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

+8

dokümantasyon "Başvurunuz finishTransaction çağırmalıdır.: Başarıyla işlem işlenmiş ve kullanıcı tarafından satın işlevselliği kilidi yalnızca sonra" diyor devlet SKPaymentTransactionStateDeferred olduğunda finishTransaction çağırmanız gerekmediğini gösterir. – JulianSymes

+0

FAIL veya PURCHASED için beklemeniz gerekir. şimdi ertelenmiş olarak bitirmeTransaction'ı çağırmalısınız. – Pichirichi

+0

@Pichirichi teşekkürler, cevabımı güncelledim. –

2

satmak istediğiniz ürün kimliği ertelenmiş modda ise kod feryat kontrol sağlayacak . UI'yi uygun şekilde güncellemek için kullanın.

if ([[SKPaymentQueue defaultQueue].transactions count] > 0) { 
    for (SKPaymentTransaction *transaction in [SKPaymentQueue defaultQueue].transactions) { 
     if ([@"your.product.id" isEqualToString:transaction.payment.productIdentifier]) { 
      if (transaction.transactionState == SKPaymentTransactionStateDeferred) { 
       // update UI that you are still waiting for parent approval. You'll get "PURCHASED" if parent approved or "FAILD" if parent declined or 24 hours passed since request. 
      } 
      break; 
     } 
    } 
}