目标:我想测试我至少可以在继续实施之前验证 IAP 的存在。也就是说,我不想在测试任何IAP 功能之前实现所有IAP 功能。
症状:我正在提交一个SKProductsRequest
. 回调正确地传递给委托。该response.products
成员是一个空数组,并且该response.invalidProductIdentifiers
成员具有与我SKProductsRequest
最初提交的相同的 IAP ID。
我仔细检查了身份证的拼写。有关我已采取的所有步骤,请参见下文。我包括这些只是为了防止出现诸如“你忘了做某某吗?”之类的善意建议。
问题:我是否需要审查应用程序(Beta 审查或全面审查)才能让此呼叫成功?在线意见不同——赞成、反对和模棱两可。以机智:
•不需要上传:Ray Wenderlich 在https://www.raywenderlich.com/122144/in-app-purchase-tutorial的教程)明确指出 SKProductsRequest无需任何上传或审核应用程序即可成功。
•需要上传:另一个stackoverflow 问题(应用内购买'SKProductsRequest' 未能产生成功响应)说应用必须“提交”。它没有说提交审查(而不是仅仅为 TestFlight 上传),但它暗示了这一点。这个答案被标记为正确,但我不确定我是否相信。
在我测试 IAP 流程的第一步之前,我需要审查应用程序似乎是错误的。或者我可以提交不完整的 IAP 实施吗?这听起来也很不对。
•来自 Apple 的模棱两可的信息:iTunesConnect IAP 部分中信息框的措辞删除而不是阐明:
您的第一个应用内购买必须与新的应用版本一起提交。从应用程序的应用内购买部分中选择它,然后单击提交。
我认为“它”是指 IAP。(不恰当地使用indef.pronoun。)我的IAP 列在IAP 部分,带有黄色的“准备提交”注释。当我选择(单击 IAP 的左侧名称,这也是一个链接)时,我会进入 IAP 的特定页面。没有确切标记为“提交”的按钮,但有一个标记为“提交审核”的按钮。它被禁用。
信息框中的以下段落似乎暗示需要审查应用版本/IAP 组合。
上传二进制文件并提交您的第一个应用内购买以供审核后,可以使用下表提交其他应用内购买。
请注意,它说应用程序只需要上传,但 IAP 需要“提交审核”。重要吗?但应用程序审核本身肯定不是仅仅提交SKProductsRequest
验证 IAP 存在的要求。否则它看起来我必须在测试任何 IAP 功能之前实现所有IAP 功能。
附录——步骤:
- 创建了启用 IAP 的 AppID。在 Dev Portal 上验证了这一点。
- 我正在使用 Xcode 的“自动管理签名”选项来生成 PP。Xcode 生成了 Distribution PP,但没有生成 Dev PP。(我认为没关系。)
- 在 Dev Portal 验证此 PP 在“已启用服务”中具有 IAP。
- 但是……我怎么知道这是用于签名的 PP?使用新的 Xcode 托管服务,PP 设置为“自动”。
- 在 iTunesConnect 创建 IAP。
- 已验证 IAP 的 ID 是应用程序包 ID,后缀为产品唯一字符串。
- 已验证我提交的 IAP 的产品 ID 没有拼写错误。
- 创建 IAP 后等待了一天。
- 选中了已清除待售复选框。(它在我创建 IAP 后的某个时间“自我检查”。)
- 添加了沙盒测试器。
- 上传了新版本的应用程序。(不用于审查,仅用于测试。)
- 在模拟器和设备中启动了应用程序,在这篇文章的顶部指定了失败。