【问题标题】:How to carry on In-App Purchase throughout whole app? (Remove ads from MULTIPLE views)如何在整个应用程序中进行应用内购买? (从 MULTIPLE 视图中删除广告)
【发布时间】:2015-08-02 06:39:20
【问题描述】:

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

更好的理解:

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

【问题讨论】:

  • 你的问题不是很清楚。通常,在您验证购买后,您会在 NSUserDefault 或钥匙串中存储一个标志。并创建一个助手,它将在您需要知道的每个地方返回 iap 的状态。

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


【解决方案1】:

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

在本例中,我们使用NSUserDefaults 来检查密钥removeAds 是真还是假YESNO。在您将密钥设置为 YES 之前,if 语句将始终为真。更多关于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

【讨论】:

  • Sweet,我想我可以在 Swift 中得到它吗?我不知道目标 C。
  • 您应该学习 Objective-C 语法,以便在必要时将 sn-ps 翻译成 Swift。这是一项至关重要的技能,而且很容易学习。
【解决方案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 的语法,这样你以后就可以自己翻译这样的东西了。这很简单,阿米特。将 Daniel 的答案标记为正确。

【讨论】:

  • 不太明白这个。在我有广告的每个视图控制器中,我应该把这段代码放在哪里?
  • 技术上你不需要调用 synchronize() 除非你迫不及待(例如你即将退出或想要重新加载磁盘上的内容)。系统会定期调用。
  • 这实际上是我在 Twitter 上谈论 OOP 时所指的。在多个地方使用相同的代码是非常糟糕的做法,可能会导致大量问题。
  • 哦,真的吗?我不知道@DamonJones!谢谢你分享。 :)
  • 正如@user523234 在原始问题中提到的那样,您应该从中创建一个辅助类,这样您就可以调用一个辅助方法来访问 sn-p。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-21
  • 1970-01-01
  • 1970-01-01
  • 2020-08-05
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
相关资源
最近更新 更多