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

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


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 StoreKitextension 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 StoreKitextension SKProduct {    var localizedPrice: String {        let formatter = NumberFormatter()        formatter.numberStyle = .currency        formatter.locale = priceLocale        return formatter.string(from: price)!    }}


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), ...