应用内购买产品未找到。

9
我已创建一个具有bundle标识符的应用程序。

com.myapp

现在我添加了两个内购项目。以下是产品ID:

com.myapp.product1

com.myapp.product2

现在当我获取产品列表时,它不显示任何产品。
我使用以下代码来加载产品列表。
  let request = SKProductsRequest(productIdentifiers: Set(remainingIds))
        request.delegate = self
        loadProductsRequests.append(LoadProductsRequestInfo(request: request, completion: completion))
        request.start()

代码可以正常工作,如果我使用其他项目的产品和捆绑标识。但是当我尝试为我的项目运行时,它无法加载产品列表。
看起来问题是由于捆绑标识的结构造成的。请帮助我。

你的产品标识符现在的状态是什么?它们是“准备提交”还是“等待上传”? - Sivajee Battina
4个回答

18

您的代码似乎可以请求产品。

请确保您已将产品与捆绑标识和其他必要细节添加到iTunes Connect应用程序中的应用内购买类别下。

还有一件事 - 在您在iTunes Connect上填写“协议税收和银行”表单之前,苹果不会允许从应用内购买中接收产品列表。

以下是接收产品列表的代码,这可能对您有所帮助。

func productsRequest (_ request: SKProductsRequest, didReceive response: SKProductsResponse) {

        let count : Int = response.products.count
        if (count>0) {
            var validProducts = response.products
            var validProduct: SKProduct = response.products[0] as SKProduct

            if (validProduct.productIdentifier == self.product_id) {
                print(validProduct.localizedTitle)
                print(validProduct.localizedDescription)
                print(validProduct.price)
                buyProduct(product: validProduct);

            } else {
                print(validProduct.productIdentifier)
            }
        } else {
            print("nothing")
        }
    }

这里的 product_id = "com.myapp.product1" 或者 "com.myapp.product2"。

同时,从“Capabilities”中启用应用内购买:

应用内购买


这段代码不再起作用了...抱歉。编辑:非常抱歉!它可以工作,但在真实设备上无法运行,这真的很奇怪。有什么想法吗?(我已经取消了我的踩) - Linus

4
在应用内购买的情况下,您需要执行以下操作:
- 登录iTunes Connect - 点击“用户和角色”,添加“沙盒测试人员”以测试应用程序的虚拟付款 - 点击“协议税务和银行业务”,检查合同类型,添加所需的帐户信息、银行信息和税务信息。 - 在iTunes Connect首页,点击“管理您的应用程序”链接 - 在右上角,点击“创建新应用程序” - 填写应用程序的所有请求信息。当要求应用程序二进制文件时,请勾选表示稍后上传它的框。
您可能需要一天时间才能获得所需的产品列表。

1
我已经完成了那个过程。那不是问题所在。 - HarshIT
问题在于我的应用程序中没有获取到产品列表。 - HarshIT
我曾经遇到过这个确切的问题,而且它确实是由这个答案中描述的问题(或略有变化)引起的。我认为应用内购买API故意晦涩难懂,以便不能被操纵。虽然从开发者的角度来看似乎很奇怪,但如果您的账户的“文件”不正确,就会导致您看到的问题。我知道这很令人沮丧,但请尝试检查您账户、应用设置、授权等所有内容,看看是否有您忘记勾选的框或未签署的协议。苹果的神秘方式... - Anna Dickinson

1

虽然有些傻,但在解决其他回复中提到的所有问题后,我发现我的应用程序和Appstore connect上的Bundle ID略有不同。

因此,请确保您的Bundle ID在App Store Connect和您的应用程序之间匹配。


0
发生在我身上。经过数小时的调试,直到我确信代码、捆绑标识符、Xcode配置文件和捆绑标识符都没有问题。
实际上,问题出在我最近更新了我的苹果开发者会员资格,但没有更新付费应用合同。一旦我更新了合同,一切就恢复正常了,我的应用内产品在SKProductsRequest之后被返回。
您可以查看this他们论坛上的答案:合同必须由您和苹果签署。这可以防止SKProductsRequest验证标识符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接