3

假设我有一个庞大的应用程序购买产品目录,以不同的价格层级设置。产品将在多个地区销售,因此需要以正确的货币显示价格。

有没有办法我可以(从iTunes)在给定国家(当然是用户iTunes帐户国家)给定价格等级的货币价值?

目前,我能看到的唯一方法是向苹果发送产品信息请求,以获取给定价格层的产品第一次出现,然后存储此结果。

作为一个附带问题:我知道我可以使用我的服务器返回货币/等级组合的价格,但我担心 Apple 调整应用内价格的可能性。有没有可能发生这种情况?

4

2 回答 2

2
extension SKProduct {
    var localizedPriceString: String? {
        let formatter = NumberFormatter()
        formatter.formatterBehavior = .behavior10_4
        formatter.numberStyle = .currency
        formatter.locale = priceLocale
        return formatter.string(from: price)
    }
}
于 2017-02-02T18:30:09.550 回答
1

检查SKProduct处理价格属性的文档,那里有示例代码可以为您完成。


五年后不再陈旧的链接中的代码:(略微适应 Swift 3.0 和风格):

斯威夫特 3.0

    let numberFormatter = NumberFormatter()

    numberFormatter.formatterBehavior = .behavior10_4
    numberFormatter.numberStyle = .currency
    numberFormatter.locale = someProduct.priceLocale

    let formattedString = numberFormatter.string(from: someProduct.price)

目标 C

    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];

    [numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
    [numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    [numberFormatter setLocale:product.priceLocale];

    NSString *formattedString = [numberFormatter stringFromNumber:product.price];

最后一件事:NumberFormatter对象很昂贵(在时间和资源方面),因此如果您希望经常使用它,请考虑在某处缓存一个。

于 2012-05-16T17:07:52.423 回答