Ios SKP应用内购买确认中的产品价格不同

Ios SKP应用内购买确认中的产品价格不同,ios,in-app-purchase,app-store,storekit,Ios,In App Purchase,App Store,Storekit,我对IAP(沙盒)有一些奇怪的行为。起初我认为我犯了一个错误,但后来我用IAP加载了另一个项目(参见图片),它显示了相同的行为。在我的应用程序中,我提供了购买升级的可能性。如果用户按下“购买”按钮,会弹出一个警报视图,询问用户是否想以1,99欧元的价格购买升级。如果用户需要,采购流程将启动,并弹出另一个警报视图,这是对采购的确认。但该确认书显示了另一个价格(2,34欧元)。有人知道为什么会这样吗 提前谢谢 第二个弹出窗口中的信息是正确的。你刚开始显示的弹出窗口有点无效信息。1.99的价格实际上

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

提前谢谢


第二个弹出窗口中的信息是正确的。你刚开始显示的弹出窗口有点无效信息。1.99的价格实际上是美元价格。您必须在字符串中连接“€”符号

发生这种情况有两个原因:

  • 设备未登录Apple Id时(用于应用内购买)。因此,
    SKProduct
    价格
    物业的价格将以美元为单位
  • 当设备以属于您所在国家以外的用户的Apple ID登录时<代码>SKProduct的
    价格
    属性将具有该国家/地区的价格
  • 您可以格式化适用于每个国家/地区的字符串。下面是一个代码片段,它将为您创建这样的字符串

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

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

    您从哪里获得“为……购买此产品”的价值?您是向SKProduct索要本地化价格,还是从苹果以外的其他来源加载?我相信增加的金额是增值税的原因。@BradBrighton我使用SKProduct的price属性。我还读了林迪的文章。我不认为是增值税,因为NL为21%,这将导致2,41欧元的价格。此外,价格表显示2级的价格为1.99欧元,并说明这包括税费。。。我可以考虑的另一件事是,本地化价格所用的区域不是你想象的那样(或者苹果最近的价格变化不是你所期望的)。有趣的是,iTunes Connect协议下的当前定价矩阵(对我来说,是一个美国开发人员,但我不认为这有什么区别)似乎没有显示2.34作为任何区域的价值。也许沙箱并没有立即跟上生产定价的变化?