Joe*_*ang 3 in-app-purchase ios skproduct swift skpaymenttransaction
我已经谷歌这个问题几个小时了.我试过类似的事情:
我唯一不确定的是我没有在iTunes连接中填写Banking和Tax.实际上,我刚刚填写了银行信息,但需要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)
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码来自一个例子,它在我的模拟器中运行得非常好.但是当我用我自己的productID替换ProductID时(当然也包括bundleID),SKProductsrequest变成什么都不返回.
我不知道为什么,希望有人可以帮助我.谢谢!
我整个星期都遇到过这个问题 - 无论我尝试使用代码并调整构建和配置设置,我都没有回复产品.
最后修复它的是将我的应用程序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")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3150 次 |
| 最近记录: |