在iOS中管理SKProductsRequest的最佳方法是什么?

时间:2014-08-11 13:26:36

标签: ios ios7 in-app-purchase storekit

我正在开发一款可在应用内购买非耗材的应用。

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

我们的应用:

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

问题:

何时是start上的SKProductsRequest来从iTunes Connect获取产品等的最佳时间?在application:didFinishLaunchingWithOptions:?或者在我的控制器加载时?

  • 我们希望在屏幕上显示产品价格,同时避免产品价格发生变化,用户的应用程序未在屏幕上更新价格。

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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

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

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

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

希望有意义并帮助某人?

答案 2 :(得分:-1)

如果您想动态显示In App Purchase的价格,我认为您不应该在应用程序didFinishLaunchingWithOptions中调用方法。

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

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

因此,如果您随时从itunes更改价格层,那么即使您的应用程序正在运行,每当用户访问该视图时,都会看到更改。

希望它对你有所帮助。