如何在整个应用程序中进行应用程序内购买? (从MULTIPLE视图中删除广告)

时间:2015-08-02 06:39:20

标签: ios swift in-app-purchase iad restore

我已经编写了应用内购买代码以删除广告,但它完美无瑕,但它只适用于我从中移除广告的视图控制器。我希望它能贯穿整个应用程序。我该怎么办?

更好地理解:

我的应用中有几个视图控制器上的广告。我有一个信息视图控制器,您可以在其中购买广告的删除。问题是:它不会延续到我的其他视图,就像我回到菜单视图控制器一样。此外,当我返回信息视图时,它仍然有广告,直到我从购买恢复。我不希望用户持续恢复购买。怎么让这个工作?

2 个答案:

答案 0 :(得分:2)

正如评论中提到的@ user523234,您应该使用NSUserDefault来存储与购买IAP相对应的值。

在此示例中,我们使用NSUserDefaults来检查密钥removeAds是真还是假,YESNO。在您将密钥设置为if之前,YES语句将始终为真。有关NSUserDefaults的更多信息,请参阅 NSUserDefaults Class Reference

// Create this globally
NSUserDefaults *defaults;

// Setup your NSUserDefaults in your viewDidLoad for example
defaults = [NSUserDefaults standardUserDefaults];

// Check If IAP Has Been Purchased
if (! [defaults boolForKey:@"removeAds"]) {
    // NOT purchased
}

// Upon the successful purchase of your IAP you set the key to YES
[defaults setBool:YES forKey:@"removeAds"];
[[NSUserDefaults standardUserDefaults] synchronize]; // Save your changes

答案 1 :(得分:2)

Daniel Storm的回答是正确的。以下是Swift等价物:

let defaults = NSUserDefaults.standardUserDefaults()

if !defaults.boolForKey("removeAds") {
    // Not Purchased.
}

// Upon the successful purchase of your IAP, you set the key to true.
defaults.setBool(true, forKey: "removeAds")

// Save your changes.
NSUserDefaults.standardUserDefaults().synchronize()

我建议您使用Objective-C语法,以便将来自己翻译。这很简单,阿米特。马克丹尼尔的回答是正确的。