假设我有一个庞大的应用程序购买产品目录,以不同的价格层级设置。产品将在多个地区销售,因此需要以正确的货币显示价格。
有没有办法我可以(从iTunes)在给定国家(当然是用户iTunes帐户国家)给定价格等级的货币价值?
目前,我能看到的唯一方法是向苹果发送产品信息请求,以获取给定价格层的产品第一次出现,然后存储此结果。
作为一个附带问题:我知道我可以使用我的服务器返回货币/等级组合的价格,但我担心 Apple 调整应用内价格的可能性。有没有可能发生这种情况?
extension SKProduct {
var localizedPriceString: String? {
let formatter = NumberFormatter()
formatter.formatterBehavior = .behavior10_4
formatter.numberStyle = .currency
formatter.locale = priceLocale
return formatter.string(from: price)
}
}
检查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
对象很昂贵(在时间和资源方面),因此如果您希望经常使用它,请考虑在某处缓存一个。