2015-10-06 1 views
2

J'ai une application payante que je pense à rendre libre avec des achats in-app. Si je fais le changement, je devrai vérifier si l'utilisateur a déjà payé l'application, puis activer les fonctionnalités payantes.Comment lire les données de reçu avec une application iOS payante existante?

Je pense que le code ci-dessous devrait faire ce dont j'ai besoin, mais je ne sais pas comment le tester. J'ai construit l'application et l'ai couru en utilisant mon profil de provisionnement de développement sur mon appareil et receitpData est vide. J'ai donc construit l'application avec un profil de provisionnement de distribution et l'ai soumis à l'app store puis j'ai téléchargé l'application en utilisant un vol d'essai mais j'ai toujours le même problème.

Comment puis-je obtenir les données de réception d'une application existante?

Dois-je activer les achats intégrés pour cette application pour obtenir ces données?

NSURL *receiptUrl = [[NSBundle mainBundle] appStoreReceiptURL]; 
NSData *receiptData = [NSData dataWithContentsOfURL:receiptUrl]; 

Répondre

0

I figured it out:

#import <StoreKit/StoreKit.h> 

Ne pas oublier d'ajouter ses délégués

<SKPaymentTransactionObserver, SKProductsRequestDelegate> 

Voici le code:

SKReceiptRefreshRequest* request = [[SKReceiptRefreshRequest alloc] initWithReceiptProperties:nil]; 
request.delegate = self; 
[request start]; 

puis:

-(void)requestDidFinish:(SKRequest*)request{ 
    if([request isKindOfClass:[SKReceiptRefreshRequest class]]){ 
     NSLog(@"YES, You purchased this app"); 
    } 
} 

- (void)request:(SKRequest*)request didFailWithError:(NSError *)error{ 
    NSLog(@"NO, you need to buy it"); 
} 
+1

Je n'ai pas encore traversé ce pont, mais je le ferai à un moment donné. Merci d'avoir posté ceci. – Adrian

+0

Pas de soucis. Merci pour le vote. –

+0

@TomKrones Bonjour. Est-ce que cette solution fonctionne pour vous à la production? Comme je le vois à l'environnement de production, je reçois un reçu pour la version payante et gratuite de mon application. Comment puis-je distinguer l'utilisateur qui a payé pour l'application et qui ne l'a pas fait? –