J'ai implémenté un mécanisme d'achat intégré non consommable simple en suivant le livre de tutoriel Ray Wenderlich.
Lorsque mon application démarre, j'initie une demande d'informations sur le produit:
self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
_productsRequest.delegate = self;
[_productsRequest start];
Le SKProductRequest est créé. Il a une adresse mémoire mais rien d'autre ne se produit. Aucune des méthodes déléguées n'est appelée:
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
NSLog(@"Product info received...");
NSArray *products = response.products;
for (SKProduct *product in products) {
NSLog(@"ID: %@, title:%@, (%f)", product.productIdentifier, product.localizedTitle, product.price.floatValue);
}
self.productsRequest = nil;
}
- (void)request:(SKRequest *)request didFailWithError:(NSError *)error {
NSLog(@"Failed to load list of products");
self.productsRequest = nil;
}
J'ai vérifié deux fois:
Le livre de Ray Wenderlich ne mentionne pas que je dois faire autre chose que cela.
Seulement ne fois J'ai vu un appel -didFailWithError: à mon délégué sur le périphérique, mais il n'est plus apparu. Mon délégué n'est pas appelé à la fois sur l'appareil ou le simulateur. Je l'ai laissé fonctionner pendant des minutes sans aucune réponse.
iTunes Connect donne cet avertissement déroutant:
Vos premiers achats intégrés doivent être soumis avec une nouvelle version d'application. Sélectionnez-les dans la section Achats intégrés de la page Détails de la version, puis cliquez sur Prêt à télécharger le fichier binaire.
Est-ce nécessaire avant de pouvoir tester les achats intégrés?
Dans la version actuelle de Xcode 5.0 (5A1413), les achats intégrés ne fonctionneront pas dans le simulateur iOS.
StoreKit (achats intégrés) ne fonctionnera pas dans le simulateur. 13962338
Source: Notes de publication Xcode 5.0> Problèmes connus> Simulateur iOS https://developer.Apple.com/library/ios/releasenotes/DeveloperTools/RN-Xcode/xc5_release_notes/xc5_release_notes.html#//Apple_ref/doc/ uid/TP40001051-CH2-SW3
Dans la documentation du simulateur iOS, il est écrit:
Limitations de l'API
Dans iOS Simulator, il existe certaines limitations aux API et fonctionnalités, notamment:
Apple Push Services Privacy alerts for access to Photos, Contacts, Calendar, and Reminders The UIBackgroundModes key iCloud document syncing and key-value storage support
Les cadres non pris en charge incluent:
External Accessory Media Player Message UI Event Kit In UIKit, the UIVideoEditorController class Store Kit
Étant donné que l'achat dans l'application nécessite que Store Kit fonctionne et que le framework Store Kit ne soit pas pris en charge pour Simulator, vous ne pouvez pas tester IAP dans iOS Simulator.
Plus d'informations: documentation iOS Simulator
Malheureusement, il y a plusieurs choses que vous ne pouvez pas tester sur le simulateur. In App Purchases appartient à cette liste.
Donc, vous ne pouvez pas tester les achats intégrés dans le simulateur, vous avez besoin d'un appareil iOS pour cela.
Edit: Pour autant que je puisse voir, c'est ce qui se passe lorsque vous essayez de tester IAP sur le simulateur, les délégués d'achat ne seront pas appelés.
J'ai compris quelque chose:
J'ai lancé le SKProductRequest immédiatement à la fin du -didFinishLaunching d'AppDelegate ... et cela n'a jamais fonctionné.
Ensuite, j'ai fait un appel différé et j'ai attendu 3 secondes. Dès lors, il a commencé à fonctionner. Vous ne pouvez donc pas faire de demandes StoreKit immédiatement après le lancement de l'application.
Où est déclaré votre objet skProductRequest? Essayez une déclaration globale de skProductRequest.