LoginSignup
3
3

More than 1 year has passed since last update.

【SwiftUI】StoreKit2で価格表示を通貨によって切り替える

Posted at

はじめに

現在作成しているアプリにアプリ内課金を導入していて、通貨によって表示を出しわけする方法が見つからなかったので記録しておきます。

以下の記事を参考に実装をしています。

やりかた

ContentView
import SwiftUI

struct ContentView: View {
    @StateObject var viewModel = ViewModel()
    var body: some View {
        VStack {
            let price = viewModel.product?.price ?? 0
            let priceFormatStyle = viewModel.product?.priceFormatStyle ?? Decimal.FormatStyle.Currency(code: "JPY")
            Text(price, format: priceFormatStyle)
        }
        .task {
            guard let product = try? await viewModel.fetchProducts("ここにProductIDを入力する").first else { return }
            viewModel.product = product
        }
    }
}
ViewModel
import StoreKit

final class ViewModel: ObservableObject {
    @Published var product: Product?

    func fetchProducts(_ productId: String) async throws -> [Product] {
        let products = try await Product.products(for: [productId])
        return products
    }
}

完成

AppStoreの言語設定によって表示が変わります(たぶん)

私は以下のようにSandboxテスターで2アカウント作成して、アカウントを切り替えることによって表示言語が切り替わることを確認しました。
スクリーンショット 2023-02-19 19.57.53.jpg

日本 アメリカ
スクリーンショット 2023-02-19 19.48.32.jpg スクリーンショット 2023-02-19 19.59.58.jpg

おわり

リリース前に課金周りは入念に確認しておきたいです。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3