StoreKit In App Purchase 无效的产品标识符 [重复]

Posted

技术标签:

【中文标题】StoreKit In App Purchase 无效的产品标识符 [重复]【英文标题】:StoreKit In App Purchase invalid product identifiers [duplicate] 【发布时间】:2009-09-24 12:43:33 【问题描述】:

我从SKProductsRequest 得到一个空的产品标识符数组。

我做了以下步骤:

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

    在“管理您的应用内购买”下创建了一些应用内购买产品。

    将应用程序加载到 iPhone 上,转到设置 → 商店并退出常规商店

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

所有提交的产品 ID 都在响应的 invalidProductIdentifiers 属性中。提交请求时,我尝试了在第 2 步中创建的产品 ID 以及那些以 Bundle ID 为前缀的 ID。

提前致谢,

拉古

【问题讨论】:

我想添加 @masone 之类的,我相信我最初的应用内购买问题与客户未完成付费应用程序合同有关 请在***.com/questions/1041656/…查看我的回答 我不敢相信这发生在我身上,但我的问题是我使用的是参考名称而不是产品 ID!骗我! @Mona 你能举出不同的例子,帮助别人。 【参考方案1】:

我尝试了 Apple 论坛和此处提供的所有建议,但仍然无法正常工作。

找到解决方案:

您的应用需要通过 Xcode 传输才能启用沙盒。

您的应用需要由 Xcode 在本地构建和安装不能从 App Store 下载。

很明显,对吧?好吧,如果您正在对现有应用程序进行更新,该设备仍会将其视为 App Store 安装的应用程序。

因此,请从您的设备中删除该应用。然后使用 Build & Run 将应用程序重新安装到设备上,并将您的设备连接到 Mac。它现在应该可以工作了:)

【讨论】:

我想创建 10 个新帐户并再投票 10 次。 有人应该给这个人一枚勋章 天啊,我简直不敢相信我是多么愚蠢。五个月后,我忘记了这个答案。再次谷歌搜索并再次登陆这里。我感觉就像《拯救尼莫》中的多丽丝。赫克托,你是我的英雄。 请问,Xcode 传输应用程序是什么意思?再次将其上传到设备,到 AppStore?我创建了一个包含应用内购买项目的占位符,该应用程序仍未准备好上传到 AppStore。我不断收到无效的产品 ID。我使用的是调试版本。 是的,我认为需要奖牌【参考方案2】:

我一直在编制产品标识符无效的原因列表。以下是潜在原因的清单:

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

【讨论】:

“您是否尝试过从设备中删除应用程序并重新安装”您解决了我的问题!谢谢 非常感谢您的列表!!找到我的原因:设备越狱:( 哇,你是特洛伊布兰特!感谢您的博客文章。在我过去的 24 小时里,你几乎是地球上最有名的人……尽管 90% 的用户在博客文章中的 cmets 都是错误的。【参考方案3】:

付费应用的合同必须有效才能接收有关配置的应用内购买的数据。

这对我有用。我遇到了完全相同的问题。

【讨论】:

我该怎么做? 是的,我必须进入 itunesconnect -> 协议 -> 付费应用程序。【参考方案4】:

我是这里的受害者之一。嗯,我是。 昨天,我遇到了问题,并修改了很多次所有步骤。 今天,我查看了 troybrant 的所有列表。

    好吧,我的错误,我忘了创建正确的分发配置文件:已修复

    上传了一个二进制文件并立即被拒绝:他们说它比不上传更好

    好的,其他修复:从 Xcode 中的所有位置(XXXXXXXXXX.com.company.app 到 com.company.app)删除我的域名前的 10 位数字

还是不行。

    检查我的设备是否与 iTunes 帐户连接。

    每次都清理构建,有时会从设备中删除应用

还是不行。

    最后,在询问产品时,我只使用了 productID,而不是整个 com.company.app.productID。

它奏效了。

我认为有时我们有不止 1 个错误,而当你纠正所有错误时,很难知道问题的确切原因是什么。

现在我很开心

【讨论】:

这很奇怪。 Apple 表示任何产品 ID 都可以使用。这似乎暗示 com.conpany.app 部分是必需的? 确认当所有其他方法都失败时,仅使用产品 ID(第 6 步)对我也有效。 第 6 步对我有用。我正在使用完整的 com.company.x,并且在摸不着头脑为什么它不起作用。 第 2 步我需要使用哪个配置文件???分销商还是开发商??我可以为两者设置相同的捆绑包 ID 吗?? wtf.在我的上一个应用程序中,我需要 com.company.app.product (我只尝试了产品,但没有用)。现在在一个新的应用程序中,它只适用于产品,而不是苹果说要使用的 com.company.app.product...奇怪。【参考方案5】:

我们的问题是 Apple 常见问题解答中的最后一个要点,“Why are my product identifiers being returned in the invalidProductIdentifiers array?”:

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

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

【讨论】:

当前版本的技术说明 TN2259 中缺少常见问题解答:/ 但同样的要点are listed in the invalidproductidentifiers API docs! 您没有完成所有财务要求(请参阅本文档的“合同、税务和银行信息”部分)。 --> 这就是我的问题【参考方案6】:

似乎人们对产品 ID 感到困惑。

您无需为 InApp 添加整个域(例如 com.company.product.inappname)即可工作。

您必须使用您在 iTunes Connect 上创建的确切产品 ID。 就我而言,我刚刚创建了“Product1”,在调用 SKProductsRequest 时使用了它。

不再痛苦。

这个链接有很多有用的信息,但缺少这个小细节: http://troybrant.net/blog/2010/01/in-app-purchases-a-full-walkthrough/

【讨论】:

产品 ID 令人困惑,对我来说也是个问题。由于愚蠢的错误而浪费了时间 非常有用的帖子和链接帮助了我,有必要创建开发配置文件,我只有分发。【参考方案7】:

我的问题是这里描述的第一个问题:

https://devforums.apple.com/thread/23344?start=0&tstart=0

“首先,您需要确保您在 Portal 中的 app-id 正确。”

【讨论】:

【参考方案8】:

您是否从 Settings.app 注销了 AppStore?只有当您退出时,系统才会提示您重新登录。

您的 App ID 是否启用了应用内购买?不能为应用内购买启用带有通配符 (*) 的应用 ID。对于您的应用,您应该创建一个新的 App ID。

我的两分钱在这里:http://blog.mugunthkumar.com/coding/iphone-tutorial-%e2%80%93-in-app-purchases/

【讨论】:

【参考方案9】:

您的应用内购买是否“可出售”?这是我第一次没有检查的设置。

【讨论】:

【参考方案10】:

将产品名称设置为提交给 iTunes Connect 的相同名称为我解决了这个问题。

【讨论】:

【参考方案11】:

在因无效产品被退回而苦苦挣扎了一天左右之后,我的解决方案归结为确保购买的商品是“开发商批准销售”。即使项目旁边有一个绿色标记“已批准出售”,我仍然需要上传屏幕截图并选择批准。

考虑到我仍在测试我的应用并且还没有准备好发售,这似乎是一种倒退且不合逻辑的做事方式。

【讨论】:

【参考方案12】:

我今天发现了另一件事会导致此类问题。有时,由于奇怪的原因,应用程序被损坏,所有尝试购买的东西都以错误告终。我解决了从设备中删除应用程序、清理 Xcode 上的构建并将其重新构建到设备的问题。

【讨论】:

很奇怪,对我来说完全一样。 在这个日期之后我又遇到了这个问题,但更深。我不得不擦拭我的 iPhone 并重新安装它。之后没有一个问题。【参考方案13】:

我发现如果您的应用程序在另一种语言中具有不同的标题,那么除非您将 iPhone 语言设置为英语,否则您将遇到此问题。它只发生在开发中;生产似乎没有问题。

【讨论】:

【参考方案14】:

我有 15 种非消耗品。

突然间,所有 15 个设备都开始在我的一台设备(iPod Touch 4G)中显示为“无效”,但在另一台设备(iPhone 4S)中有效;确实很奇怪。

我删除/重新安装,现在可以正常工作了。

有人说你必须从 Xcode 启动,但这不一定是真的。我有许多具有 AdHoc 构建和测试用户帐户的 beta 测试人员,而且大多数时候他们似乎都可以购买。

也就是说,整个沙盒环境总是不稳定,并且有很多“停机时间”。有时等待就是答案。

【讨论】:

重新安装后是否重新启动?我需要这样做。我有一台可以与 IAP 配合使用的 iPod touch,而两台不能配合 IAP 的 iPad。删除配置文件和应用程序,重新启动然后从 xCode 启动就可以了。没有重新启动它不起作用。 “重启”是指设备、开发机器,还是两者兼而有之? +1 用于重启。我正在为 Mac App Store 编写代码,并更改了目标上的捆绑包 ID。在构建和运行之后,应用程序只会从旧的 bundle id 中获取产品 ID,即使 NSLog 显示它正在使用新的。清理构建+删除派生数据->仍然没有。最后,清理构建 + 删除派生数据 + 重启,让应用从新的捆绑包 ID 中获取产品 ID。【参考方案15】:

除了本主题中发布的所有内容之外,我刚刚安装了正确的调试配置文件,从我的 iPhone 中删除了应用程序,重新启动了我的设备并砰的一声,获得了产品信息。

我在通过模拟器获取产品信息后尝试了这个(现在可以使用最新的 Xcode)。我正要上传二进制文件然后拒绝它,但后来我尝试了上面的方法并得到了它。希望对您有所帮助!

【讨论】:

【参考方案16】:

确保您在 xcode 中的“产品名称”与提交到 iTunes Connect 的应用相同。

【讨论】:

以上是关于StoreKit In App Purchase 无效的产品标识符 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

In-App Purchase(iap)快速指南

About In-App Purchase - 关于应用程序内购买

iPhone In-App Purchase Store Kit 错误 -1003“无法连接到 iTunes Store”

应用内购买消耗品自动恢复

Flutter In-App-Purchase,每次重启应用如何查看是不是已购买?

无法实际托管 In-App-Purchase 托管内容