40 votes

Comment accéder au prix d'un produit dans SKPayment?

Je vais avoir un achat intégré pour une application iPhone.

Je souhaite afficher le prix dans la devise locale de l'utilisateur dans un UILabel. Pour cela, j'ai besoin du prix et de la devise dans une variable.

Comment puis-je obtenir le prix avec la devise en utilisant SKPayment? (Si SKPayment est correct pour cette utilisation.)

J'instancie le produit en utilisant:

 SKPayment *payment = [SKPayment paymentWithProductIdentifier:@"Identifier"];
 

Merci à tous pour vos commentaires!

120voto

gid Points 68

Il y a un problème avec seulement l'aide de NSLocaleCurrencySymbol + prix.stringValue: il ne gère pas les particularités des différentes locales, par exemple. si ils ont mis le symbole de la devise à l'avant ou pas. La norvège, le Danemark, la Suède et la Suisse, tous mettent leur devise, par exemple. 17.00 Kr. Aussi, la plupart(?) Les pays européens utilisent ',' au lieu de '.' pour les décimales, par exemple. "2,99 €" plutôt que "de 2,99€".

Un meilleur plan est d'utiliser NSNumberFormatter. Le "priceLocale" que le SKProduct retourné, comme Ed l'a démontré, est la clé. Il donne NSNumberFormatter l'intelligence de format un prix correctement.

Vous pouvez également faire cela beaucoup plus facile par l'ajout d'une nouvelle propriété à SKProduct à l'aide d'un Objectif-C catégorie. Ajouter les deux fichiers suivants à votre projet:


SKProduct+priceAsString.h:

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

@interface SKProduct (priceAsString)
@property (nonatomic, readonly) NSString *priceAsString;
@end

SKProduct+priceAsString.m:

#import "SKProduct+priceAsString.h"

@implementation SKProduct (priceAsString)

- (NSString *) priceAsString
{
  NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
  [formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
  [formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
  [formatter setLocale:[self priceLocale]];

  NSString *str = [formatter stringFromNumber:[self price]];
  [formatter release];
  return str;
}

@end

Ensuite, #import "SKProduct+priceAsString.h" dans votre code, et vous devez simplement être en mesure d'utiliser product.priceAsString dans le code.

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