【问题标题】:SKProductsrequest return nothing in SwiftSKProductsrequest 在 Swift 中不返回任何内容
【发布时间】:2015-05-04 10:41:32
【问题描述】:

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

  1. 确认 Bundle Identifier 和产品 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 变成什么都不返回。

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

【问题讨论】:

  • 嗨乔伊,问题解决了吗?因为我对你的问题有同样的问题..

标签: ios swift in-app-purchase skproduct skpaymenttransaction


【解决方案1】:

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

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

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

对于 Swift 2.0 和 Swift 1.x,我还必须做不同的另一件事——编译器将不再接受产品 ID 不再是 NSSet——相反,请求似乎希望提供标识符作为Set&lt;String&gt; - 请参阅下面的示例。

请注意,此解决方案是在 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")
        }
    }

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-27
      • 2019-04-06
      • 2012-02-15
      • 2020-09-07
      相关资源
      最近更新 更多