2016-11-29 2 views
3

J'utilise Xcode 8.0, Swift 3.0 et de tester dans les achats d'applications dans mon iPad. Je veux tester les achats dans l'application en utilisant l'utilisateur sandbox.In test d'achat d'application dans iOS

Il n'y a pas compte ajouté dans Réglage du dispositif

Le problème est que je ne reçois pas la liste des produits en réponse du code de requête produit. S'il vous plaît jeter un oeil sur mon 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 
     }) 
    } 
} 

Alors ..... Voilà le problème: Je reçois response.products null (aucune donnée dans le tableau) si S'il vous plaît aidez-moi à trouver la solution. Vous pouvez voir les commentaires dans le code: // LE PROBLÈME EST ICI .. J'AI OBTENIR COMPTE EST ZÉRO. MOYENS response.products retour null ARRAY

J'ai créé des produits sur iTunes Connect. Vous pouvez voir l'image ci-dessous. Tous les produits sont en état "Prêt à Soumettre".

Il y a un avertissement sur 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. 

In-App Purchases iOS iTunes Connect Ready to submit state

Et

J'ai aussi créé utilisateur Sendbox pour tester achat In-App. Voir l'image ci-dessous:

Sendbox test user for In-App Purchases iOS itunes

Ai-je raté quelque chose? Ou quelle est l'erreur? Et où est l'erreur? Je veux tester dans les achats d'applications utilisant l'utilisateur bac à sable

+0

Avez-vous le résoudre? –

+0

Oui @MaximShoustin ... s'il vous plaît voir ma réponse ci-dessous. Si vous faites face au même problème, je pense qu'il vous manque une petite partie. –

Répondre

1

s'il vous plaît vérifier ces paramètres capacités -> In-App Purchase -> sur "ON" et à developer.apple.com -> Activer dans -App achat pour l'identifiant de l'application. Et s'il vous plaît tester l'application sur le périphérique au lieu du simulateur.

 Xcode-->capabilities

developer.apple.com--> enable In-App purchase

+0

Merci pour la réponse Mahial Singh .. mais j'ai déjà activé In-App Purchase dans iTunes dans les Certificats et les profils de provisionnement .... Et j'ai également activé l'achat In-App dans xCode -> Capacités ... C'EST DEJA FAIT. –

+0

alors vous devez vérifier l'identifiant du produit. la correspondance d'identificateur de produit est sensible à la casse. Donc, si vous avez créé un produit sur Apple avec un identifiant de dire com.yourcompany.product1 et que vous appelez la demande de produit avec un identifiant de produit de com.yourcompany.Product1 Votre liste sera retourné avec zéro produit. – Rivendell

+0

Ou vous pouvez essayer avec productID = "MyProduct" nous productsRequest: SKProductsRequest = SKProductsRequest (productIdentifiers: productIDs comme Set ) plutôt que productID = "com.company.ProjectName.MyProduct" – Rivendell

5

Je fixe cela. Il y a quelques points à surveiller. Voir ci-dessous:

  • Assurez-vous que votre compte de développeur a fait le contrat d'application payant. voir l'image ci-dessous:
  • Créer des produits sur iTunes Connect.
  • Implémenter les paramètres de code et de configuration In-App-Purchases.
  • Créez une construction avec un profil de distribution.
  • Téléchargez la version en magasin. Ajouter construire à la version actuelle. Ajoutez des achats intégrés à l'application à la version sur iTunes Connect.
  • Ensuite, essayez de tester, si ce n'est pas encore, puis soumettre l'application une fois, puis l'annuler. puis après essayer de tester sur votre appareil.
  • Assurez-vous que lorsque vous testez avec un utilisateur Sandbox, vous devez vous déconnecter de votre compte déjà connecté à partir des paramètres de l'appareil et vous connecter avec l'ID sandbox.
  • certaines captures d'écran peuvent être utiles.

enter image description here

enter image description here

enter image description here

enter image description here

+0

Une chose qui a été une pierre d'achoppement pour moi était que je n'avais pas complété mes informations bancaires. Une fois cette étape terminée, les ID de produit ont commencé à fonctionner. –

+1

Doit-on téléverser binaire puis soumettre? – duykaka