2016-02-28 50 views
0

在我的應用程序中,我有一個IAP從屏幕底部移除iAd橫幅。我通過以下代碼實現了這一點。IAP:如何保存購買的效果

func removeAds() { 
    let defaults = NSUserDefaults.standardUserDefaults() 
    defaults.setBool(true, forKey: "productID is here") 
    purchaseButton.alpha = 0.0 
    self.canDisplayBannerAds = false 
    print("iAd removed and default value set") 
    defaults.synchronize() 
    } 
} 

我也有我的其他視圖控制器

let defaults = NSUserDefaults.standardUserDefaults() 
    let showAds = defaults.boolForKey("productID is here") 
    if (showAds) { 
     // User purchsed IAP 
     // Lets remove ads 
     self.canDisplayBannerAds = false 
     print("iAd removed") 
    } else { 
     // IAP not purchased 
     // Lets show some ads 
     self.canDisplayBannerAds = true 
     print("Showing iAd") 
    } 

此代碼時,我購買了測試用戶,它是成功的,廣告是從該視圖控制器中刪除。但是,只要我離開我購買的視圖並返回,廣告就會再次出現。我的購買是非消耗型的。

我的問題是如何使這個永久

感謝。

+1

你在第二塊中顯示的代碼在哪裏?如果它在'viewDidLoad'中,那麼當你返回到購買之前加載的視圖控制器時,它將不會被執行。在'viewWillAppear'中試一下' – Paulw11

+0

是的,它在viewdidload中,在viewwillappear中試過,但沒有廣告出現,只是它的空間 – Khoury

+0

如果你不顯示橫幅視圖,你需要調整你的約束或者操縱你的佈局。您是否也知道iAd將在幾個月內停產? – Paulw11

回答

2

您指定的布爾是混亂的樣子,你也許應該把它稱爲

let removedAds = .... 

let showAds = ... 

,而不是如果您在viewControllers發佈之時我不明白爲什麼它叫這個代碼不會工作。

你確定你還沒有用localdefaults的鍵打錯了嗎? 你應該使用結構

struct Key { 
    static let key = "Key1" 
} 

struct ProductID { 
    static let removedAds = "Your removed ads product ID" 
} 

如果你沒有這樣做,以避免錯別字。

是否存在的

self.canDisplayBannerAds = true 

,你忘了刪除另一條線?

也許會發布一些視圖控制器的更多代碼,以便我們可以更多地瞭解發生了什麼。

作爲一個側面說明,你不必叫

defaults.synchronize() 

了,因爲iOS 8的,所以你應該刪除該行。

相關問題