2011-11-07 8 views
0

Je viens d'ajouter un achat intégré à mon application. Lorsqu'un utilisateur clique sur le bouton "acheter" et la transaction se termine, le bouton "acheter" est remplacé par un autre bouton pour accéder aux nouvelles fonctionnalités. Mais chaque fois que je reviens à cette page ou que je ferme et ouvre à nouveau l'application, il y a encore le bouton "achat". Comment puis-je avoir toujours le nouveau bouton si l'utilisateur a acheté le nouveau contenu? Voici mon code:In App Purchase: SKPaymentTransactionStatePurchased

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { 

    for (SKPaymentTransaction *transaction in transactions) { 

      switch (transaction.transactionState) { 

       case SKPaymentTransactionStatePurchasing: 

        break; 

       case SKPaymentTransactionStatePurchased: 

       [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 

          UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

           [button addTarget:self 

           action:@selector(myaction) 

           forControlEvents:UIControlEventTouchUpInside]; 

        [button setTitle:@"mytitle" forState:UIControlStateNormal]; 



        button.frame = CGRectMake(156.0, 248.0, 129.0, 36.0); 

        [self.view addSubview:button]; 

        break; 

       case SKPaymentTransactionStateRestored: 

        [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
         break; 

       case SKPaymentTransactionStateFailed: 

        if (transaction.error.code != SKErrorPaymentCancelled) { 

         NSLog(@"Errorr"); 

        } 

        [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 


      } 

    } 

} 

Répondre

1

Vous devriez enregistrer quelque part des informations sur le fait que l'utilisateur a acheté le contenu.

Il y a beaucoup de façons de le faire. Par exemple, vous pouvez utiliser NSUserDefaults:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
int version = [defaults integerForKey:@"db_version"];     // <- read int value from defaults 
[defaults setValue:[NSNumber numberWithInt:2] forKey:@"db_version"]; // <- set int value 
[defaults synchronize]; // <- save changes 
1

Vous devez gérer vous-même, StoreKit ne vous aidera pas à ce sujet. Par exemple, une fois votre achat effectué, sauvegardez une valeur dans les paramètres utilisateur pour vous souvenir que l'achat a déjà été effectué. Dans la méthode viewDidLoad de ViewControllers, vérifiez la présence de cette valeur et laissez-la afficher/masquer les boutons appropriés.

1

Vous devez enregistrer cet état pour les préférences de l'utilisateur. Il suffit d'ajouter quelque chose comme ça au cas SKPaymentTransactionStatePurchased:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    [prefs setBool:YES forKey:transaction.originalTransaction.payment.productIdentifier]; 
    [prefs synchronize]; 

Et après relançant votre application vous devez vérifier ce paramètre et générer le bouton approprié.

Questions connexes