In app purchase testing in iOS

2020-07-23 03:46发布

问题:

I am using Xcode 8.0, Swift 3.0 and testing in app purchases in my iPad. I want to test in app purchases using sandbox user.

There is no account added in device's Setting

The Problem is I am not getting product list in response of product request code. Please take a look on my code:

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
        })
    }
}

So..... That's the problem: I am getting response.products null (no data in array) so Please help me to find the solution. You can see the comments in code: // THE PROBLEM IS HERE.. I AM GETTING COUNT IS ZERO.. MEANS response.products returning null ARRAY

I created products over iTunes Connect. You can see the image below. All the products are in "Ready to Submit" state.

There is some warning on 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.

And

I also created Sendbox user for testing In-App Purchases. See the image below:

Did I miss something? Or what is the error? And where is error? I want to test in app purchases using sandbox user

回答1:

I fixed this. There are some points need to careful about. See below:

  • Make sure your developer account did the paid application contract. see image below:
  • Create Products on the iTunes Connect.
  • Implement In-App-Purchases code and configuration settings.
  • Create one build with Distribution profile.
  • Upload build on store. Add build to current version. Add In-App-Purchases to the version on iTunes Connect.
  • Then try to test, if still not then submit app once then cancel it. then after try to test on your device.
  • Make sure when you test with sandbox user, you need to sign-out from your already logged in account from device settings, and login with sandbox ID.
  • some screenshots might be helpful.



回答2:

please check these settings capabilities --> In-App purchase --> set to "ON" and at developer.apple.com--> enable In-App purchase for App ID.

and please test app on Device instead of simulator.