假设我有一个庞大的产品目录,可以在各种价位的应用内购买。 这些产品将在多个地区销售,因此需要以正确的货币显示价格。
有没有办法可以(从itunes)请求给定国家(用户itunes帐户所在国家/地区)的特定价格等级的货币价值?
目前,我能看到的唯一方法是向Apple发送产品信息请求,以便在给定价格层首次出现产品,然后存储此结果。
作为一个侧面问题:我知道我可以使用我的服务器返回货币/等级组合的价格,但我担心苹果调整应用内价格的可能性。有可能发生这种情况吗?
答案 0 :(得分:2)
extension SKProduct {
var localizedPriceString: String? {
let formatter = NumberFormatter()
formatter.formatterBehavior = .behavior10_4
formatter.numberStyle = .currency
formatter.locale = priceLocale
return formatter.string(from: price)
}
}
答案 1 :(得分:1)
检查SKProduct处理价格属性的文档,那里有示例代码可供您使用。
五年后没有陈旧的链接代码:(轻松改编为Swift 3.0和样式):
let numberFormatter = NumberFormatter()
numberFormatter.formatterBehavior = .behavior10_4
numberFormatter.numberStyle = .currency
numberFormatter.locale = someProduct.priceLocale
let formattedString = numberFormatter.string(from: someProduct.price)
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[numberFormatter setLocale:product.priceLocale];
NSString *formattedString = [numberFormatter stringFromNumber:product.price];
最后一件事:NumberFormatter
对象价格昂贵(就时间和资源而言),所以如果您希望经常使用它,请考虑在某处缓存。