iOS 中的应用内购买测试
Posted
技术标签:
【中文标题】iOS 中的应用内购买测试【英文标题】:In app purchase testing in iOS 【发布时间】:2016-11-29 07:27:08 【问题描述】:我正在使用 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 null(数组中没有数据)所以请帮助我找到解决方案。您可以在代码中看到 cmets: // 问题在这里.. 我得到的计数为零.. 意味着 response.products 返回 null 数组
我通过 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 用户用于测试应用内购买。见下图:
我错过了什么吗?或者是什么错误?错误在哪里? 我想使用沙盒用户测试应用内购买
【问题讨论】:
你解决了吗? 是的@MaximShoustin ...请在下面查看我的答案。如果您面临同样的问题,我认为您缺少一些小部分。 【参考方案1】:我解决了这个问题。有几点需要注意。见下文:
确保您的开发者帐户履行了付费应用合同。见下图: 在 iTunes Connect 上创建产品。 实施应用内购买代码和配置设置。 使用分发配置文件创建一个构建。 在商店上传构建。将构建添加到当前版本。将应用内购买添加到 iTunes Connect 上的版本。 然后尝试测试,如果仍然没有,则提交应用程序一次然后取消它。然后尝试在您的设备上进行测试。 确保在使用沙盒用户进行测试时,您需要从设备设置中退出已登录的帐户,并使用沙盒 ID 登录。 一些屏幕截图可能会有所帮助。【讨论】:
对我来说是一个绊脚石的一件事是我没有完成我的银行信息。完成该步骤后,产品 ID 开始起作用。 我们必须上传二进制文件然后提交吗?【参考方案2】:请检查这些设置 功能 --> 应用内购买 --> 设置为“开启” 并在 developer.apple.com--> 为 App ID 启用应用内购买。
请在设备而不是模拟器上测试应用。
【讨论】:
感谢 Mahial Singh 的回复。但我已经在证书和配置文件中的 iTunes 中启用了应用内购买。我还在 xCode -> 功能中启用了应用内购买。 . 这已经完成了。 那么您必须检查产品标识符。产品标识符匹配区分大小写。因此,如果您在 Apple 上创建了一个标识符为 com.yourcompany.product1 的产品,并且您使用产品标识符 com.yourcompany.Product1 调用产品请求,那么您的列表将返回零个产品。 或者您可以尝试使用 productID = "MyProduct" let productsRequest:SKProductsRequest = SKProductsRequest(productIdentifiers: productIDs as!Set以上是关于iOS 中的应用内购买测试的主要内容,如果未能解决你的问题,请参考以下文章