8

Xcode v7.2 と Obj-c を使用しています。既存の iOS アプリに別の言語を追加しています。主な問題は、SKProduct の localizedTitle (iTC での表示名) が常に英語で表示されることです。 適切にローカライズおよびフォーマットされた価格を表示できます。私はSOで多くの同様の問題を用意しており、それらの解決策を試しましたが、うまくいかないようです(例: thisおよびthis )。

望ましい結果:

  1. ユーザーに 3 つのボタンを表示します。ボタンごとにタイトルと価格が異なります。
  2. IAP の表示名と価格を iTC のみで更新することで動的に変更します (変更が必要になるたびにコードを更新する必要はありません)。
  3. #2 のため、ボタンに IAP の名前や価格をハードコードすることはできません。
  4. ローカライズされたタイトル (iTC の表示名) と価格を iTC から取得して、ボタンのテキスト ラベルとして使用します。

ここに私がすでにセットアップしたものがあります:

  • iTC でテスト ユーザーを作成し、さまざまなストアを割り当てました。 iTC テスト ユーザーとストア
  • iTC で IAP をセットアップし、言語と表示名を追加します。 言語を含む 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];
    
            }
    
        }
    
  • テスト デバイスのLanguageLocation、およびRegionが目的の国に設定されるように、新しい Xcode スキームを作成します。

  • Xcode シミュレーターで App Store からサインアウトします ( [設定]から)。シミュレーターでテストを実行すると、最初はアプリが正しい言語で表示されますが、ボタンのテキストは英語です。これは、App Store の場所をまだ変更していないためです。IAP 購入ボタンをタップすると、ログインするよう求められます。
  • その国のテスト ユーザーを使用してログインします。アプリを停止してから、もう一度実行します。

結果: その国の IAP 価格は正しく表示されますが、ボタンのタイトルが正しくローカライズされていません。ボタンのタイトルは英語のままです。これは、セットアップした各言語で発生します。

ここで私が間違っていることを誰かが見つけることができますか? SKProduct.localizedTitle がその言語 (App Store) の iTC 表示名を返さないという間違った仮定がありますか? どんな助けでも感謝します、ありがとう。

4

1 に答える 1