“无法连接到iTunes Store”应用内购买

时间:2011-09-13 13:36:39

标签: ios cocoa-touch in-app-purchase

我在测试应用内购买时遇到问题。我收到有效的产品标识符,但在购买时我收到了可怕的“无法连接到iTunes Store”。有趣的是恢复购买似乎有效 - iTunes登录弹出。

我有: - 检查我的应用内购买是否已清除出售 - 检查,重新检查我的源代码以与Apple的文档同步 - 添加了合适的测试用户 - app id不包含通配符 - 应用内购买与应用相关联(应用本身处于开发者拒绝状态,购买已准备好提交) - 等等 - 重新安装应用程序,清理解决方案,所有伏都教的东西

17 个答案:

答案 0 :(得分:103)

确保您已退出设备上的所有生产iTunes帐户。

我在测试手机上收到此错误,该手机已使用我的实际iTunes帐户登录。您无法使用生产iTunes帐户测试应用程序,因此出错。我只是希望Apple提供更好的错误,以避免这种猜测......

答案 1 :(得分:44)

请参阅In-App Purchase FAQ: Cannot connect to iTunes Store

Your app is running in the Simulator, which does not support In-App Purchase

对于在应用内购买测试,请始终使用真实设备。

答案 2 :(得分:20)

对于新手,请确保您的应用内购买产品的状态为Ready to Submit,没有“缺少元数据”。就我而言,缺少的是订阅组的本地化。

enter image description here

答案 3 :(得分:8)

我一直有这个问题而且我确信这是一个错误。我已经提交了错误报告,错误ID为10108270

问题似乎是测试用户被“锁定”,并且可能与尝试在已发布的应用中使用该帐户购买应用内购买有关。

我的解决方法是创建一个新的测试用户,但在Apple回复我之前,我无法提供任何更好的解决方案。当我收到回复时,我会更新这个答案。

答案 4 :(得分:3)

这个问题在2016年仍然存在。令人难以置信。这是我的解决方案:

添加内部版本号。目标>一般>身份>建立。

答案 5 :(得分:2)

我遇到了同样的问题。对我来说,这发生在这个安全之后:

  • 在iTunes上登录英国帐户的设备上安装应用
  • 启动应用并使用美国的测试用户设置
  • 显示的消息说帐户仅在美国有效。关闭应用程序并自动启动iTunes
  • 再次打开您的应用并重试购买。接收产品但没有其他回调或错误。

我不知道这是否是IAP平台上的问题,但我希望得到错误/回调以在我的代码中以某种方式处理它。

要继续测试您的IAP,请尝试以下任何一项:

  1. 在“设置”区域中删除“配置文件”,删除“应用”并从“设置”中的“存储”中注销。然后转到XCode并将签名身份更改为“不签名”然后将它们放回去(我知道它听起来如何:)但是试试)或
  2. 硬重置设备上的所有设置(设置 - >常规...)。显然你会丢失该设备上的任何设置......
  3. 杀死设备上的iTunes应用程序(多任务菜单)并从设置
  4. 上的商店注销

    如果以上都不起作用,可能是IAP平台上的问题,请参阅下面的评论。

答案 6 :(得分:2)

这是一个旧线程,与我今天遇到的问题有关。

在我的情况下,我能够在我的设备上测试应用内购买直到昨天,但它今天停止工作。事实证明,苹果推出了“付费应用程序修正案”。让我审查并同意。一旦我同意了修正案(当然没有阅读),一切都开始了。无需创建新的测试用户或任何其他解决方法。

应用内购买可能有很多原因无法使用,但请确保您已在itunesconnect上正确设置,或者您无法测试应用内购买。

答案 7 :(得分:2)

确保系统状态已准备就绪https://www.apple.com/support/systemstatus/

我有一部Iphone,重启它对我有用

答案 8 :(得分:1)

当您使用(我的方案)重新使用您在另一个应用上测试之前的IAP的旧沙箱帐户时,您可能也会收到此错误。 Apple真的需要更新我们测试IAP的方式,我的电子邮件用完了:0

答案 9 :(得分:1)

如果遇到此错误“无法连接到iTunes Store”,请在此使用详尽的清单:

  • 确保您在App Store Connect中创建了一个沙箱用户

  • 模拟器不支持应用内购买:在真实设备上进行测试

  • 沙箱可能无法访问。检查Apple System Status
  • 检查您的应用程序是否具有捆绑软件版本(CFBundleVersion)
  • 检查产品是否可出售。您是在App Store Connect中创建的吗?

  • 如果是以前的iOS 12,则退出设备上的任何生产iTunes帐户。否则,您可以使用沙箱帐户登录开发应用程序。

答案 10 :(得分:1)

我可以在iPhone上购买应用程序内商品,但不能在iPad(11.0.2)上购买。我尝试了所有提到的解决方案,但没有帮助。在尝试了所有其他可能性之后,终于可以使它起作用了。

在iTunes connect中创建测试帐户时,请勿验证电子邮件ID。如果经过验证,IAP将返回“无法连接到iTunes”错误。看起来很奇怪,但是对我来说却是如此。在iPhone中,无论电子邮件验证如何,我都可以使用测试帐户进行购买。

答案 11 :(得分:0)

当SKProductsRequest传递错误的NSSet时,也发生了此错误:

错误:

let products = NSSet(objects: ["id1", "id2"])

正确:

let products = NSSet(objects: "id1", "id2")

答案 12 :(得分:0)

就我而言,我只是忘记处理.failed中的transactionState。特别是SKPaymentQueueue.default().finishTransaction(transaction)

答案 13 :(得分:0)

我遇到了同样的问题,我检查了包括 Apple form 在内的问题,找不到解决方法。

今天,当我检查设备时,发现以下

设备设置-> iTunes&App Store 中找到了另一个已登录的 Apple ID < / strong>。 因此,我尝试signOut并再次检查了InApp购买,它运行良好。因此,请检查问题是否链接到该链接。

谢谢! Unnikrishnan.P

答案 14 :(得分:0)

除了此处概述的所有其他方法外,如果您正在使用订阅,似乎还需要确保已生成共享机密:

“要测试或提供自动续订的订阅,您必须拥有一个主共享密码或为每个应用程序使用特定于应用程序的共享密码。”

主共享密钥是通过App Store Connect的“用户和访问”部分的“共享密钥”选项卡生成的。

将生成一个特定于应用程序的共享密钥,您可以在其中管理应用程序本身的应用程序内购买。

答案 15 :(得分:0)

我固定了我的!如果遇到Error Domain=SKErrorDomain Code=2 "Cannot connect to iTunes Store"错误,请确保插入SKPaymentQueue.default().finishTransaction(transaction)。在以下位置添加SKPaymentQueue.default().finishTransaction(trans)后,它对我有用:

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    for trans in transactions{
        if trans.transactionState == .purchased {
            print("Successful.")
            SKPaymentQueue.default().finishTransaction(trans)
        } else if trans.transactionState == .failed {
            print("failed!")
            print(trans.error)
            SKPaymentQueue.default().finishTransaction(trans)
        }
    }

在Apple开发者网站here

中找到

答案 16 :(得分:-1)

我必须转到“设置”>“ iTunes和App Store”,然后滚动到底部的“沙箱帐户”字段,然后从那里注销。现在可以了!!!

enter image description here