SKProductsrequest 在 Swift 中不返回任何内容
Posted
技术标签:
【中文标题】SKProductsrequest 在 Swift 中不返回任何内容【英文标题】:SKProductsrequest return nothing in Swift 【发布时间】:2015-05-04 10:41:32 【问题描述】:我已经在谷歌上搜索了这个问题几个小时。我尝试过类似的事情:
-
确认 Bundle Identifier 和产品 ID 绝对正确
在模拟器和真实设备上删除并重新安装应用程序
“productID”和“com.company.project.productID”我都试过了
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 变成什么都不返回。
我不知道为什么,希望有人可以帮助我。谢谢!
【问题讨论】:
嗨乔伊,问题解决了吗?因为我对你的问题有同样的问题.. 【参考方案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<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")
【讨论】:
【参考方案2】:问题出在美国税表和协议上。一旦获得批准,一切都会奏效。
【讨论】:
以上是关于SKProductsrequest 在 Swift 中不返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章
SKProductsRequest 不会在 Catalyst 应用程序中返回 SKProductsResponse
未从 SKProductsRequest 收到应用内购买 SKProduct
iPhone - SKProductsRequest 和“发送到已释放实例的消息”