J'ai un comportement étrange avec IAP (Sandbox). Au début, je pensais avoir fait une erreur, mais j'ai ensuite chargé un autre projet (voir images) avec IAP et cela montre le même comportement. Dans mon application, je donne la possibilité d'acheter une mise à niveau. Si l'utilisateur appuie sur le bouton "Acheter", une vue d'alerte apparaît qui demande si l'utilisateur souhaite acheter la mise à niveau pour 1,99 €. Si l'utilisateur le souhaite, le processus d'achat démarre et une autre vue d'alerte apparaît, qui est une confirmation de l'achat. Mais cette confirmation montre un autre prix (2,34 €). Quelqu'un at-il une idée de pourquoi c'est?
Merci d'avance!
Réponses:
0 pour la réponse № 1Les informations de la deuxième fenêtre contextuelle sont correctesun. Et la fenêtre contextuelle que vous affichez au début contient des informations un peu invalides. Le prix 1,99 est en fait le prix en USD. Et le symbole "€" doit être concaténé par vous dans la chaîne.
Cela se produit pour deux raisons:
- Lorsque l'appareil n'a pas d'identifiant Apple connecté (pour les achats intégrés). Donc
SKProduct
"sprice
la propriété aura le prix en USD. - Lorsque l'appareil est connecté avec un identifiant Apple appartenant à un utilisateur d'un autre pays que le vôtre.
SKProduct
"sprice
la propriété aura le prix de ce pays.
Vous pouvez formater la chaîne qui fonctionne pour chaque pays. Voici un extrait de code qui créera une telle chaîne pour vous.
public extension SKProduct {
public var localizedPrice: String? {
let numberFormatter = NumberFormatter()
numberFormatter.locale = self.priceLocale
numberFormatter.numberStyle = .currency
return numberFormatter.string(from: self.price)
}
}
Vous pouvez utiliser localizedPrice
propriété maintenant SKProduct
objet sans vous écrire €.