iPhone 应用商店套件 "无法连接到 iTunes 商店"。

80

我正在为我的应用添加应用内购买功能。

我能够接收productsRequest:didReceiveResponse方法,并接收产品数组。

我的问题在于,当我将一个SKPayment添加到SKPaymentQueue中后,当我在paymentQueue:updatedTransactions方法中添加产品到队列后,交易始终处于SKPaymentTransactionStateFailed状态。

我使用NSLog记录"transaction.error",返回的是这样的结果:Error Domain=SKErrorDomain Code=0 UserInfo=0x165000 "无法连接到iTunes商店"

我已经从设置应用中登出了商店,但在尝试在我的应用中购买产品后,它从未要求我使用测试账户登录。 它只是显示上述错误信息。


这正是我的问题,一切都进行得很顺利,直到出现了“无法连接到iTunes”的错误。希望有人能够想出可能出错的原因。你能给这个问题添加更多的标签吗?可以加上一个应用内购买的标签,还有Objective-C可用... - Marin Todorov
1
不是重复的。虽然信息相同,但错误代码不同。 - bkbeachlabs
这个问题在2020年仍然存在。 - Mohamed Haseel
26个回答

50
我遇到了错误代码为0的“无法连接到iTunes Store”的SKPaymentTransactionStateFailed错误,感谢thomax的回答解决了我的问题。原来,在Targets->Summary下,您必须输入一个构建号码

我在过去的24个小时中重置了手机,与iTunes Connect打交道,并尝试了几乎所有我能想到的事情,直到我偶然发现这个解决方法。 SKPaymentTransactionStateFailed code 0 Cannot connect to iTunes Store SKPaymentTransactionStateFailed code 0 Cannot connect to iTunes Store

38
严肃点,苹果!错误提示是“无法连接到iTunes商店”。怎么会这样呢?是因为你在目标摘要下留空了该死的生成字段。 - AlBeebe
5
该死!这个问题困扰我整整三天了!谢谢你,善良的救星! - scooterman
2
这对我解决了问题。希望这篇文章能排在更靠前的位置;这样就可以为我节省一两天的时间和许多头疼了。 - Mike
最初我忽略了这个答案和类似的答案,因为我正在使用一个构建脚本来生成一个值,并在目标中使用"${BUILD_NUMBER}"。但事实证明,用"872"替换${BUILD_NUMBER}立即解决了问题。 - Michael J.
令人惊奇的是,版本7.1仍然存在漏洞。 - Vaibhav Saran
显示剩余5条评论

25

我假设您已经完成了标准的安全性检查:再次检查您的代码,确认您的产品ID,将您的代码与 In-App 购买编程指南进行比较,等等。

这可能很荒谬,但是——如果您确定您的代码是正确的——请对您的iPod进行硬重置(完全擦除)(设置=>常规=>重置=>删除所有内容和设置)。我曾经困惑了数小时,这确实是我的代码正确且硬重置是解决方案。


4
我之前遇到过这个问题,进行了完全恢复,但问题仍未解决。后来发现沙盒服务器出了问题。因此,在按照这些建议之前,我强烈建议您先查看开发论坛是否存在任何已知问题。 - Daniel Wood
2
@Daniel:有沙盒状态链接吗?谢谢! - Olie
13
我关心的是,如果我们必须对设备进行硬重置,那么其他人购买时是否也需要同样做法?没有人希望只为购买一个应用内购买而进行硬重置。 - Chanok
13
自iOS 3以来,苹果从未解决这个问题,令人惊讶。 - Duck
2
下面有一篇文章解释了“你必须有一个构建号码!”仅有版本号是不够的。我不知道为什么,但事实就是如此。如果你想知道为什么我没有构建号码,那是因为我们有单独的流程,在创建测试或生产构建时添加构建号码。 - Mike
显示剩余4条评论

21

我一直遇到同样的错误,但我被提示使用我的测试用户帐户,并出现一个弹窗显示“发生了未知错误”。事实证明,在我创建测试用户帐户并退出设置 -> 商店后,我决定使用我的测试用户帐户登录,这提示我输入一堆信息,包括账单信息,这破坏了我的测试用户帐户。当我创建了新的测试用户帐户,并仅在应用内购买测试期间提示时才登录,一切都运作顺畅了。


1
噢,这也是我的问题。如果你在任何地方输入了卡片详细信息,那就错了。 - Will Jenkins
我也遇到了同样的问题! - theprojectabot

17

如果您使用正常的苹果账户登录,但进行沙盒应用内购买时遇到此错误(即“错误!无法连接到iTunes Store”),请不要担心。

我发现,在进行任何应用内购买之前,先注销苹果账户可以避免任何混淆。然后在“登录”对话框中选择“使用现有的Apple ID”选项,并输入您的测试用户详细信息。

请记住,这将被设置在您的设置中,因此您需要在完成应用内购买后注销。

此外,使用不同的Apple ID 会重置各种与iTunes相关的设置,例如iTunes Match。


14

1
您提供的 Devforums 链接显示:“该项目不存在。可能已被删除。” - Guy

7

我也遇到了相同的错误。 我发现,这个错误只会在模拟器上出现,当我切换到设备调试时,错误就不再出现了。


1
切换到设备对我有用,可能需要注意的是,在阅读其他评论后,我小心地先注销了自己的个人iTunes帐户。然后在提示时使用测试帐户登录。 - nacross

5

只需在设置中从您的AppStore帐户注销即可解决问题...

这个方法对我有用,因为我的设备是使用我的常规Apple ID登录的,并且由于沙盒上的购买总是使用测试用户ID进行,设备尝试将我的常规Apple Store ID发送到“测试”App Store,导致出现“无法连接到iTunes Store”错误。

这是我在自己的设备上看到的最常见原因。


这并没有提供问题的答案。如果您想对作者进行批评或请求澄清,请在他们的帖子下留言。 - CSchulz
是的,它有效。从应用商店注销解决了我遇到的“无法连接到iTunes Store”错误。下次您遇到此问题,请尝试此方法。 - Duck
当我审查你的回答时,只有一句话“在设置中简单地注销您的AppStore帐户...”。它被标记为低质量。我很抱歉。 - CSchulz

4

遇到了同样的问题,我重置了我的设备,交叉验证了标识符,重新安装了应用程序。我还以为问题是因为我已经更改了产品的参考和描述。实际上,我觉得这是因为我的测试用户被锁定了,因为有多个人使用了同一个帐户,有可能密码验证失败了多次。 所以我创建了另一个测试用户,应用内购买又可以正常工作了。 希望这可以帮助到你。我对这个错误感到非常困惑。


创建另一个测试用户对我也起作用。我认为重置设备适用于错误代码-1003,但新用户帐户适用于错误代码0。 - Christopher Pickslay

4

确保您在测试时使用的是从iTunes Connect创建的沙盒用户账户,而不是您个人账户的实际Apple ID。


4
即使我进行了完整的恢复,也无法解决我的问题。
在调用自动续订产品标识符的addPayment后,大约一秒钟后,我从StoreKit收到“SKErrorDomain Code=0”错误。在任何时候,我都没有被提示(根据苹果的文档建议应该被提示)输入iTunes Store用户名和密码;交易只是失败了。
为了解决这个问题,我不得不在iTunes Connect中添加一个假的“可消耗”的产品,并使用假的可消耗品的产品标识符来调用addPayment。这导致iTunes Store对话框弹出。然后,我用我在iTunes Connect中创建的测试账户登录。这次成功了:我的应用程序收到通知,表明已购买了可消耗品。
在完成这些操作之后,我能够使用我的自动续订产品标识符调用addPayment并正常购买订阅。

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