我一直致力于添加应用内购买,并能够使用Store Kit创建和测试应用内购买(耶!) . 在测试期间,我运用我的应用程序导致应用程序在购买过程中崩溃(所以我猜接收paymentQueue的正常循环:updatedTransactions和调用finishTransaction被中断) .
现在我无法成功完成任何事务,而是在调用paymentQueue:updatedTransactions时只获得transactionState SKPaymentTransactionStateFailed的事务 .
transaction.error.code是-1003,transaction.error.localizedDescription是“无法连接到iTunes Store”!
我尝试从iTunesConnect中删除所有产品,并使用不同的标识符重建它们,但这没有帮助 . 我也尝试使用App Store应用程序真正连接到真正的App Store并下载一些应用程序,以便我有连接 . 最后,我访问了“设置:商店”应用,以确保我已退出正常的应用商店帐户 .
20 回答
我有类似的情况,并倾销iPhone的网络流量,看看发生了什么 . 我发现联系了普通商店而不是沙箱 . 它有助于从设备中删除应用程序,清理并再次构建/安装它 . 显然,开发配置文件出了问题 .
Update: 要转储非越狱iPhone的网络流量,只需在Mac上使用Internet共享并配置iPhone即可使用Mac的WiFi . 然后在你的Mac上
tcpdump -n -i en1
就可以了 .如果您收到错误0“无法连接到iTunes Store”(我意识到这不是OP询问的错误-1003,但是网络搜索错误0也导致此处),这可能是由两个可能的问题引起的:
你're passing in the wrong product identifier. If that'是这样的,那么在你打电话
-[SKPaymentQueue addPayment:]
之后不久就会收到错误0,然后你会得到弹出窗口,要求你确认付款 .您的测试用户已失效 . 如果您不小心与测试用户一起登录App Store,就会发生这种情况 . 发生这种情况时,输入密码后您将收到错误0以确认付款 .
要解决问题#1,请传入正确的产品ID . 要解决问题#2,请在iTunes Connect上创建新的测试用户,并可选择删除旧的测试用户 .
我有一个类似的问题,使用Code = 0获得“无法连接到iTunes Store” . 这是我解决它的方法,在尝试互联网上发现的所有其他仪式性建议之后重新下载我的证书以重置我的所有设备设置以牺牲处女黑山羊:
在应用程序的目标摘要中,我曾经在“构建”字段中包含我的版本号,但在“版本”字段中没有任何内容 . 这对我来说似乎很奇怪,所以我将版本号从“build”移到了“version” . 这导致了上述错误 . 将版本号移回“build”解决了错误 .
为您的应用添加新的测试用户 .
确保在“设置”中设置了正确的日期和时间 . 否则它无法与商店进行SSL连接!!
我有同样的错误,在阅读developer forums上的一些线程后,我重置了我的设备上的设置(设置 - >常规 - >重置 - >重置所有设置),清除了它 . 它似乎很激烈,但它确实奏效了 .
我有同样的错误,似乎突然冒出来(有一天工作正常,但第二天它给了我这些错误大约每3次中有2次我尝试测试我的应用内购买) .
然后我访问了App Store(当试图进行另一次真正的购买时),并意识到他们有一个他们希望我验证的新用户协议 . 在我这样做之后,当我回到我自己的应用程序并再次尝试测试购买时,它工作正常并且从那以后没有任何错误 . 所以我怀疑我收到了错误,因为他们希望我验证新的用户协议 .
现在我唯一想知道的是,我的应用内购买是否有办法将该提示转发给我的用户,而不是给他们一个神秘的错误?
对我有用的是从测试设备卸载我的应用程序,然后从Xcode安装一个新的副本 .
在
SKPaymentTransactionState
中,在您的请求被添加到服务器队列之前告诉SKPaymentTransactionStateFailed
.并在
SKPaymentTransaction
类参考错误讨论说:除非将transactionState设置为,否则error属性是未定义的
SKPaymentTransactionStateFailed
. 您的应用程序可以读取error属性以确定事务失败的原因 .因此, transaction.error.localizedDescription is "Cannot connect to iTunes Store"! 是一般错误消息 . 我在测试InApp购买时也会定期收到此错误消息 .
你可以做的一些提示是,
SKProductsRequest
从应用商店检索所有产品,并检查其response.products
是否包含您要求的productIdentifier
. 为此用途,And Catch response in :
因此,您可以决定是否可以与应用商店进行通信 . 你的产品ID就在那里 .
确保使用In App测试用户帐户进行测试 .
并且您使用在App App中配置的相同app-id配置 .
谢谢
我摆弄着去App Store,然后回到设置/商店退出 . 我这样做了3次,每次都重新访问我的应用程序并添加调试NSLog输出,现在我能够继续测试我的应用内购买代码而没有错误-1003 . 我不确定再次工作的确切原因,但我相当确定不是我的代码更改,因为我所做的只是添加NSLog并重新运行我的应用程序 .
是的,如果您最初将iPad / iPhone连接到另一台计算机,并且现在正在另一台计算机上使用它,那么您必须在iPad上退出商店,使用普通帐户登录MAC上的ITunes,然后同步 .
此外,请确保您的iPad“WIFI”已开启...
我在XCode中清理了所有目标并手动删除了我的设备上的应用程序,然后从XCode构建并运行它修复了类似的问题(相同的错误消息,但错误代码不同:-1009)
不幸的是,我遇到了一个问题,这里没有记录 . 在您接受与app-和app-purcheses相关的所有 Contract 之前,In-App-Purches将无效 . 因此,请确保您(或您的客户)正确地在iTunesConnect中设置所有 Contract ,它们会出现在"Contracts In Effect"部分,以使您的购买成功 .
我们的问题是在Itunes Connect中我们有错误的包标识符 . 有人已经预先创建了应用程序,我们必须编辑应用程序并将其appId设置为新应用程序 .
我有两个问题导致了这个问题:
1)我从一个不同的(工作)应用程序复制了IAP代码但是错过了设置我的观察者:
observer = [[IAPHelper alloc] init]; [[SKPaymentQueue defaultQueue] addTransactionObserver:observer];
2)我在设备的设置中登录了iTunes . 您只能在沙盒中使用测试用户 - 我已退出并再次运行 .
只需注销您的iTunes帐户(不要立即登录您的测试帐户!),然后启动您的程序 . 在购买时,询问您的登录详细信息,您必须输入您的测试帐户信息 .
我在这里尝试了线程中提供的每个解决方案,但无济于事 . 在我的情况下,我有一个通配符包标识符,其开头的域名与我在为应用内购买配置文件创建包标识符时使用的域名相同 .
以下是我修复问题的方法,可以帮助您修复问题(参见附件):
1)将iPhone连接到Mac .
2)在“设备”下(在Xcode>窗口菜单>管理器窗口中)选择iPhone的“配置配置文件”选项 . 您将看到当前驻留在iPhone上的所有配置文件 .
3)小心删除所有配置文件,从包标识符(com.MYDOMAIN . *)中的特定域名开始,特别是那些使用通配符的配置文件,除了您专门创建的能够进行应用程序内购买的那个(com) .MYDOMAIN.inappidentifier) .
4)重新安装应用程序并使用全新的iTunes连接测试用户(沙箱)测试您的实施
截图:
我被困了2天,这是我的解决方案:
删除所有应用内商品 .
删除新的应用内商品 .
创建一个沙箱测试器 .
从设备(iPad)注销我的苹果帐户,然后尝试购买该产品 .
它将要求登录,然后使用沙箱测试器帐户重新登录 .
购买通过 .
我认为重要的是沙盒测试器帐户,我之前没有使用它,因为我总是得到错误-0 .
在我的情况下,我尝试了互联网上的一切,但没有任何效果 .
Apple实际上打破了 生产环境 支付系统和沙箱 . 我只需要等两天,它就开始工作了 .
In-App Purchase FAQ说:
在我的情况下,错误发生是因为我使用的是Xcode模拟器 . 它在我使用我的设备时开始工作 .
即使在In-App Purchase Programming Guide中说使用开发iOS设备也有建议的测试步骤 .