IAP:如何保存购买的效果

时间:2016-02-28 23:03:46

标签: ios swift in-app-purchase iad

在我的应用中,我有一个IAP可以从屏幕底部删除iAd横幅。我通过以下代码实现了这一点。

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 个答案:

答案 0 :(得分:2)

你命名bool的方式令人困惑,你应该称之为

let removedAds = ....

而不是

 let showAds = ...  

如果您在启动时在viewControllers中调用此代码,我不明白为什么它无法正常工作。

你确定你没有使用本地默认的密钥输入错误吗? 你应该使用结构

struct Key {
    static let key = "Key1"
}

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

如果您还没有这样做以避免拼写错误。

还有另一行

self.canDisplayBannerAds = true
你忘了删除?

也许发布一些视图控制器的代码,这样我们就可以更多地了解发生的事情。

作为旁注,您无需致电

 defaults.synchronize()
自iOS 8以来

,所以你应该删除那一行。