iPhone StoreKit - 无效的产品ID

Ach*_*him 33 iphone storekit iphone-sdk-3.0

我正在尝试在沙箱环境中测试In App Purchase.

为了测试代码,我做了以下事情:

  1. 在iTunes Connect中的"管理用户"下创建了一个应用内购买测试用户帐户

  2. 在"管理您的应用内购买"下创建了一些应用内购买产品.我使用了产品ID的数值和字母数字值.

  3. 将应用程序加载到iPhone上,转到设置 - >存储并退出常规存储并进入步骤1中创建的测试帐户

  4. 在(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response 回调中)设置断点

所有提交的产品ID都在response.invalidProductIdentifiers酒店内.提交请求时,我首先尝试了在步骤2中创建的确切产品ID.我还尝试使用Bundle ID为它们添加前缀:

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

SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:productList];
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西吗 任何帮助表示赞赏.

阿希姆

小智 53

如果您仍然收到无效的产品ID,我一直在积累所有各种原因的清单:

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

  • 令人惊讶的是,从我的设备中删除应用程序并重新安装修复了该问题.谢谢特洛伊! (12认同)
  • 我在这里的发现是,在指定整个bundle.productID时它不起作用.我决定在集合中创建我的"产品ID字符串"的不同版本的列表,以查看会发生什么.我的例子:setWithObjects:@"com.blah.appname.purchase1",@"com.blah.appname",@"purchase1",nil ...奇怪的是最后一个工作!其他人都失败了.(希望这有助于任何人) (2认同)
  • “您的 PHP 安装似乎缺少 WordPress 所需的 MySQL 扩展。” (2认同)

Way*_* Lo 15

我花了两天时间在我的所有productsRequest(for AppID)上苦苦挣扎,最终在response.invalidProductIdentifiers列表中,而不是在response.products列表中.Apple在处理他们的商店套件时肯定做过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/).确实没关系.确保检查"已售出"并且图标为绿色(填写表格后需要额外的步骤来批准).另一个担心是我是否可以在调试模式下使用开发人员临时(不是分发临时),它确实也可以.我希望这可以帮助你们中的一些人.祝你好运并有信心.它最终会奏效.


Phi*_*vin 7

我们的问题是Apple常见问题解答中的最后一个要点," 为什么我的产品标识符会在invalidProductIdentifiers数组中返回? ":

  • 您未完成所有财务要求(请参阅本文档的"合同,税务和银行信息"部分).
  • 您没有使用显式的App ID.
  • 您没有使用与您的显式应用ID相关联的配置文件.
  • 您没有在代码中使用正确的产品标识符.有关产品标识符的更多信息,请参阅技术问答,QA1329,"在应用内购买产品标识符".
  • 您没有在iTunes Connect中清除待售应用内购买产品.
  • 您可能已修改过您的产品,但这些更改尚未可用于所有App Store服务器.
  • 如果您或App Review拒绝了iTunes Connect中的最新二进制文件.

我通过点击iTunes Connect中的"准备上传二进制文件"将最新版本(已被拒绝)更改为"等待上传",问题在大约10分钟后解决.


小智 5

手机越狱没关系,你只需要在Cydia中卸载appSync,然后就行了


Vib*_*yal 1

这就是你出错的地方,你的代码中需要这样:

NSSet *productList = [NSSet setWithObjects:product id]

您可以从 iTunes connect 获取此产品 ID。

您需要确保您已创建测试用户,并已退出原始 iTunes 帐户。请参阅不要使用测试用户帐户登录,无论苹果文档如何说明,只需在出现弹出窗口时使用它即可。