我已经谷歌这个问题几个小时了。我尝试过类似的事情:
我唯一不确定的是我在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变成什么都不返回。
我不知道为什么,希望有人可以帮助我。 THX!
答案 0 :(得分:5)
我整个星期都遇到过这个问题 - 无论我在编写代码方面做了什么,并且调整了我的版本和版本。配置设置,我没有产品回来。
最终为我修复的是将我的应用xcode的包ID从company.appname
更改为com.company.appname
。同时,您希望以com.company.appname.thingforpurchase1
等格式参考您的应用内购买ID。
在尝试解决此问题时,我重新完成了在项目中设置自动配置并构建设置的过程。我再次将我的开发者帐户添加到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")
}
}
答案 1 :(得分:0)
问题出在美国税收表格和协议上。一旦获得批准,一切都会起作用。