所以我按照教程尝试用IAP制作测试应用程序。
1)我创建了新的App ID
2)添加了ID为 iapdemo_extra_colors_colect_1 和 iapdemo_extra_colors_colect_2“
的两种耗材产品3)在iTunes连接中创建测试用户
4)创建和App。
5)使用tableView视图为购买单独制作页面
6)将App ID包ID复制到info.plist为“Bundle identifier”
7)我的购买页面代码是:
import UIKit
import StoreKit
class IAPurchaceViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, SKProductsRequestDelegate {
var productIDs: [String!] = []
var productsArray: [SKProduct!] = []
@IBOutlet weak var tblProducts: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
tblProducts.delegate = self
tblProducts.dataSource = self
productIDs.append("iapdemo_extra_colors_colect_1")
productIDs.append("iapdemo_extra_colors_colect_2")
requestProductInfo()
}
func requestProductInfo() {
if SKPaymentQueue.canMakePayments() {
let productIdentifiers = NSSet(array: productIDs)
let productRequest = SKProductsRequest(productIdentifiers: productIdentifiers as! Set<String>)
productRequest.delegate = self
productRequest.start()
} else {
print("Cannot perform In App Purchases.")
}
}
func productsRequest(request: SKProductsRequest, didReceiveResponse response: SKProductsResponse) {
if response.products.count != 0 {
for product in response.products {
productsArray.append(product )
}
tblProducts.reloadData()
} else {
print("There are no products.")
}
if response.invalidProductIdentifiers.count != 0 {
print(response.invalidProductIdentifiers.description)
}
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return productsArray.count
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 80.0
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("idCellProduct", forIndexPath: indexPath)
let product = productsArray[indexPath.row]
cell.textLabel?.text = product.localizedTitle
cell.detailTextLabel?.text = product.localizedDescription
return cell
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
// MARK: IBAction method implementation
@IBAction func dismiss(sender: AnyObject) {
dismissViewControllerAnimated(true, completion: nil)
}
// MARK: UITableView method implementation
}
当我来购买页面时,我希望看到产品列表,但我只得到“没有产品。 [“iapdemo_extra_colors_colect_1”,“iapdemo_extra_colors_colect_2”] “在控制台中。
我尝试了一些教程和苹果示例代码来检查我的应用内购买,但没有运气。
我下载Apple示例代码以检查应用内购买 https://developer.apple.com/library/ios/samplecode/sc1991/StoreKitSuite.zip
我在invalidProductIdentifiers数组中获得了我的单个产品ID。所以我找到了故障排除列表(来自Apple):
我得到了答案
任何想法的人?
答案 0 :(得分:0)
问题在于配置文件。这是出于某种原因不正确,所以我自己做了它,它开始运作良好。
我发现如果你的证书有问题但我的情况不是这个问题,我可以解决这个问题!
希望它有所帮助!