SKErrorDomain Code=0 "无法连接到iTunes商店"

25

我的应用程序刚在iTunes Store上发布,之后我无法启动任何购买。我已经在沙盒环境中测试了该应用程序,并且工作正常。但是在Live应用程序中会出现以下错误:

Error Domain=SKErrorDomain Code=0 “Cannot connect to iTunes Store

enum value = SKErrorUnknown

我尝试退出商店登录中的任何测试帐户,但它根本不要求任何帐户登录,错误仍然持续出现。有什么线索么!


3
你使用过 XCode 的 Capabilities 标签页吗? - Vinzzz
我刚刚检查了能力,应用内购买已在开发门户网站上的应用程序ID中启用。但它仍然以相同的方式运行。尽管如此,我观察到一个崩溃,其消息如下: "NSInvalidArgumentException',原因:'无法完成购买交易'"但在将新交易添加到SKPaymentQueue之前,我明确地完成了所有未决交易。 - Ansari
能力选项卡是什么?@Vinzzz - Neko
6个回答

17

我猜有两个问题可能导致这种情况发生。

  • 确保您已经放置了正确的“产品标识符”。如果是这种情况,在调用-[SKPaymentQueue addPayment:]之后不久,您会在获得确认付款弹出窗口之前立即收到错误0。

  • 您的测试用户已失效。如果您意外地使用测试用户登录App Store,则可能会发生这种情况。当这种情况发生时,您会在输入密码以确认付款后收到错误0。

要解决问题#1,请传递正确的产品ID。要解决问题#2,请在iTunes Connect上创建新的测试用户,并可选删除旧的测试用户。

希望这可以帮助您。


1
我遇到了这个错误。仔细检查了我的请求,发现我发送了一个空的标识符集合。纠正后,错误消失了。谢谢! - Sam Soffes
欢迎。很高兴能帮助到您。 - Manthan
作为补充说明 - 当问题与您的测试用户有关时,您仍然可以在手动输入密码以确认付款之前看到此错误。要解决此问题 - 我创建了一个新的测试用户,然后转到设备上的“设置”,进入“iTunes和App Store”,并注销了我的旧用户的iTunes帐户,这样错误就消失了。 - Praxiteles
在我的错误中,这个错误发生在“尝试升级计划”之后。https://github.com/chirag04/react-native-in-app-utils/issues/205。 我正在使用沙盒测试员。 - jose920405

8

在测试订阅时,我遇到了同样的错误,通过从iTunes connect中添加本地化(订阅显示名称和描述),我成功解决了问题。


2
这实际上是非常重要的信息,而且正是我遇到的情况。从错误中没有明显的方法可以看到这一点,当你为未来的应用内购买准备占位符时,你可能会很快错过它。 - Legoless
@I-I 你好,你能详细说明一下如何在iTunes Connect中为产品添加本地化(订阅显示名称和描述)吗? - Neko
在可编辑应用内购买的页面上,您可以找到一个名为“App Store 信息”的部分。在此部分中,您可以添加本地化信息。您需要至少添加一种本地化信息才能使其正常工作。 - l-l
4
这条评论有点发泄,但很抱歉。这绝对是疯狂的。苹果为什么在文档中不提到这一点?为什么他们允许开发人员在没有显示名称的情况下测试订阅,如果它会引起如此模糊的问题?我一直在与同样的问题斗争。我相信对他们来说实现一个告诉我们缺少元数据的不同错误代码并不难。无论如何,非常感谢这个。这对我很有帮助。 - Orlando G Rodriguez

7

检查是否已从iTunes Store注销。

要注销,请按照以下步骤操作:

  1. 打开“设置”应用
  2. 点击“商店”行
  3. 点击“注销”

2

你可以检查以下几点并进行验证。

验证以下内容

(1)你的应用程序的Bundle ID,应该与您在iTunes Store中创建并添加应用内购买的ID相同。

(2)检查您在应用程序中使用的应用内标识符名称。

如果任何一个不匹配,它将抛出错误域=SKErrorDomain代码=0“无法连接到iTunes Store异常。


8
你好,如何检查应用内标识符名称? - Neko

0

这种情况正是我遇到的。在调用addPayment后,弹出一个对话框,显示“使用现有帐户或新帐户登录iTunes Store”。当我选择登录时,就会出现上面的错误。

我已经重新初始化了我的iPad并退出了iCloud,但没有成功。然后,向朋友展示时,发现还有一个iTunes和AppStore的注销选项,与此不同。点击Touch Id行,它会提供一个注销选项。然后,我被提示使用测试帐户进行购买。它奏效了!


-3

在您的Xcode中:

  1. 单击停止按钮旁边的活动方案名称
  2. 单击“编辑方案…”
  3. 在“运行(调试)”中选择“参数”选项卡
  4. 在“环境变量”中单击“+”
  5. 添加变量:OS_ACTIVITY_MODE = disable

当您使用沙盒用户进行测试时,您需要首先进行上述设置。 - Li Jin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接