Price of in-app purchases shown on screen(with currency)

后端 未结 2 1324
梦谈多话
梦谈多话 2020-12-14 23:04

I want the buttons that you have to tap to buy something to show the price of that.

For example: \"5 coins €0,99\"

But if I create a UIlabel with exactly tha

相关标签:
2条回答
  • 2020-12-14 23:37

    If purchases are done via Apple App Store (using StoreKit framework) you need to get price + currency from SKProduct object (prices will vary).

    https://developer.apple.com/library/ios/documentation/StoreKit/Reference/SKProduct_Reference/

    Update

    1. you need to perform request to load available products
    var productID:NSSet = NSSet(object: “product_id_on_itunes_connect”);
    var productsRequest:SKProductsRequest = SKProductsRequest(productIdentifiers: productID);
    productsRequest.delegate = self;
    productsRequest.start();
    
    1. Request delegate will return SKProduct.
    func productsRequest (request: SKProductsRequest, didReceiveResponse response: SKProductsResponse) {
        println("got the request from Apple")
        var validProducts = response.products
        if !validProducts.isEmpty {
            var validProduct: SKProduct = response.products[0] as SKProduct
            if (validProduct.productIdentifier == self.product_id) {
                println(validProduct.localizedTitle)
                println(validProduct.localizedDescription)
                println(validProduct.price)
                buyProduct(validProduct);
            } else {
                println(validProduct.productIdentifier)
            }
        } else {
            println("nothing")
        }
    }
    
    1. SKProduct contains all needed information to display localized price, but I suggest to create SKProduct category that formats price + currency to user current locale
    import StoreKit
    
    extension SKProduct {
    
        func localizedPrice() -> String {
            let formatter = NSNumberFormatter()
            formatter.numberStyle = .CurrencyStyle
            formatter.locale = self.priceLocale
            return formatter.stringFromNumber(self.price)!
        }
    
    }
    

    Information taken from here and here.

    Swift 4

    import StoreKit
    
    extension SKProduct {
        var localizedPrice: String {
            let formatter = NumberFormatter()
            formatter.numberStyle = .currency
            formatter.locale = priceLocale
            return formatter.string(from: price)!
        }
    }
    
    0 讨论(0)
  • 2020-12-14 23:40

    You might want to to localize (internationalize) your interface and texts.

    In order to do that you'll have look how to do it for :

    • Your storyboard (you'll still handle one, but translate the texts you want in an inside file)
    • Inside your code. Trough NSLocalizedString for example : http://goo.gl/jwQ5Po (Apple), http://goo.gl/S1dCUW (NSHipster), ...
    0 讨论(0)
提交回复
热议问题