SKProduct价格因应用内购买确认而异

时间:2015-01-12 18:28:29

标签: ios in-app-purchase app-store storekit

我对IAP(沙盒)有一些奇怪的行为。起初我以为我犯了一个错误,但后来我用IAP加载了另一个项目(见图片),它显示了相同的行为。在我的应用程序中,我提供购买升级的可能性。我用户按下“购买”按钮,会弹出一个警告视图,询问用户是否想要以1,99欧元购买升级版。如果用户想要这样,则开始购买过程并弹出另一个警报视图,这是对购买的确认。但这个确认显示另一个价格(€2,34)。有谁知道为什么会这样?

提前致谢!

First alertview Second "confirmation" alertview

1 个答案:

答案 0 :(得分:0)

第二个弹出窗口中的信息是正确的。而你最初显示的弹出窗口有一些无效的信息。价格1.99实际上是美元价格。并且''符号必须由您在字符串中连接。

这是因为两个原因:

  1. 当设备没有登录Apple Id时(针对应用内购买)。因此,SKProduct price属性的价格为美元。
  2. 当设备使用属于其他国家/地区用户的Apple ID登录时。 SKProduct price的{​​{1}}财产将具有该国家/地区的价格。
  3. 您可以格式化适用于每个国家/地区的字符串。这是一个代码片段,可以为您创建这样的字符串。

    public extension SKProduct {
    
        public var localizedPrice: String? {
            let numberFormatter = NumberFormatter()
            numberFormatter.locale = self.priceLocale
            numberFormatter.numberStyle = .currency
            return numberFormatter.string(from: self.price)
        }
    }
    

    您现在可以在localizedPrice对象上使用SKProduct属性而无需自己编写。