iOS/iPhone : in-app purchase sandbox broken while app in "rejected" state?

标签 ios in-app-purchase app-store-connect sandbox appstore-approval

(请参阅下面的MAIN THRUST 以跳至我的问题的主要内容。)

我的 iOS 应用在 Apple 审查过程中被拒绝,原因很简单,但很容易修复。

但是,我想对新版本进行一次性测试,包括重新测试我们的应用内购买(应用中只有一个可购买项目)。

现在,应用程序在初始检索产品信息时崩溃了。以前从来没有这样崩溃过,自从我们在沙盒模式下成功测试了多次应用内购买后,代码也没有改变。 (事实上​​ ,最初提交的版本和带有次要修复的此版本之间根本没有代码更改;修复只是 info.plist 设置更改。)

使事情复杂化的是,我使用 Airplay/Marmalade SDK 构建应用程序,它们使用自己的 API 和回调机制包装了 Objective C 调用和回调机制。但是,这个 wrapper 非常薄,所以我希望/相信这真的是一个一般的 iOS/应用内购买问题,而不是 Marmalade 特有的问题。

因此,正如我所说,它在我调用 Marmalade 检索产品信息和我的 (C++) 回调应该被调用之间的某个时间崩溃。 (即,在 Marmalade 在 SKProductsRequest 对象上调用 [productsRequest start] 的时间和调用 productsRequest:didReceiveResponse() 的时间之间的某个时间,Marmalade 依次给我回电话。)

我的问题的主要推力:

我的应用程序在 iTunesConnect 上处于“拒绝”状态。此外,当我在 iTunesConnect 中查看应用内购买项目本身时,它也被标记为“已拒绝”。但是,我已经在审核过程中与 Apple 讨论了我的应用内购买,我相信应用内购买本身对他们来说效果很好,唯一剩下的问题是我已经解决的小问题已修复(这是他们的拒绝详细信息所说的:只有那一项)。

所以:我需要了解,当我的应用程序(及其关联的应用程序内购买)处于这种“拒绝”状态,等待我上传新的二进制文件时,重新测试是否很棘手(或者可能不可能)应用程序内购买,我最好的做法是重新提交带有小修复程序的应用程序,并相信(因为它是在正常测试期间工作的相同代码,当事情不处于拒绝状态时)的状态一旦 Apple 重置所有内容以测试新的二进制文件,应用内购买将自行解决。

或者我现在应该做些什么来重新测试应用内购买?

我曾考虑在 iTunesConnect 通信中询问 Apple,但我不想给他们带来任何麻烦,因为到目前为止,审查过程非常快速和高效。

最佳答案

我收到了 Apple 技术支持的回复:

I'm responding to your question below regarding in app purchase and the issue where the product preflight process now fails. The answer to this issue is documented in Tech Note 2259 - "Adding in app purchase to your iOS application". http://developer.apple.com/library/ios/#technotes/tn2259/_index.html

In the FAQ section there is the following list of reasons for this issue

Why are my product identifiers being returned in the invalidProductIdentifiers array? Your product identifiers may be returned in the invalidProductIdentifiers array for one or more of the following reasons:

You did not complete all the financial requirements (see the "Contracts, Tax, and Banking Information" section of this document). You did not use an explicit App ID. You did not use the Provisioning Profile associated with your explicit App ID. You did not use the correct product identifier in your code. See Technical Q&A, QA1329, 'In App Purchase Product Identifiers' for more information about product identifiers. You did not clear your In App Purchase products for sale in iTunes Connect. You might have modified your products, but these changes are not yet available to all the App Store servers. If you or App Review rejected your most recent binary in iTunes Connect.

Note the last reason - which applies in your case. The solution is - when you want to test the application, you will need to "temporarily" upload a copy of your application to iTunesConnect so that the application state is no longer "rejected". Instead it will be in the "pending review" state. Go ahead and perform whatever testing you need, then assuming the application still needs work, self reject the application so that it doesn't reach app review. At some point, you will have a finished product and you will finally submit the application formally.

在我的案例中,这个回答并不完全正确。我收到了应用审核团队的单独回复。简单地上传一个新的二进制文件显然不会重置应用内购买项目的“拒绝”状态。显然他们必须自己手动重置(那时我相信他们和我都可以测试它)。所以目前我已经上传了我的新二进制文件,但他们还没有重置应用内购买项目。

过程完成后,我会在这篇文章中添加更多内容...

关于iOS/iPhone : in-app purchase sandbox broken while app in "rejected" state?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6965438/

相关文章:

ios - 通过单击 URL 从 itunes 安装 IOS 应用程序

ios - 用于测试的 iTunes Connect 问题

iphone - 限制用户从 iTunes 下载更新版本

ios - 我可以使用 RestKit 下载并解析大文件吗?

ios - 堆栈 View 的 subview 之一根本没有显示

android - 如何确认android中的应用内购买?

iphone - App Store 中的应用内购买被拒绝

ios - Xcode不验证构建

objective-c - iOS 中的异常处理

iphone - 我可以从沙盒 AppStore 中删除对非消耗品的购买吗?