2009-06-25 90 views
33

我正在尝试在沙箱环境中测试应用内购买。iPhone StoreKit - 无效的产品ID

为了测试代码中,我做了以下内容:

  1. 在iTunes Connect下的“管理用户”创建一个应用程序内购买测试用户帐户

  2. 创造了一些在应用程序内购买的产品下'管理您的应用内购买'。我为产品ID使用了数字值和字母数字值。

  3. 加载的应用程序到iPhone,去设置 - >存储和注销正规商店,并进入步骤1

  4. 创建的测试帐户在 (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response 回调

    设置断点

全部上报产品ID是在response.invalidProductIdentifiers财产。 当提交我第一次尝试步骤2。我也试图与面包前缀来时产生的确切产品ID请求dle ID:

NSString *id2 = @"com.super.duper.8"; 
NSSet *productList = [NSSet setWithObjects:id2, @"8", nil]; 

SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:productList]; 

我是否缺少明显的东西? 任何帮助表示赞赏。

阿希姆

+0

就我而言,以前的银行账户不再有效。 – 2016-12-10 00:48:50

回答

1

这是你要去哪里错了,你需要在这个代码:

NSSet *productList = [NSSet setWithObjects:product id]

你可以从iTunes这款产品ID连接。

而你需要确保你已经创建了一个测试用户,并签署了原来的iTunes账号的。请参阅不要使用测试用户帐户登录,无论苹果说明文件如何,只需在出现弹出窗口时使用。

3

我们结束了创建一个新的供应配置文件,有一个地方线(不记得在哪里,没有在应用程序内购买的文档的),其指出,必须在供应配置文件应用程序内购买启用。我们不能用我们现有的配置文件来做到这一点,所以我们创建了一个新的配置文件,然后我们可以启用它

0

它采用存储一些时间,使产品提供给所有服务器(见文档)。因此,在iTunes Connect中创建产品和在设备上测试时将产品ID视为有效产品时,您可能会遇到延迟。对我来说,花了大约12个小时,直到我的产品出现。

2

为别人有这些问题,我强烈建议在苹果论坛阅读this thread

15

我花了两天时间用我所有的productsRequest(为的AppID)挣扎在response.invalidProductIdentifiers列表结束了,而不是在response.products列表。苹果公司确实在处理他们的商店包装方面做了F级的工作。它令人困惑,交织和复杂。

我终于解决了它。我在论坛中学到了一个非常重要的经验教训,很少有人提到:您可能需要花费很多时间才能在itunesconnect.apple.com上输入什么内容才能生效。

有两部分:xcode中的应用程序名称和AppID以及您在itunesconnection中输入的内容,它们必须完全匹配(区分大小写)。如果您注册或修改了您的应用程序AppleID(我也完成了我所有的合同和银行信息,正如某些人所建议的那样,如果没有完成此部分,采购行为将无法正常工作),那么您最好在再次测试之前上床睡觉因为我的情况真的需要几个小时才能产生效果。在我9岁的孩子拖着我上床睡觉的故事之前,我非常沮丧地与这个问题作斗争,然后惊讶地发现当我醒来时问题消失了。

我发现Eddy71在http://www.iphonedevsdk.com/forum/iphone-sdk-development/21035-problems-creating-test-user-app-purchase.html的建议真的很有帮助。在解决之前,我做了我可能在Eddy的检查清单中做的所有事情,并且仍然没有产品,我担心的一个问题是,如果没有上传二进制代码以完成itunesconnect中的应用程序注册,那么可以(不需要按照http://blog.mugunthkumar.com/coding/iphone-tutorial-%E2%80%93-in-app-purchases/)。确实没问题。确保“清空出售”是检查并且图标是绿色的(填写表格后需要额外的步骤批准)。另一个担心是我能否在调试模式下使用开发者临时版(暂不分发版),这也确实没问题。我希望这可以帮助你们中的一些人。祝你好运,有信心。它最终会起作用。

53

如果你仍然得到无效的产品ID,我已经积累所有的各种原因的清单:

http://troybrant.net/blog/2010/01/invalid-product-ids/

+12

令人惊讶的是,从我的设备上删除应用程序并重新安装修复了问题。谢谢特洛伊! – 2010-12-12 22:38:02

+1

也适用于我。谢谢你的详细清单,特洛伊! – taber 2011-02-28 06:17:13

+0

这也适用于我。这是不会发生在iap生活正确的时候?它目前在沙盒中。 – marchinram 2011-11-19 01:36:58

0

别人的注意事项:不使用的NSMutableSet的产品ID 。它必须是NSSet!

2

我尝试了苹果论坛和这里提出的所有建议,但仍然无法实现。找到解决方案 - 您的应用程序需要通过Xcode传输才能启用沙箱。

很明显,对吗?那么,如果您正在使用现有应用程序的更新,则该设备仍会将其视为已安装App Store的应用程序。

因此,从您的设备上删除应用程序。然后使用Build &将应用程序安装回设备上使用连接到Mac的设备运行。它应该现在工作:)

1

我的另一个问题是,我必须去Xcode中的Window> Organizer,并删除我的应用程序和配置文件(s),并重新添加我的开发配置文件。我重新启动设备和Xcode作为额外的措施。

0

如果你想保留你的应用程序数据,但你想尝试删除你的应用程序来解决这个问题,首先同步你的设备。然后删除你的应用程序并从Xcode重新安装 - 这解决了我的问题。一旦它正常工作,您可以从备份中恢复设备 - 这只需要几分钟的时间,并且恢复后产品请求仍然有效。

3

尝试重置iPhone设置,并从iPhone删除应用程序,并直接使用要求的产品ID,而不捆绑ID

1

我都想尽解决方案,它在互联网上可用的,并没有什么工作,绝对没有。我的问题:我的设备已经越狱,并有Cydia。我将设备恢复为出厂默认设置(未越狱),并且它第一次运行并返回了产品ID没有问题。

0

不完全确定为什么,但是当我将请求的产品ID从'com.mycompany.myapp.product'更改为'product'时,它开始工作。也许这是因为我在iTunes Connect中配置了产品。

试试看,可能适用于一些你...

7

我们的问题是,从苹果公司的常见问题,“Why are my product identifiers being returned in the invalidProductIdentifiers array?”最后一颗子弹点:

  • 你没有完成所有的金融要求(请参阅本文档的“合同,税收和银行信息”部分)。
  • 您没有使用明确的应用程序ID。
  • 您没有使用与您的显式应用ID关联的配置文件。
  • 您的代码中没有使用正确的产品标识符。有关产品标识符的更多信息,请参见技术问答Q & A,QA1329“应用内购买产品标识符”。
  • 您并未清除iTunes Connect中待售的In App Purchase产品。
  • 您可能已经修改了您的产品,但这些更改尚未提供给所有App Store服务器。
  • 如果您或App Review在iTunes Connect中拒绝了您最近的二进制文件。

我点击“准备上传二进制”在iTunes Connect改变了最新版本(已被拒绝),以“等待上传”,问题得到了大约10分钟后得到解决。

5

没关系,手机是越狱,你只需要卸载的AppSync在Cydia,然后它

0

取代:

NSSet *productList = [NSSet setWithObjects:id2, @"8", nil]; 

有:

NSSet *productList = [NSSet setWithObjects:@"8", nil]; 
0

,可能是另一个问题。如果您的xCode项目的名称不是用英文书写的,或者其中包含其他字符,那么捆绑ID的名称应该是“------”。我认为这只是一个捆绑id的约定,在xCode中有这个约定。原来,这是我的问题,所以命名您的xCode项目英语)我知道这是不是最多的情况下,但无论如何)

0

我试过每个人都在谈论。我最终首先创建了一个访客帐户,以查看是否可以找到产品ID ....是的。于是我开始退出活动监视器中的所有内容并发现问题。我不得不退出下面的“商店”流程。突然之间,我停止收到无效的产品ID。希望能帮助那里的人。

Quit these if you're getting the invalid product id null error

1

对我来说,问题是,我选择了“打开的内容托管”成立了应用程序内购买的时候。所以我不得不关掉它,问题就解决了。

1

在我的情况下,我没有完成银行信息,税务信息和联系信息。一旦完成此操作,我可以获得我的产品ID,希望这可以帮助某人。