blog.nambo.jp

iOSのアプリ内課金(In App Purchase)でアイテムの価格を取得する方法

先日、日本のApp Storeで価格の変更がありました。
これは、為替変動を反映させる処置で、これまでも何度が改定されてきました。

アプリ内課金のアイテム料金をハードコードしてしまっているアプリをたまに見かけますが、今回のような価格改定時に困ってしまうので、決してハードコードしてはいけません。
備忘録の意味も込めて、価格の取得方法をメモしておきます。

価格は SKProduct#price で取得できますが、表示する際はローカライズが必要なので注意しましょう。

1
2
3
4
5
6
7
8
9
10
11
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
    for (SKProduct *product in response.products) {
        NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
        [numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
        [numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
        [numberFormatter setLocale:product.priceLocale];
        NSString *localizedPrice = [numberFormatter stringFromNumber:product.price];

        NSLog(@"price : %@", localizedPrice);
    }
}

詳しくは公式ドキュメントをご覧ください。
SKProduct Class Reference