2016-01-31 125 views
0

我想做一個簡單的IAP刪除我的應用程序的所有廣告。 當我購買IAP它工作,但當我嘗試restore購買與清潔沙箱帳戶(它從來沒有購買IAP),它的工作。MKStoreKit恢復購買總是成功

因此,restorePurchases()總是工作,即使用戶以前沒有購買IAP。

有我的代碼: 當用戶選擇還原按鈕,我執行這個方法:

func restaureIAP() { 
    PKNotification.toast("Chargement en cours...") 
    MKStoreKit.sharedKit().restorePurchases() 
} 

我還補充觀察員:

// Product restaure 
     NSNotificationCenter.defaultCenter().addObserverForName(kMKStoreKitRestoredPurchasesNotification, 
      object: nil, queue: NSOperationQueue.mainQueue()) { (note) -> Void in 
       PKNotification.success("Restauré !") 
       print ("Succes restaure: \(note.object)") 

       NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isPurchase") 
     } 

     NSNotificationCenter.defaultCenter().addObserverForName(kMKStoreKitRestoringPurchasesFailedNotification, 
      object: nil, queue: NSOperationQueue.mainQueue()) { (note) -> Void in 
       PKNotification.failed("Erreur") 
       print ("Failed restaure: \(note.object)") 
     } 

此應用程序可在AppStore,並有同樣的問題:購買IAP工作,但購買restore總是成功。

你有什麼想法嗎?

+1

什麼是您的IAP產品的類型? –

+0

「transactionState」屬性的值是什麼? – holex

+0

這是非消耗性IPA – FlorianG

回答

0

您可以使用MKStoreKitRestoredPurchasesNotificationkMKStoreKitRestoringPurchasesFailedNotification觀察員檢查恢復交易。

MKStoreKit.sharedKit().startProductRequest() 
NSNotificationCenter.defaultCenter().addObserverForName(kMKStoreKitRestoredPurchasesNotification, 
    object: nil, queue: NSOperationQueue.mainQueue()) { (note) -> Void in 
    print ("Restored product: \(note.object)") 
} 

NSNotificationCenter.defaultCenter().addObserverForName(kMKStoreKitRestoringPurchasesFailedNotification, 
    object: nil, queue: NSOperationQueue.mainQueue()) { (note) -> Void in 
    print ("Restored failed") 
} 
+0

這是錯誤的代碼,我改變了我的第一篇文章。它不適用於MKStoreKitRestoredPurchasesNotification和kMKStoreKitRestoringPurchasesFailedNotification – FlorianG