我正在使用Xcode 8.0,Swift 3.0并在我的iPad上测试应用内购买。 我想使用沙盒用户测试应用内购买。
设备的设置中没有添加帐户
问题是我没有在产品请求代码的响应中获得产品列表。 请查看我的代码:
let PRODUCT_ID_MY_PRODUCT = "com.company.ProjectName.MyProduct"
// The ProducID in this code and ProducID on iTunes are the SAME. ✔️
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if productID == nil {
productID = PRODUCT_ID_MY_PRODUCT
}
SKPaymentQueue.default().add(self)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
startPurchases()
}
func startPurchases() {
if (SKPaymentQueue.canMakePayments())
{
let productIDs = NSSet(object: self.productID!)
let productsRequest:SKProductsRequest = SKProductsRequest(productIdentifiers: productIDs as! Set<String>)
productsRequest.delegate = self
productsRequest.start()
}
}
// Delegate Methods for SKProductsRequest
func productsRequest (_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
let count : Int = response.products.count
// THE PROBLEM IS HERE.. I AM GETTING COUNT IS ZERO.. MEANS response.products returning null ARRAY
if (count>0) {
let validProducts = response.products
for aProduct in validProducts {
print(aProduct.productIdentifier)
}
} else {
DispatchQueue.main.async(execute: {
UIAlertView(title: "Purchase !", message: "Product not available", delegate: nil, cancelButtonTitle: "OK").show()
return
})
}
}
所以......问题就在这里:我获取的response.products为空(数组中没有数据),请帮我找到解决方案。您可以在代码注释中看到:
// 问题就在这里... 我得到的计数为零... 这意味着response.products返回了空数组我在iTunes Connect上创建了产品。您可以查看下面的图片。所有产品都处于"准备提交"状态。
iTunes上有一些警告。
Your first In-App Purchase must be submitted with a new app version.
Select it from the app’s In-App Purchases section and click Submit.
Once your binary has been uploaded and your first In-App Purchase
has been submitted for review, additional In-App Purchases can be
submitted using the table below.
此外,我还为测试创建了 Sendbox 用户以进行应用内购买。请查看下面的图像:
我是否遗漏了什么?或者有什么错误?错误在哪里?我想使用沙盒用户来测试应用内购买