45 votes

iPhone In App Purchase - Les produits de réponse sont encore vides?! S'il vous plaît aider

J'ai perdu beaucoup de temps sur ce sujet et donc je suis en train de mendier un peu d'aide. En gros, j'ai essayé de mettre en place les achats in-app sur une application de test avant de me mettre en œuvre dans une bonne app que mon entreprise travaille. J'ai lu le Magasin kit de pdf et d'autres extraits sur un 1000 fois, mais les produits sont toujours renvoyés en tant que vide. Voici exactement ce que j'ai fait jusqu'à présent:

Le programme d'installation application de test et d'Achat In-App les éléments du test
J'ai créé une nouvelle application id 'Application de Test à mon entreprise sur le portail des développeurs dans l'iPhone Dev center. J'ai fait en sorte que le préfixe a com.mycompany.testappone pour s'assurer que les achats in-app peut être configuré. Rester dans l'App Id de l'article, j'ai configuré les achats in-app en cochant l'option "Enable Achat In-App' option.

J'ai créé Une Application de Test "dans iTunes Connect et terminé la procédure habituelle, mais choisis" télécharger des binaires plus tard et de ne pas soumettre à l'examen car l'application ne fait rien. Sûrement, nous n'avons pas à soumettre l'application à l'examen pour que cela fonctionne?! J'ai ensuite cliqué sur " gestion des achats in-app et a créé un nouveau produit avec l'id 'test1' et approuvée, de sorte qu'il est autorisé à la vente.

Code
J'ai créé un nouveau projet dans XCode appelé TestAppOne et voici les 2 classes seulement, j'utilise pour l'instant:

TestAppOneAppDelegate.h:

#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>  

@interface TestAppOneAppDelegate : NSObject <UIApplicationDelegate, SKRequestDelegate, SKProductsRequestDelegate> {
    UIWindow *window;
}

TestAppOneDelegate.m:

#import "TestAppOneAppDelegate.h"

static NSString *kMyFeatureIdentifier1 = @"com.mycompany.testappone.test1";

@implementation TestAppOneAppDelegate
@synthesize window;

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
 if([SKPaymentQueue canMakePayments]) {
  NSLog(@"IN-APP:can make payments");
 }
 else {
  NSLog(@"IN-APP:can't make payments");
 }

 [self requestProductData];
 [window makeKeyAndVisible]; 
}

- (void)requestProductData {
 NSLog(@"IN-APP:requestProductData");
 SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject:kMyFeatureIdentifier1]];
 request.delegate = self; 
 [request start];
 NSLog(@"IN-APP:requestProductData END");  
} 

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
 NSLog(@"IN-APP:productsRequest");
 NSArray *myProduct = response.products;
 NSLog(@"IN-APP:array count: %i", [myProduct count]);
 [request autorelease];
 NSLog(@"IN-APP:productsRequest END"); 
}

- (void)dealloc {
    [window release];
    [super dealloc];
}

@end

Les tests sur l'appareil
J'ai créé un compte de test sandbox et déconnecté de mon compte itunes sur l'iPhone, mais n'a pas connecter avec le compte test que la documentation nous dit de ne pas faire cela jusqu'à ce que nous sommes invité à l'achat du véhicule. J'ai ensuite construire l'application et ici, c'est le journal que je reçois:

IN-APP:can make payments
IN-APP:requestProductData
IN-APP:requestProductData END
IN-APP:productsRequest
IN-APP:array count: 0
IN-APP:productsRequest END

Quelqu'un peut-il me dire si j'ai oublié des étapes ou si il y a quelque chose que je fais mal. Malheureusement, il ne semble pas être un exemple des applications faites par Apple. Merci!

34voto

AlBeebe Points 3273

Une autre étape importante qui est souvent négligée est de vous assurer que vous avez une configuration de contrat d'applications payées iOS qui se trouve dans la section «Contrats, taxe et opérations bancaires» de iTunes connect. Tout d'abord, vous devez cliquer sur le bouton de demande, puis sur les 3 boutons Configurer (informations de contact, informations bancaires, informations fiscales).

24voto

Rhythmic Fistman Points 7612

En fait, je pense que vous devez soumettre le binaire pour que cela fonctionne.

Vous pouvez définir la date de sortie dans un avenir lointain.

20voto

alpere Points 384

Vérifiez s'il existe des identifiants de produit non valides.

 - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {

for (NSString *invalidProductId in response.invalidProductIdentifiers)
    {
        NSLog(@"Invalid product id: %@" , invalidProductId);
    }
}
 

S'il existe des identifiants de produit non valides, visitez http://troybrant.net/blog/2010/01/invalid-product-ids/

C'est une liste de contrôle très complète pour ce problème.

10voto

dcRay Points 41

Vérifiez si votre identifiant d’ensemble (par exemple, com.company.appname) dans XCode correspond à celui d’iTunes Connect.

Vous n'avez pas besoin de soumettre le binaire pour que cela fonctionne.

6voto

haddock Points 41

Supprimez simplement l'application sur votre appareil et redémarrez-la à partir de XCode. Cela a résolu le problème pour moi.

Plus besoin de télécharger le fichier binaire, ni d'attendre des heures après la création de l'achat intégré dans iTunes Connect.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X