2010-11-17 3 views
1

Merci à vous tous!Aide ... didReceiveResponse n'est pas appelé

Ici encore, je trouve un problème avec l'implémentation du framework de stockage. Lorsque j'exécute le code sur mon périphérique, il envoie la demande mais le didReceiveResponse ne s'appelle pas.am je fais mal dans mon code? S'il vous plaît me guider jusqu'à ... Merci pour toute aide

- (void)viewDidLoad 
{ 
    NSLog(@"View is loaded"); 

    [self requestProductData]; 

    if ([SKPaymentQueue canMakePayments]) 
    { 
     NSLog(@"can make payments"); 

    } 
    else 
    { 
     NSLog(@"cannot make payments"); 
    } 

    [super viewDidLoad]; 
} 

- (void) requestProductData 
{ 
    NSSet *productIDs = [NSSet setWithObjects:@"com.mycompany.inapppurchasetesting.productid", nil]; 

    SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:productIDs]; 

    request.delegate = self; 

    NSLog(@"Requesting"); 

    [request start]; 
} 

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response 
{ 
    NSArray *myProduct = response.products; 

    NSArray *myInvalidProducts = response.invalidProductIdentifiers; 

    NSLog(@"Did recieve response"); 

    NSLog(@"Response count is %d",response.products.count); 

    NSLog(@"Invalid response count is %d",response.invalidProductIdentifiers.count); 

    for (int i = 0; i<myProduct.count; i++) 
    { 
     NSLog(@"t:%@",[[myProduct objectAtIndex:i] localizedTitle]); 
    } 

    for(int i = 0; i < myInvalidProducts.count; i++) 
    { 
     NSLog(@"Invalid products:%@",[myInvalidProducts objectAtIndex:i]); 
    } 

    // populate UI 
    [request autorelease]; 
} 

Répondre

0

Vous semblez avoir quelques bugs de gestion de la mémoire dans ce code, mais je ne vois pas de problème avec ce qui empêcherait le délégué d'être appelé. Si je me souviens bien, StoreKit peut ne pas fonctionner complètement sur le simulateur. Avez-vous essayé cela sur l'appareil?

En outre, par this SO question, vous pouvez ajouter un rappel pour les erreurs pour aider à diagnostiquer votre problème, comme ceci:

- (void) request:(SKRequest *)request didFailWithError:(NSError *)error { 
    NSString *errorMessage = [error localizedDescription]; 
    [self notifyUserInterfaceOfError:errorMessage]; 
}