J'ai travaillé sur l'ajout d'achats intégrés à l'application et j'ai pu créer et tester des achats intégrés à l'aide de Store Kit (yay!). Au cours des tests, j'ai exercé mon application de manière à provoquer son blocage lors de son achat (je suppose donc que le cycle normal de réception de paymentQueue: updatedTransactions et l'appel de finishTransaction ont été interrompus).
À présent, je ne parviens pas à terminer les transactions et n'obtiens que des transactions avec transactionState SKPaymentTransactionStateFailed lorsque paymentQueue: updatedTransactions est appelée.
Le code transaction.error.code est -1003 et la description transaction.error.localizedDescription est "Connexion impossible à iTunes Store"!
J'ai essayé de supprimer tous les produits d'iTunesConnect et de les reconstruire à l'aide d'identifiants différents, mais cela n'a pas aidé. J'ai également essayé d'utiliser l'application App Store pour vraiment me connecter au vrai App Store et télécharger certaines applications afin que je puisse me connecter. Enfin, j'ai visité l'application Settings: Store pour m'assurer que je suis déconnecté de mon compte normal sur l'App Store.
J'ai eu une situation similaire et vidé le trafic réseau de l'iPhone pour voir ce qui se passe. J'ai trouvé que le magasin normal a été contacté au lieu du bac à sable. Cela a aidé à supprimer l'application de l'appareil, à la nettoyer et à la construire/l'installer à nouveau. Apparemment, quelque chose avec le profil de développement avait mal tourné.
Mise à jour: Pour vider le trafic réseau d'un iPhone non jailbreaké, utilisez simplement le partage Internet sur votre Mac et configurez votre iPhone pour qu'il utilise le WiFi de votre Mac. Alors tcpdump -n -i en1
sur votre Mac fera l'affaire.
Si vous obtenez l'erreur 0 "Impossible de se connecter à iTunes Store" (je réalise que ce n'est pas l'erreur -1003 à propos de laquelle OP a posé une question, mais une recherche Web de l'erreur 0 conduit également ici), cela peut être dû à deux problèmes possibles:
-[SKPaymentQueue addPayment:]
, avant que la fenêtre contextuelle ne vous demande de confirmer le paiement.Pour résoudre le problème n ° 1, transmettez l'ID de produit correct. Pour résoudre le problème n ° 2, créez un nouvel utilisateur test sur iTunes Connect et supprimez éventuellement l'ancien utilisateur test.
J'avais un problème similaire: je n'arrivais pas à me connecter à iTunes Store avec Code = 0. Voici comment je l'ai résolu, après avoir essayé tous les autres conseils rituels trouvés sur Internet, allant du re-téléchargement de mes certificats à la réinitialisation de tous les paramètres de mon appareil en sacrifiant une chèvre noire vierge:
Dans le résumé de la cible de l'application, mon numéro de version était dans le champ "build", mais rien dans le champ "version". Cela me paraissait étrange, j'ai donc déplacé le numéro de version de "build" à "version". Cela a entraîné l'erreur susmentionnée. Remettre le numéro de version dans "build" a résolu l'erreur.
Ajouter un nouvel utilisateur de test pour votre application.
Assurez-vous que la date et l'heure sont définies correctement dans les paramètres. sinon, il ne parvient pas à faire une connexion SSL au magasin !!
J'ai eu la même erreur qui semblait surgir de nulle part (cela fonctionnait bien un jour, mais le lendemain, cela me donnait ces erreurs environ 2 fois sur 3 lorsque j'ai essayé de tester mon achat intégré).
Ensuite, j'ai visité l'App Store (lorsque j'essayais de faire un autre achat réel) et me suis rendu compte qu'ils avaient un nouvel accord d'utilisateur qu'ils souhaitaient que je vérifie. Après cela, lorsque je suis retourné sur ma propre application et que j'ai réessayé l'achat test, cela fonctionnait bien et je n'ai pas eu d'erreur depuis. Donc, je soupçonne que j'ai eu l'erreur parce qu'ils voulaient que je vérifie le nouvel accord d'utilisateur.
Maintenant, la seule chose que je me demande, c'est s'il existe un moyen pour mon achat intégré de transmettre cette invite à mes utilisateurs au lieu de leur donner une erreur mystérieuse.
Ce qui a fonctionné pour moi a été de désinstaller mon application du périphérique de test, puis d'installer une nouvelle copie à partir de Xcode.
Dans SKPaymentTransactionState
indique que SKPaymentTransactionStateFailed
avant que votre demande soit ajoutée à la file d'attente du serveur.
@class SKPayment;
enum {
SKPaymentTransactionStatePurchasing, // Transaction is being added to the server queue.
SKPaymentTransactionStatePurchased, // Transaction is in queue, user has been charged. Client should complete the transaction.
SKPaymentTransactionStateFailed, // Transaction was cancelled or failed before being added to the server queue.
SKPaymentTransactionStateRestored // Transaction was restored from user's purchase history. Client should complete the transaction.
};
typedef NSInteger SKPaymentTransactionState;
Et sur SKPaymentTransaction
Erreur de référence de classe La discussion dit:
La propriété error est indéfinie, sauf si transactionState a pour valeur SKPaymentTransactionStateFailed
. Votre application peut lire la propriété error pour déterminer la raison de l'échec de la transaction.
Donc, transaction.error.localizedDescription est "Impossible de se connecter à iTunes Store"! est un message d'erreur général. Ce message d'erreur s'affiche régulièrement lorsque je teste mes achats InApp.
Quelques conseils que vous pouvez faire est,
Récupérez tous les produits de l'App Store en utilisant SKProductsRequest
et vérifiez que son response.products
contient votre productIdentifier
.
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:[objProducts allKeys]]];
//pass product identifier array as argument
[request start];
Et Catch réponse en:
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
NSArray *myProduct = response.products;
}
Pour que vous puissiez décider si vous pouvez communiquer avec App Store. et votre identifiant de produit est là.
merci
Je suis coincé depuis 2 jours, voici ma solution:
Je pense que l’importance est le compte du testeur de bac à sable, je ne l’avais jamais utilisé depuis, car j’ai toujours eu erreur-0.
Dans mon cas, j'ai tout essayé sur Internet, mais rien n’a fonctionné.
En fait, Apple a cassé le système de paiement de production et le bac à sable. J'ai juste dû attendre deux jours et ça a commencé à marcher.
J'ai nettoyé toutes les cibles dans XCode et supprimé manuellement l'application de mon appareil, puis créer et exécuter à partir de XCode et résolu un problème similaire (le même message d'erreur mais un code d'erreur différent: -1009)
J'ai essayé toutes les solutions proposées dans le fil ici, mais en vain. Dans mon cas, j’avais un identificateur d’ensemble de cartes génériques commençant par le même nom de domaine que celui que j’avais utilisé lors de la création de l’identificateur d’ensemble pour le profil de provisionnement des achats intégrés.
Voici comment j'ai résolu le problème et qui peut vous aider à résoudre le vôtre (voir ci-joint):
1) Connectez votre iPhone à Mac.
2) Sous "Périphériques" (dans Xcode> Menu Fenêtre> Fenêtre de l'organiseur), sélectionnez l'option "Profils de provisioning" pour votre iPhone. Vous verrez tous les profils de provisioning résidant actuellement sur votre iPhone.
3) Supprimez avec précaution tous les profils de provisioning commençant par le nom de domaine particulier dans l'identifiant de l'ensemble (com.MYDOMAIN. *), En particulier ceux qui utilisent une carte générique, à l'exception de celui que vous avez créé spécifiquement, avec la possibilité d'effectuer .MYDOMAIN.inappidentifier).
4) Installez à nouveau l'application et testez votre mise en œuvre avec un nouvel utilisateur de test iTunes Connect (bac à sable)
CAPTURE D'ÉCRAN:
Le achat intégré à l'application FAQ dit:
Ne peut se connecter à la boutique iTunes
Le problème "Impossible de se connecter à iTunes Store" peut être dû à une ou plusieurs des raisons suivantes:
- Le bac à sable peut être inaccessible.
- Votre application ne possède pas de version groupée (CFBundleVersion). Voir Définition du numéro de version et de la chaîne de construction pour plus d'informations.
- Votre application s'exécute dans le simulateur, qui ne prend pas en charge les achats intégrés.
- Vous tentez d'acheter un produit qui n'est pas disponible à la vente. Consultez Interroger l'App Store pour obtenir des informations sur le produit avant de présenter l'interface utilisateur de votre magasin pour plus d'informations.
Dans mon cas, l'erreur s'est produite parce que j'utilisais le simulateur Xcode. Cela a commencé à fonctionner quand j'ai utilisé mon appareil.
Même dans le Guide de programmation pour l'achat intégré à l'application indique que le périphérique iOS en développement utilise une étape de test suggérée.
Déconnectez-vous simplement de votre compte iTunes (ne vous connectez pas à votre compte test maintenant!) Et démarrez votre programme. Lors de l'achat inapp il demande vos informations de connexion, vous devez entrer les informations de votre compte test.
Malheureusement, j'ai rencontré un problème qui n'a pas été documenté ici. In-App-Purches ne fonctionnera pas tant que vous n’aurez pas accepté tous les contrats liés aux applications et aux applications intégrées. Assurez-vous donc que vous (ou votre client) configurez correctement tous les contrats dans iTunesConnect. Ils doivent apparaissent dans la section "Contrats en vigueur" pour que vos achats fonctionnent.
Notre problème était que dans iTunes Connect, nous avions le mauvais identifiant de bundle. Quelqu'un avait créé l'application à l'avance et nous avons dû modifier l'application et définir son application sur la nouvelle.
Je me suis débrouillé pour aller dans l'App Store, puis pour revenir à Paramètres/Store pour me déconnecter. Je l'ai fait 3 fois, revisitant mon application à chaque fois et ajoutant la sortie de débogage NSLog, et maintenant je peux continuer à tester mon code d'achat intégré sans erreur -1003. Je ne suis pas sûr de la raison exacte pour que cela fonctionne à nouveau, mais je suis assez certain que ce n'est pas un changement de code de ma part car tout ce que je faisais était d'ajouter NSLogs et de relancer mon application.
Oui, si vous avez initialement connecté votre iPad/iPhone à un autre ordinateur et que vous l'utilisez maintenant sur un autre ordinateur, vous devez absolument vous déconnecter du magasin sur votre iPad, vous connecter avec un compte normal à iTunes sur votre MAC, puis Sync. .
Assurez-vous également que votre iPad "WIFI" est allumé ...
J'ai eu deux problèmes qui ont causé ceci:
1) J'avais copié le code IAP d'une application différente (fonctionnelle) mais je n'avais pas configuré l'installation de mon observateur:
observateur = [[IAPHelper alloc] init]; [[SKPaymentQueue defaultQueue] addTransactionObserver: observateur];
2) J'étais connecté à iTunes dans les paramètres de mon appareil. Vous ne pouvez utiliser qu'un utilisateur de test dans le bac à sable - je me suis déconnecté et cela a fonctionné à nouveau.