【问题标题】:What's the best way to manage SKProductsRequests in iOS?在 iOS 中管理 SKProductsRequest 的最佳方法是什么?
【发布时间】:2014-08-11 13:26:35
【问题描述】:

我正在开发一款提供应用内购买非消耗品的应用。

非消耗品内置于应用程序中,而不是从服务器下载,因此实际上我们只是授予对内容的访问权限。

我们的应用:

  • 显示 Netflix 风格的内容库 - 有些是免费的,有些是可购买的。
  • 必须在没有 Internet 连接的情况下工作(尽管购买时需要连接,obvs。)
  • 应该显示图书馆内可购买的内容,即使没有互联网连接

问题:

何时是通过SKProductsRequest 致电start 以从iTunes Connect 获取产品等的最佳时间?在application:didFinishLaunchingWithOptions:?还是在我的控制器中加载?

  • 我们希望在屏幕上显示产品价格,同时也避免出现产品价格发生变化,而用户的应用没有在屏幕上更新价格的情况。

我应该多久更新一次产品信息?每当屏幕加载?什么时候出现?应用何时启动?

【问题讨论】:

  • 那么您是否从 iTunes 动态获取应用内价格?这些值不会一直相同,对吧?
  • 它们会因地区而异(虽然是同一层),并且它们可能会随着时间而变化,但并不经常发生。
  • 我用它作为应用内购买的框架:github.com/robotmedia/RMStore

标签: ios ios7 in-app-purchase storekit


【解决方案1】:

一个好的解决方案是实现推送通知,每当您更改价格时,向应用广播推送通知,这将获取新价格!

更新: 如果当时没有互联网,那么您可以使当前价格无效,以便在再次启动应用程序时更新价格!您可以将BOOL 存储在NSUserDefaults 中,以告知价格是否是最新的。

【讨论】:

  • 如果设备当时没有互联网连接怎么办?无法保证推送通知 - 对吧?
  • 好主意 - 我会试试的。谢谢!
【解决方案2】:

我使用 NSNotificationCenter 想出了自己的解决方案。

基本上我的流程是这样的:

  • 应用启动时,告诉我的自定义ProductList 类更新产品列表。
  • 当应用的互联网连接状态发生变化(变为已连接)时,通知ProductList 类更新产品列表。
  • ProductList 方法 update_all 将仅在以下情况下执行 iTunesConnect 请求:
    • 我存储的 SKProducts 数组是空的(我们还没有产品信息)
    • 或产品列表在一天或更长时间内未更新(信息可能已过时)

由于我想处理用户在没有互联网连接的情况下启动设备并在连接之前加载可购买的内容的情况,所以我设置了一个观察者。

一旦从 iTunes connect 检索到产品,我会向可能正在观察的任何视图发送 NSNotification,以便他们可以更新价格等。

希望这有意义并能帮助别人?

【讨论】:

    【解决方案3】:

    如果您想动态显示应用内购买的价格,那么我认为您不应该调用应用程序 didFinishLaunchingWithOptions 中的方法。

    因为每次只有在您的应用启动时才会调用它。如果您的应用程序正在运行并且您当时更改了应用程序的价格层,那么用户届时将无法看到该更改。用户必须重新启动应用程序。

    所以你应该从你的视图控制器的 ViewWillAppear 方法中调用它。这就是我为我的一个项目所做的。

    因此,如果您随时从 iTunes 更改价格层级,那么即使您的应用正在运行,那么无论何时用户进入该视图,都会看到更改。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 2021-08-31
      • 2012-04-08
      • 2010-09-16
      • 1970-01-01
      • 2020-01-18
      • 2014-09-30
      相关资源
      最近更新 更多