【发布时间】: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
我正在尝试在 InApp 购买中读取产品的价格。我想要美元价格,但我收到的是当地货币 INR。我想以美元显示每个国家/地区的价格。
let product = SKProduct()// my product object
let price = product.price // receives always in INR
感谢任何帮助
【问题讨论】:
标签: ios swift in-app-purchase
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)
}
}
【讨论】:
如documentation 中所述,您可以使用 NumberFormmatter 格式化价格,您还可以在其中指定您的货币。
请注意,您应该始终使用用户区域设置来格式化 SKProduct 提供的价格。您不应将价格格式化为另一种货币,因为 SKProduct 始终返回绑定到当前语言环境的本地化价格。 (例如法国 App Store 的法国欧元价格)
尽管如此,这里有一个示例,说明如何仅通过更改货币符号来格式化价格:
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .currency
numberFormatter.currencyCode = "USD"
let priceInUSD = numberFormatter.string(from: product.price)
【讨论】: