Swift IAP 本地化价格

标签 swift ios8 in-app-purchase

我正在尝试通过标签将本地化价格添加到游戏的商店部分。我正在努力让它发挥作用。

这是购买位代码的一部分,非常标准。

我有一个包含所有产品标识符的枚举。

enum ProductID: String {
   case product1
   case product2
}

以及标准付款代码。

func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) {
println("add payment")

    for transaction in transactions {

     switch transaction.transactionState {

    case .purchased:
        print("buy, ok unlock iap here")
        print(p.productIdentifier)

        let productIdentifier = transaction.payment.productIdentifier

        switch productIdentifier {
        case ProductID.product1.rawValue:
            print("Product 1 bought")
            //do something
        case ProductID.product2.rawValue:
           print("Product 2 bought")
           //do something
         default:
             print("IAP not setup")
     }
 }  

我使用以下扩展来获取本地化价格,同样是漂亮的样板

extension SKProduct {

    var localizedPrice: String {
        let formatter = NSNumberFormatter() 
        formatter.numberStyle = .CurrencyStyle
        formatter.locale = self.priceLocale
        return formatter.stringFromNumber(self.price) ?? "\(price)"
    }
}

因此,在产品按钮下方的价格标签中,我如何添加每个产品的本地化价格

priceProduct1Label.text = "\(?.localizedPrice)"
priceProduct2Label.text = "\(?.localizedPrice)"

我基本上应该为问号输入什么?我读的视频和教程要么没有告诉你,要么他们没有对产品使用 switch 语句。 提前非常感谢您的回复

最佳答案

我对上面 crashoverride777 的答案做了一个细微的变化,而不是一个标签,而是一个按钮,不仅从 iTunes Connect 中提取本地化价格,还绘制其他内容 - localizedTitle - 组成按钮标题:

    func loadBuy00ButtonTitle() {
    for product in productArray {
        let prodID = product.productIdentifier
        if(prodID == "com.YourCompanyNameGoesHere.YourAppNameGoesHere.buy00Button") {
            let prod = product
            buy00Button.setTitle("Buy \(prod.localizedTitle): \(prod.localizedPrice())", for: .normal)
        }
    }
}

我在美国,因此我的按钮标题类似于:“购买 100 个硬币:0.99 美元” - 对于该产品(购买),“100 个硬币”是本地化标题,“0.99 美元”是本地化价格。

再次,有一些细微的变化,我也使用他提供的相同扩展名(在他的问题中),我将其放在一个单独的 Swift 文件中:

import StoreKit

extension SKProduct {

    func localizedPrice() -> String {
        let formatter = NumberFormatter()
        formatter.numberStyle = .currency
        formatter.locale = self.priceLocale
        return formatter.string(from: self.price)!
    }

}

Ben Dodson's SKProduct localized price extension in Swift

关于Swift IAP 本地化价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30686514/

相关文章:

objective-c - 编程更改界面方向,但键盘方向与 iOS 8 上的状态栏不同

ios - 在应用内购买 iOS 中恢复交易

ios - 收据验证失败时最好的方法是什么?

ios - 使用 IOS 应用程序进行应用内购买

Swift UIAlertController 每行触发一次选择编辑的文本字段

带有 Void 的 Swift 泛型类型无法调用没有参数的方法

ios - 如何在 swift 中使用 performSelectorInBackground?

ios - Swift 将 sizeof 与 Int32 数组一起使用

ios - 如何在SwiftUI中使用Core Text

Swift 从 WebView 调用电话