Xcode v7.2 と Obj-c を使用しています。既存の iOS アプリに別の言語を追加しています。主な問題は、SKProduct の localizedTitle (iTC での表示名) が常に英語で表示されることです。 適切にローカライズおよびフォーマットされた価格を表示できます。私はSOで多くの同様の問題を用意しており、それらの解決策を試しましたが、うまくいかないようです(例: thisおよびthis )。
望ましい結果:
- ユーザーに 3 つのボタンを表示します。ボタンごとにタイトルと価格が異なります。
- IAP の表示名と価格を iTC のみで更新することで動的に変更します (変更が必要になるたびにコードを更新する必要はありません)。
- #2 のため、ボタンに IAP の名前や価格をハードコードすることはできません。
- ローカライズされたタイトル (iTC の表示名) と価格を iTC から取得して、ボタンのテキスト ラベルとして使用します。
ここに私がすでにセットアップしたものがあります:
- iTC でテスト ユーザーを作成し、さまざまなストアを割り当てました。
- iTC で IAP をセットアップし、言語と表示名を追加します。
iTC から SKProduct localizedTitle と price を取得するコード
[[FirstDrawIAPHelper sharedInstance] requestProductsWithCompletionHandler:^(BOOL success, NSArray *products) { if (success) { storeProducts = products; SKProduct *product = (SKProduct *)storeProducts; //Format price priceFormatter = [[NSNumberFormatter alloc] init]; [priceFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4]; [priceFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; //Iterate thru the buttons using tipButton Outlet Collection for (int i = 0; i < [self.tipButton count]; i++) { UIButton *button = [[UIButton alloc] init]; button = self.tipButton[i]; //product = storeProducts[i]; product = products[i]; //Set the price locale [priceFormatter setLocale:product.priceLocale]; //Localize the button title and append the price NSString *btnTxt = [product.localizedTitle stringByAppendingString:@" "]; NSString *price = [priceFormatter stringFromNumber:product.price]; NSString *newBtn = [btnTxt stringByAppendingString:price]; NSLog(@"\nID: %@, Price: %@, Button: %@",[product localizedTitle], price, btnTxt); //Set button title [button setTitle:newBtn forState:UIControlStateNormal]; } }
テスト デバイスのLanguage、Location、およびRegionが目的の国に設定されるように、新しい Xcode スキームを作成します。
- Xcode シミュレーターで App Store からサインアウトします ( [設定]から)。シミュレーターでテストを実行すると、最初はアプリが正しい言語で表示されますが、ボタンのテキストは英語です。これは、App Store の場所をまだ変更していないためです。IAP 購入ボタンをタップすると、ログインするよう求められます。
- その国のテスト ユーザーを使用してログインします。アプリを停止してから、もう一度実行します。
結果: その国の IAP 価格は正しく表示されますが、ボタンのタイトルが正しくローカライズされていません。ボタンのタイトルは英語のままです。これは、セットアップした各言語で発生します。
ここで私が間違っていることを誰かが見つけることができますか? SKProduct.localizedTitle がその言語 (App Store) の iTC 表示名を返さないという間違った仮定がありますか? どんな助けでも感謝します、ありがとう。