3

我已经谷歌这个问题几个小时了。我尝试过类似的事情:

  1. 确认 Bundle Identifier 和 product id 绝对正确
  2. 在模拟器和真实设备上删除并重新安装应用程序
  3. 我尝试了“productID”和“com.company.project.productID”
  4. iTunes 连接中的 IAP 也应该正确配置

我唯一不确定的是我没有在我的 iTunes 连接中填写银行和税务信息。实际上,我只是填写了银行信息,但需要 24 小时才能更新。

我的代码看起来像这样

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    // Set IAPS
    if(SKPaymentQueue.canMakePayments()) {
        println("IAP is enabled, loading")
        var productID:NSSet = NSSet(objects: "ProductID")
        var request: SKProductsRequest = SKProductsRequest(productIdentifiers: productID as Set<NSObject>)
        request.delegate = self
        request.start()
    } else {
        println("please enable IAPS")
    }      
}

func productsRequest(request: SKProductsRequest!, didReceiveResponse response: SKProductsResponse!) {
    println("product request")
    var myProduct = response.products

    for product in myProduct {
        println("product added")
        println(product.productIdentifier)
        println(product.localizedTitle)
        println(product.localizedDescription)
        println(product.price)

        list.append(product as! SKProduct)
    }
}

此代码来自一个示例,它在我的模拟器中运行良好。但是当我用我自己的 productID 替换 ProductID (当然 bundleID 也是如此)时, SKProductsrequest 变成什么都不返回。

我不知道为什么,希望有人可以帮助我。谢谢!

4

2 回答 2

5

我整个星期都在遇到这个问题 - 无论我尝试了哪些代码,并调整了我的构建和配置设置,我都没有得到任何产品。

最终为我解决的问题是将我的应用程序 xcode 的捆绑包 ID 从company.appname更改为com.company.appname. 同时,您想使用格式com.company.appname.thingforpurchase1等 引用您的应用内购买 ID。

为了解决这个问题,我重新进行了在项目中设置自动配置和构建设置的过程,并再次将我的开发人员帐户重新添加到 xcode。这样做之后,上面的语法对我有用。请注意,在 iTunes Connect 上,我的应用程序的捆绑 ID 仍指定为 just company.appname,但由于某些原因在 xcode 中它也需要com.在开始时使用。

对于 Swift 2.0 和 Swift 1.x,我不得不做的另一件事是不同的——编译器将不再接受产品 ID 不再是一个NSSet——相反,请求似乎希望将标识符作为一个给出 Set<String>——见这个下面的例子。

请注意,此解决方案是在 swift 2.0 和 xcode 7 beta 中开发和工作的。

前任:

func requestProductInfo() {
    print("about to fetch product info")
    if SKPaymentQueue.canMakePayments() {
            let request = SKProductsRequest(productIdentifiers:
                Set(productIDs))

            let productIdentifiers: NSSet = NSSet(array: productIDs) // NSset might need to be mutable
            let productRequest : SKProductsRequest = SKProductsRequest(productIdentifiers: productIdentifiers as! Set<String>)

            //we set our class as its delegate (so we can handle the response)& trigger the request.
            productRequest.delegate = self
            productRequest.start()
            print("Fetching Products");
        }
        else {
            print("can't make purchases")
        }
    }
于 2015-07-24T02:02:56.770 回答
1

问题是美国税表和协议。一旦获得批准,一切都会奏效。

于 2020-02-11T09:33:24.077 回答