【问题标题】:InApp Purchase product priceInApp 购买产品价格
【发布时间】:2019-11-26 13:06:10
【问题描述】:

我正在尝试在 InApp 购买中读取产品的价格。我想要美元价格,但我收到的是当地货币 INR。我想以美元显示每个国家/地区的价格。

let product = SKProduct()// my product object
 let price = product.price // receives always in INR

感谢任何帮助

【问题讨论】:

标签: ios swift in-app-purchase


【解决方案1】:

App 购买价格取决于您从 App Store 帐户登录的区域设置。你可以检查语言环境

    let locale = Locale.current
    let currencySymbol = locale.currencySymbol!
    let currencyCode = locale.currencyCode!

您可以将此委托方法检查的产品价格

//SKProductsRequestDelegate

 public func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
    print("Loaded list of products...")
    let products = response.products
    productsRequestCompletionHandler?(true, products)
    clearRequestAndHandler()

    for p in products {
        print("Found product: \(p.productIdentifier) \(p.localizedTitle) \(p.price.floatValue)")
        print("product price --%@",p.price)
    }


}

【讨论】:

  • 即使我从其他国家/地区访问,我如何始终以美元获取价格金额?
  • @user6788419 App Store 管理它取决于您登录的国家/地区。检查您的产品价格和当前区域设置以获取上述代码
  • 我认为我的要求是不可能的
【解决方案2】:

documentation 中所述,您可以使用 NumberFormmatter 格式化价格,您还可以在其中指定您的货币。

请注意,您应该始终使用用户区域设置来格式化 SKProduct 提供的价格。您不应将价格格式化为另一种货币,因为 SKProduct 始终返回绑定到当前语言环境的本地化价格。 (例如法国 App Store 的法国欧元价格)

尽管如此,这里有一个示例,说明如何仅通过更改货币符号来格式化价格:

let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .currency
numberFormatter.currencyCode = "USD"
let priceInUSD = numberFormatter.string(from: product.price)

【讨论】:

  • 我已经尝试过了。它只会改变货币的符号。与货币汇率相关的金额没有任何变化。
  • 没有内置库可以使用 Apple 当前的定价矩阵来转换价格...由于 SKProduct 始终返回本地化价格,您不应尝试将其转换为另一种货币...始终显示适合用户语言环境的货币。
  • 谢谢,我会这样做的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-31
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多