以多种货币动态显示应用内购买的价格

Posted

技术标签:

【中文标题】以多种货币动态显示应用内购买的价格【英文标题】:dynamically displaying prices of in app purchases in multiple currencies 【发布时间】:2015-09-12 11:12:18 【问题描述】:

我正在尝试以多种货币显示应用内购买的价格。 用户可以一次选择 1 个项目、2 个项目或 3 个项目。价格在运行时自行更新(例如,用户选择一项,而不是选择 2),以便用户可以看到它正在更新。如果价格仅以美元显示,这很容易实现。当添加欧元或英镑时,事情开始变得混乱。如何以多种货币动态显示 IAP 价格?

【问题讨论】:

【参考方案1】:

这样的东西应该适合你。以下代码打印本地化的标题、货币代码和价格。

    let product = ... //your SKProduct
    if let currencyCode = product.priceLocale.objectForKey(NSLocaleCurrencyCode) as? String 
        print(product.localizedTitle + " : " + currencyCode + " \(product.price)")
    

【讨论】:

感谢您的光临。我试过了,但我得到了一个错误。我用它编辑了我的问题。 试试objectForKey: 而不是valueForKey: 好吧,那行得通。调试器会抛出“myLocalizedTitle : EUR 0.99”,这很好。是否可以将“EUR”字符串更改为字符€? NSLocaleCurrencyCode 替换为NSLocaleCurrencySymbol【参考方案2】:

这是我使用的功能。当您在世界某处不受支持的商店中时,似乎SKProduct 的某些属性未填充。

internal func getPrice(#priceLocale: NSLocale!, price: NSDecimalNumber, count: Int) -> String? 
    let formatter = NSNumberFormatter()
    formatter.formatterBehavior = NSNumberFormatterBehavior.Behavior10_4
    formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
    formatter.locale = priceLocale
    return formatter.stringFromNumber(price * count)

这是我使用的函数(实际上是extension SKProduct中的一个属性) 如果格式化countprice 出现问题,它将返回nil

【讨论】:

以上是关于以多种货币动态显示应用内购买的价格的主要内容,如果未能解决你的问题,请参考以下文章

Play 商店未在付款窗口中显示当地货币

如何在我的应用中以用户的本地货币显示 android 应用价格?

亚马逊应用内购买 API 中商品的多种价格选项

如何显示将以积分形式进行的购买的实际价格?

Xcode 12 应用内购买仅以美元显示

如何在应用内购买功能中以编程方式更改产品价格?