为什么SKProductsRequest需要产品标识符?

时间:2014-08-03 10:17:36

标签: ios xcode5 in-app-purchase

我正在尝试实施应用内购买。

我已经在iTunes Connect中注册了一些应用内购买。我认为这足以让应用程序找出应用内购买。但应使用产品ID初始化SKProductsRequest。

[[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:productIdentifiers]];

SKProductRequest可以知道应用内购买的名称,价格和产品ID。当它与Apple服务器通信时,即使没有productIdentifier初始化也是如此。正确?

所以,我不明白为什么SKProductsRequest需要产品ID。 我是否可以在没有产品ID的情况下使用它来从Apple服务器检索应用内购买内容?

1 个答案:

答案 0 :(得分:3)

您需要为initWithProductIdentifiers调用提供一组有效的产品标识符,因为这是API指定的内容。

  

要使用SKProductsRequest对象,请使用列表初始化它   产品标识符字符串,附加委托,然后调用   请求的启动方法。请求完成后,您的代表   收到SKProductsResponse对象。

为什么API以这种方式设计是一个观点问题(除了Apple的人们,他们知道为什么他们这样设计)。我的意见是,通过要求应用程序提交产品标识符集,可以避免在以下情况下可能出现的问题:

  1. 发布了支持应用内购买的应用
  2. 发布后,新的应用内购买已添加到iTunesConnect并获得批准
  3. 该应用会显示一个购买界面,可自动显示所有已批准的应用内购买
  4. 用户购买新产品,但该应用无法完成此次购买,因为它不知道购买的是什么(该应用是在产品定义之前发布的)
  5. 用户向苹果发出退款,因为该应用未提供内容/功能,或者用户因为没有获取内容/功能而感到恼火,但没有投诉并获得退款但在以下情况下经验不佳应用程序采购