在沙盒模式下显示的"清除待售"的应用购买产品

mad*_*ik3 5 in-app-purchase ios skproduct

我有一些应用内购买未在iTunes Connect中销售.

我的目标是在需要时启动应用程序后启用和禁用它们.

但是,当我在沙盒模式下测试时,所有这些产品都会出现.我曾假设SKProductsResponse会在其invalidProductIdentifiers方法中返回任何无效产品.

这是SandBox和生产模式之间的区别吗?即使这些产品没有被清除出售,它们是否总能出现?

the*_*atp 8

是,有一点不同.我刚刚发布了我的应用程序版本,它检查了11种不同的IAP,其中只有4种是已批准的.其中只有1个是"清仓待售".因此,在产品中,只有1出现.对于处于"已批准"状态的其他人,当我将其更改为"清除待售"时,他们会在我的应用程序中显示生产(一旦更改从Apple的服务器传播,这需要几个小时).

但是,在Sandbox中,我的应用程序正在查找的所有产品标识符都会显示,因为它会在AppStore中找到它们.就像你说的那样,它们是空白的.SKProduct没有可用于检查此"已清除待售"标志的属性.

事实上,我找到了你的帖子,因为我希望在这种情况下找到其他人 - 因为我的新版本因为这些"空白项目"而被拒绝了.您认为应用商店评论员会知道Sandbox的行为与Production不同.:/


Der*_*Lee 6

沙盒和生产环境之间的一些其他差异值得注意:

#1. “开发商下架”IAP 被确认为有效产品

我在 Apple App Store 中拥有一款应用程序已经有一段时间了,最​​近决定从销售中删除一项应用程序内购买 (IAP)。执行此操作后,在 iTunesConnect (AppStoreConnect) 上此应用程序的 IAP 设置中,此产品的状态显示为“开发者已从销售中删除”:

开发商被下架

即使如此,在使用沙盒环境时,该SKProductsRequestDelegate.productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse)方法仍会返回此“开发人员已从销售中删除”IAP 产品作为列表中的有效产品response.products,即使生产环境在列表中返回此 IAP 产品 ID response.invalidProductIdentifiers

更令人困惑的是,沙盒环境仍然允许我从我的应用程序内购买该产品,即使它被标记为“开发人员已从销售中删除”。

我就此问题联系了 Apple 开发者技术支持 (DTS),并被要求向 Apple 提交错误报告,向他们传达此行为,因为这似乎不是所需的功能。

#2. “开发商停止销售”IAP 收据验证 + SKProductsRequest

由于上述 IAP 已停止销售,我认为我还应该从 SKProductsRequest initWithProductIdentifiers() 调用中删除 IAP 产品 ID。

不幸的是,当我的一位用户尝试恢复他们的购买时,由于 SKProductsRequest init 中未包含 IAP 产品 ID,我无法验证收据中的购买(看起来好像从 Apple 收到的收据数据没有包含在 SKProductsRequest 初始化中)包括此类产品)。

因此,即使您将某个 IAP 下架,您仍然需要在 SKProductsRequest 中包含该 IAP 产品 ID,以便用户能够恢复以前购买的 IAP。

(我觉得我的经历与这个问题有关,在这里回复,而不是提出另一个问题,对于搜索此信息的人来说会更有效。)