title: In-App Purchase not working, showing No Products
body: <p>I am learning about In-App Purchase provided by Apple. So I was following this tutorial :
  <a href="http://www.appcoda.com/in-app-purchase-tutorial/" rel="noreferrer">http://www.appcoda.com/in-app-purchase-tutorial/</a></p>
  
  <p>I followed all the steps in this tutorial. Firstly, I created an app id,and then created an app in iTunes using that app id. Then I created two In-App purchase with product id as "com.outlines.feature1" and "com.outlines.feature2", both of them consumable.
  The rest of the code I simply followed the steps from the above tutorial</p>
  
  <pre><code>import UIKit
  import StoreKit
  
  protocol IAPurchaceViewControllerDelegate {
      func didBuyColorsCollection(collectionIndex: Int)
  }
  
  
  class IAPurchaceViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, SKProductsRequestDelegate, SKPaymentTransactionObserver {
  
  @IBOutlet weak var tblProducts: UITableView!
  
  var delegate: IAPurchaceViewControllerDelegate!
  
  var selectedProductIndex: Int!
  var transactionInProgress = false
  
  let productIdentifiers = NSSet(array: ["com.outlines.feature1", "com.outlines.feature2"])
   var product: SKProduct?
  var productsArray = Array&lt;SKProduct&gt;()
  
  override func viewDidLoad() {
      super.viewDidLoad()
  
      // Do any additional setup after loading the view.
      tblProducts.delegate = self
      tblProducts.dataSource = self
  
      //checks whether the In-App feature is activated or not
      requestProductInfo()
  
      SKPaymentQueue.defaultQueue().addTransactionObserver(self)
  }
  
  func requestProductInfo(){
      if SKPaymentQueue.canMakePayments() {
          let request = SKProductsRequest(productIdentifiers:
              productIdentifiers as! Set&lt;String&gt;)
          print("This is the request to be sent \(request)")
          request.delegate = self
          request.start()//calls productsRequest() function
      }
      else {
          print("Cannot perform In App Purchases.")
      }
  }
  
  override func didReceiveMemoryWarning() {
      super.didReceiveMemoryWarning()
  }
  
  // MARK: IBAction method implementation
  
  @IBAction func dismiss(sender: AnyObject) {
      dismissViewControllerAnimated(true, completion: nil)
  }
  
  
  // MARK: UITableView method implementation
  
  func numberOfSectionsInTableView(tableView: UITableView) -&gt; Int {
      return 1
  }
  
  
  func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
      return productsArray.count
  }
  
  
  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&gt; UITableViewCell {
      let cell = tableView.dequeueReusableCellWithIdentifier("idCellProduct", forIndexPath: indexPath) as UITableViewCell
  
      let product = productsArray[indexPath.row]
      cell.textLabel?.text = product.localizedTitle
      cell.detailTextLabel?.text = product.localizedDescription
  
      return cell
  }
  
  
  func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
      selectedProductIndex = indexPath.row
      showActions()
      tableView.cellForRowAtIndexPath(indexPath)?.selected = false
  }
  
  func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -&gt; CGFloat {
      return 80.0
  }
  
  
  
  
  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  
  
  func productsRequest(request: SKProductsRequest, didReceiveResponse response: SKProductsResponse) {
      if response.products.count != 0 {
          for product in response.products {
              productsArray.append(product as SKProduct)
          }
  
          tblProducts.reloadData()
      }
      else {
          print("There are no products.")
      }
  
      if response.invalidProductIdentifiers.count != 0 {
          print("Invalid "+response.invalidProductIdentifiers.description)
      }
  }
  
  func showActions() {
      if transactionInProgress {
          return
      }
  
      let actionSheetController = UIAlertController(title: "IAPDemo", message: "What do you want to do?", preferredStyle: UIAlertControllerStyle.ActionSheet)
  
      let buyAction = UIAlertAction(title: "Buy", style: UIAlertActionStyle.Default) { (action) -&gt; Void in
          let payment = SKPayment(product: self.productsArray[self.selectedProductIndex] as SKProduct)
          SKPaymentQueue.defaultQueue().addPayment(payment)
          self.transactionInProgress = true
      }
  
      let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel) { (action) -&gt; Void in
  
      }
  
      actionSheetController.addAction(buyAction)
      actionSheetController.addAction(cancelAction)
  
      presentViewController(actionSheetController, animated: true, completion: nil)
  }
  
  func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
      for transaction in transactions as [SKPaymentTransaction] {
          switch transaction.transactionState {
          case SKPaymentTransactionState.Purchased:
              print("Transaction completed successfully.")
              SKPaymentQueue.defaultQueue().finishTransaction(transaction)
              transactionInProgress = false
              delegate.didBuyColorsCollection(selectedProductIndex)
  
          case SKPaymentTransactionState.Failed:
              print("Transaction Failed");
              SKPaymentQueue.defaultQueue().finishTransaction(transaction)
              transactionInProgress = false
  
          default:
              print(transaction.transactionState.rawValue)
          }
      }
  }  
  }
  </code></pre>
  
  <p>There are no errors, but the when I run it on iPhone, the console shows:</p>
  
  <pre><code>This is the request to be sent &lt;SKProductsRequest: 0x15d86210&gt;
  There are no products.
  Invalid ["com.outlines.feature1", "com.outlines.feature2"]
  </code></pre>
  
  <p>The console shows no products, however I have added two in-app features in my iTunes id. Here is the screenshot:
  <a href="https://i.stack.imgur.com/Jifay.png" rel="noreferrer"><img src="https://i.stack.imgur.com/Jifay.png" alt="In-App Purchases in iTunes"></a></p>
  
  <p>Can anyone tell me what I am doing wrong??</p>