Страницы

Поиск по вопросам

среда, 11 декабря 2019 г.

swift: in-app purchase

#ios #swift #button


Нужно на кнопке показать стоимость встроенной покупки в валюте страны покупателя. 

Для России мой текст выглядит так: 299.00 RUB 


Как посмотреть как выглядит покупка для США?
Как вместо RUB поставить знак ₽ или вместо USD знак $? 


Мой код:

func productsRequest (_ request: SKProductsRequest, didReceive response: SKProductsResponse) {

    let count : Int = response.products.count
    if (count>0) {
        let validProduct: SKProduct = response.products[0] as SKProduct
        if (validProduct.productIdentifier == self.product_id) {
            print(validProduct.localizedTitle)
            print(validProduct.localizedDescription)
            print(validProduct.price)
            buyProduct(product: validProduct);

            let numberFormatter = NumberFormatter()
            numberFormatter.formatterBehavior = .behavior10_4
            numberFormatter.numberStyle = .currency
            numberFormatter.locale = validProduct.priceLocale
            let price = numberFormatter.string(from: validProduct.price)
            self.buyButton.setTitle(price, for: .normal)
            NSLog("The price of this product is \(validProduct.price)")
        } else {
            print(validProduct.productIdentifier)
        }
    } else {
        print("nothing")
    }
}


UPD

func buyProduct(product: SKProduct){
    print("Sending the Payment Request to Apple");
    let payment = SKPayment(product: product)
    let price = localizedPriceForProduct(product)
    buyButton.setTitle("\(price)", for: .normal)
    SKPaymentQueue.default().add(payment);

}

func localizedPriceForProduct(_ product:SKProduct) -> String {
    let priceFormatter = NumberFormatter()
    priceFormatter.formatterBehavior = NumberFormatter.Behavior.behavior10_4

    priceFormatter.numberStyle = NumberFormatter.Style.currencyISOCode
    //эта строка отвечает за формат написания (USD или $ использовать .currency)

    priceFormatter.locale = product.priceLocale
    return priceFormatter.string(from: product.price)!
}

    


Ответы

Ответ 1



func localizedPriceForProduct(_ product:SKProduct) -> String { let priceFormatter = NumberFormatter() priceFormatter.formatterBehavior = NumberFormatter.Behavior.behavior10_4 priceFormatter.numberStyle = NumberFormatter.Style.currencyISOCode //эта строка отвечает за формат написания (USD или $ использовать .currency) priceFormatter.locale = product.priceLocale return priceFormatter.string(from: product.price)! } Вызовите функцию: var product = SKProduct() ... let price = localizedPriceForProduct(product)

Ответ 2



1) посмотреть какой банк предоставляет API для перевода валют по текущему курсу. И использовать этот API 2) использовать replacingOccurrences let aString = "100 USD!" let newString = aString.replacingOccurrences(of: "USD", with: "$", options: .literal, range: nil)

Комментариев нет:

Отправить комментарий