2011-07-11 3 views
3

Je sais qu'il a été posée: iPhone In App Purchase - response.products are still empty?In-App Purchase response.products vide

mais je suis également en train de mettre en œuvre un dans l'achat d'applications et mes response.products est vide. Ma situation:

J'ai téléchargé et rejeté mon binaire une fois.

Mais je mets le statut de retour à l'attente pour le téléchargement à nouveau. (Est-ce important?)

L'état de tous mes dans l'application des produits d'achat sont « prêts à se soumettre ».

Mon utilisateur de production est déconnecté. L'utilisateur de test n'est pas encore connecté.

-(void) requestProductData{ 
    SKProductsRequest *productRequest= [[SKProductsRequest alloc] 
           initWithProductIdentifiers:[NSSet setWithObjects: 
                  @"com.mydomain.myapp.Pack1", 
                  @"com.mydomain.myapp.Pack2", 
                  @"com.mydomain.myapp.Pack3",nil]]; 

productRequest.delegate = self; 
[productRequest start]; 
} 

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

NSArray *myProducts = response.products; 

NSLog(@"%d",[myProducts count]);//this prints 0 
for(SKProduct * product in myProducts) { 
    [products addObject:product]; 
} 
[request autorelease]; 


} 

    in my viewdidload: 


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

    /*load transaction history to see if the user already bought some packs*/ 
    [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 
    products = [[NSMutableArray alloc] init]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString * path = [documentsDirectory stringByAppendingPathComponent: @"history.plist"]; 
    self.transactionHistory = [NSMutableArray arrayWithContentsOfFile: path]; 

    if(!transactionHistory) { 
     NSMutableArray *_transactionHistory = [[NSMutableArray alloc] init]; 
     self.transactionHistory = _transactionHistory; 
     [_transactionHistory release]; 
    } 
    //some other initializations here 
    [self requestProductData]; 

for (NSString *invalidProductId in response.invalidProductIdentifiers) 
    { 
     NSLog(@"Invalid product id: %@" , invalidProductId); 
    } 
//this returns 3 of my product id's 
+0

Vide ou la réponse est «ID de produit non valide»? – malinois

+0

dans le débogueur si je regarde la réponse. il y a NSObject - isa et _internal - isa mais c'est tout. Je ne vois même pas de response.products dans le débogueur et quand je dis NSArray * myProducts = response.products; myProducts a 0 éléments – tiw

+0

Votre application est en mode Debug? – malinois

Répondre

6

Vous avez une erreur de produit non valide, donc vérifiez votre configuration avec ce sujet: Invalid Product IDs

  • Avez-vous activé achat In-App pour votre ID App?
  • Avez-vous coché Cleared for Sale pour votre produit?
  • Avez-vous soumis (et éventuellement rejeté) votre application binaire? L'ID de lot .plist de votre projet correspond-il à votre ID d'application?
  • Avez-vous généré et installé un nouveau profil d'approvisionnement pour le nouvel ID d'application?
  • Avez-vous configuré votre projet en code à l'aide de ce nouveau profil d'approvisionnement?
  • Construisez-vous pour iPhone OS 3.0 ou supérieur?
  • Utilisez-vous l'ID produit complet lorsque vous effectuez une demande SKProductRequest?
  • Avez-vous attendu plusieurs heures depuis l'ajout de votre produit à iTunes Connect?
  • Vos coordonnées bancaires sont-elles actives sur iTunes Connect?
  • Avez-vous essayé de supprimer l'application de votre appareil et de la réinstaller?
  • Votre appareil est jailbreaké? Si c'est le cas, vous devez rétablir le jailbreak pour que IAP fonctionne.
+0

dois-je soumettre mes produits pour examen pour qu'ils deviennent valables? – tiw

+0

Avez-vous lu le lien? – malinois

+0

Oui, je l'ai lu. Si vous faites référence à cette question sur cette page: "Avez-vous attendu plusieurs heures depuis l'ajout de votre produit à iTunes Connect?" Ma question est toujours valide. – tiw