为啥 SKStoreProductViewController loadProductWithParameters 不会在 iOS 8.0.2 上为 Apple App Testers 调用其 com

Posted

技术标签:

【中文标题】为啥 SKStoreProductViewController loadProductWithParameters 不会在 iOS 8.0.2 上为 Apple App Testers 调用其 completionBlock?【英文标题】:Why would SKStoreProductViewController loadProductWithParameters not call its completionBlock on iOS 8.0.2 for Apple App Testers?为什么 SKStoreProductViewController loadProductWithParameters 不会在 iOS 8.0.2 上为 Apple App Testers 调用其 completionBlock? 【发布时间】:2014-10-27 22:24:22 【问题描述】:

Apple 拒绝了我最新的应用更新,因为他们的测试人员表示他们无法使用我的应用购买歌曲。特别是,看起来 SKStoreProductViewController loadProductWithParameters 从未在我的代码中调用它的 completionBlock。在开发过程中,一切对我来说都很好。

我错过了什么:

歌曲 ID 应该正确:我要求测试人员检查他们设备的 iTunes Store 所在的国家/地区是否与我用来从 iTunes API 获取 iTunes 歌曲 ID 的国家/地区相同(均为“美国”),所以 ID 应该可以正常工作 在调用 loadProductWithParameters 之前,我还检查了它们是否已连接到网络

还能是什么?

【问题讨论】:

可能只是 ios8 SKStoreProductViewController 是有缺陷的废话。 8.1 大声笑尽管 Apple 测试团队从未明确确认过,但事实证明这个问题很可能是由于连接不良和/或设备内存不足。 【参考方案1】:

如果您要查找的音乐项目在您所在国家/地区的 iTunes Store 中不可用,那么在 iOS8 上似乎永远不会调用 [SKStoreProductViewController loadProductWithParameters:completionBlock:] 的完成块。

就我个人而言,我会使用完成处理程序的error 来传达这一点,但我想永远不给你回电话是另一种表达方式。

至少您可以通过使用iTunes Search API 来查找您所在地区可用的商品或在不可用时采取不同的步骤来解决此问题。

【讨论】:

其实,不调用completionBlock应该被认为是苹果的一个bug…… 我同意,我认为 OP 是在讽刺。 我已经向 Apple rdar://22127487提交了错误报告 还没有修复。 我在现有应用程序(我的应用程序)的 appId 中得到了这种行为,但对于另一个(我的另一个应用程序)却没有。非常片状。引发错误的非常奇怪的方式。

以上是关于为啥 SKStoreProductViewController loadProductWithParameters 不会在 iOS 8.0.2 上为 Apple App Testers 调用其 com的主要内容,如果未能解决你的问题,请参考以下文章

为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?

为啥需要softmax函数?为啥不简单归一化?

为啥 g++ 需要 libstdc++.a?为啥不是默认值?

为啥或为啥不在 C++ 中使用 memset? [关闭]

为啥临时变量需要更改数组元素以及为啥需要在最后取消设置?

为啥 CAP 定理中的 RDBMS 分区不能容忍,为啥它可用?