我正在阅读这个应用内购买教程:
http://www.raywenderlich.com/21081/introduction-to-in-app-purchases-in-ios-6-tutorial
为了进行购买,我们需要执行以下操作:
SKProduct* product = ...;
SKPayment* payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue] addPayment:payment];
看起来我们需要将SKProduct
的实例传递给addPayment:
方法。这是否意味着每次用户打开我们的应用时,我们都需要从应用商店获取应用提供的产品列表?
在我的情况下,我有一个硬编码的产品标识符列表。我想知道人们是否一次获取SKProduct
个实例的列表,然后将它们缓存到磁盘。然后,在为应用添加更多产品之前,无需重新获取。我猜想像本地化价格这样的动态属性会阻止缓存。
每次应用运行时,重新获取产品列表是否典型?
由于
答案 0 :(得分:2)
不是每次应用程序启动时都不必强制提出产品请求。 它只取决于应用程序的要求。假设您的应用程序第一个屏幕是像商店SCreen在哪里显示要销售的项目。在这种情况下,您应该向Itunes商店发出产品请求,以便每次启动应用程序时都可以显示与产品相对应的最新信息。
假设在您的应用程序中,单击某个商店按钮时显示产品列表(单击时按任意按钮加载商店内容)。那么在这种情况下,您应该在该时间发出产品请求并在屏幕上显示这些产品。当点击其中任何一个(产品)时,您可以将SKProduct
传递给SKPaymentQueue
。在这种情况下,每次应用程序启动时都不需要向Itunes Store发出产品请求。< / p>
所以在这里,我会说你首先需要考虑你的应用程序要求。 我希望它可以帮助你。
答案 1 :(得分:1)
在我自己的应用程序中,每当用户进入我的应用程序中的“商店”屏幕时,我都会获取SKProducts,而不是每次运行应用程序时都是如此。如果用户此刻无意购买任何东西,则无需获取产品。等到用户选择查看可以在您的应用中进行的应用内购买的详细信息。