可以在 IOS 8 (Xcode 6) 模拟器中测试应用内购买吗?

Posted

技术标签:

【中文标题】可以在 IOS 8 (Xcode 6) 模拟器中测试应用内购买吗?【英文标题】:Can In App Purchases be tested in the IOS 8 (Xcode 6) Simulator? 【发布时间】:2014-12-02 12:20:28 【问题描述】:

我一直发现有关 In App Purchases 是否可以在使用 Xcode 6 的模拟器上实际测试的相互矛盾的信息。一些答案说“”,其他答案似乎表明测试版中存在错误Xcode 6 和其他版本完全“no”。

我有一个应用程序,其 IAP 在设备上运行良好,但在模拟器中,尝试刷新收据失败并显示一条非常无用的消息:Error Domain=SKErrorDomain Code=0 "The operation couldn’t be completed. (SKErrorDomain error 0.)"

我的应用被应用商店拒绝,因为测试人员无法测试(即使它与设备上的沙盒帐户完美配合),我开始怀疑他们只是在模拟器上测试而无法继续。 由于我已经阅读了很多关于它不能在模拟器上工作并且你必须在设备上进行测试的信息,所以我并不担心它不能在模拟器上工作,但这可能让我感到很痛苦。

谁能说他们实际上已经让 IAP 在 ios 8 / Xcode 6 模拟器上工作?

【问题讨论】:

【参考方案1】:

当在 Xcode 6 模拟器中使用调试构建的 iOS 8 目标时,大多数 StoreKit 沙盒现在似乎都可以正常工作。

但您不能购买自动续订订阅。您会看到最后的确认对话框,但之后交易总是返回 transactionStateSKPaymentTransactionStateFailed。相同的代码适用于设备。我在 Radar 上报告了这一点,但 Apple 回复说 StoreKit 在模拟器中不受支持,这很奇怪,因为它看起来非常接近工作。

【讨论】:

我确实在测试自动续订订阅,但是我什至无法在模拟器上获取收据。在模拟器上,它从不提示输入苹果 ID/密码,它只是立即失败,并显示“操作无法完成”。 - 所以我什至从来没有进行过交易。 Apple 多久之前告诉过您,模拟器不支持 StoreKit? 几周前,我收到一条 Apple RADAR 评论,说模拟器不支持应用内购买,尽管这是对一个稍微不同的错误的回应。现在我检查了一下,我发现我关于这些东西的主要错误已作为重复解决,并且它的重复错误仍然存​​在。也许有希望这应该可以工作,Apple 会修复它。 在任何模拟器(Xcode 6.3.2)中都不适合我。恢复连接但没有得到回复。 Buy 弹出对话框但失败并出现错误“无法连接到 iTunes Store”【参考方案2】:

实际上,我已经在 xcode 6 / iOS 8 模拟器中测试了应用内购买,它运行完美(沙盒购买和恢复)。 但是其他模拟器(iOS 7.0.3 和 7.1)不适用于 IAP。

所以,答案是是的

您的应用是否包含 IAP 收据的验证方法?可能看起来太简单了,但您确定验证控制 not 与 https://sandbox.itunes.apple.com/verifyReceipt

【讨论】:

我确实是在本地验证收据。但是,我使用的是 StoreKit 的 SKReceiptRefreshRequest,它不公开任何端点 URL。 tcpdump 捕获表明它正在与沙盒服务器通信,这正是我们想要开发的。为什么你说验证不应该用沙箱来完成?这在设备上完美运行。 因为,Apple 审核团队使用此地址测试 IAP:buy.itunes.apple.com/verifyReceipt。您可以从link 查看详细信息,但您说在本地验证收据。所以现在,你在哪里验证都没关系.. 这实际上不是真的,Apple 的团队使用沙盒帐户而不是生产帐户进行测试,因此该应用程序必须与沙盒和生产用户一起使用。请参阅developer.apple.com/library/ios/technotes/tn2259/_index.html#//… #15 和 #16。 嗯,很有趣。我总是在苹果审查时切换到生产服务器。而且我从来没有遇到过问题。当我在图 7.1 中查看 link 时,我认为我应该使用生产服务器。 截至 2015 年 4 月 20 日,我无法让 IAP 在 Xcode 6.3 模拟器中工作。代码在设备上运行,但模拟器总是返回 SKErrorDomain Code=0 "Cannot connect to iTunes Store"

以上是关于可以在 IOS 8 (Xcode 6) 模拟器中测试应用内购买吗?的主要内容,如果未能解决你的问题,请参考以下文章

ios 8.4 模拟器在 xcode 6.4 中的尺寸非常大?

iOS 8 / Xcode 6 模拟器不再使用 HTTP 代理

Xcode 6.4“无法下载和安装 iOS 8.3 模拟器”

如何在 Xcode 6.1 中安装 iOS 7.0 和 iOS 8.0 模拟器?

Xcode 6 Beta iOS 8 模拟器无法访问互联网

带有 iOS 8(Xcode 6)的 iOS 模拟器未显示在 Safari 开发菜单中