iOS应用内购买订阅显示区域设置的货币不正确

时间:2019-03-19 21:26:20

标签: ios swift in-app-purchase

我正在使用SwiftyStoreKit处理我的应用中的IAP。问题是,IAP产品的价格将始终以美元货币显示,像这样:9.99美元。无论在哪个国家/地区,人们都对该应用程序进行测试。

我正在尝试在模拟器中更改语言环境,例如this(在方案编辑窗口中)。当Locale.current显示更改的语言环境时,使用自定义位置也不会给我其他货币。

同时尝试:

  1. SwiftyStoreKit的product.localizedPrice
  2. 直接来自产品对象(localizedPrice实际上是SKProduct的扩展)

    let numberFormatter = NumberFormatter()
    numberFormatter.numberStyle = .currency
    numberFormatter.locale = product.priceLocale
    let price = numberFormatter.string(from: product.price)
    

    在丹麦或日本的价格仍为9.99美元

我在项目属性中缺少某些不可思议的语言环境设置吗?

  • 沙盒或生产,不会有所作为
  • IAP弹出窗口出现时,货币在此处正确,但在应用程序本身中不正确
  • 在项目中使用大量其他Pod,例如Sentry和Beacon

2 个答案:

答案 0 :(得分:2)

自iOS 12开始,沙盒帐户的处理方式有所不同。当您从Xcode运行开发版本时,该应用会在您开始购买时提示输入假的沙盒AppleID。首次登录后,该应用将知道正确的语言环境,因此可以显示适合您的应用内购买的价格。在此之前,它将始终以美元显示价格。

来源:https://developer.apple.com/documentation/storekit/in-app_purchase/testing_in-app_purchases_with_sandbox

答案 1 :(得分:0)

价格和价格区域设置由购买帐户的商店关联而不是设备区域设置决定。

即拥有与美国商店相关联的帐户的人总是会看到$ US,因为这是他们的收费方式,无论他们身在何处或设备所在的地区。

要测试价格的国际化,您将需要使用具有适当App Store地区的沙盒测试仪。

如果您在使用沙盒测试仪登录之前运行该应用程序,则默认情况下您会看到$ US的价格。另外,请注意,您不能真正在模拟器中测试IAP。您需要使用真实的设备。

相关问题