我正在使用Xcode v7.2和Obj-c。我正在向现有的iOS应用添加不同的语言。主要问题是SKProduct localizedTitle(iTC上的显示名称)总是以英语返回。 我可以显示正确本地化和格式化的价格。我已经在SO上准备了许多类似的问题,并尝试了其解决方案,但它似乎对我不起作用(例如:thisthis)。

所需结果:

  • 向用户显示3个按钮;每个按钮都有不同的标题和价格。
  • 通过仅在iTC中进行更新来动态更改IAP的显示名称和价格(因此,我不需要每次更改都无需更新代码)。
  • 由于#2,我无法在按钮上硬编码IAP名称或价格。
  • 从iTC提取本地化的标题(在iTC上显示名称)和价格,以用作按钮上的文本标签。

  • 这是我已经设置的:
  • 在iTC上创建了测试用户,并为他们分配了不同的商店:
    ios - SKProduct本地化标题始终为英文-LMLPHP
  • 在iTC上设置IAP,并添加了语言和显示名称:
    ios - SKProduct本地化标题始终为英文-LMLPHP
  • 代码从iTC抢购SKProduct本地化标题和价格
    [[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];
    
            }
    
        }
    
  • 创建新的Xcode方案,以便将测试设备语言位置地区设置为所需的国家
  • 在Xcode模拟器上退出App Store(来自设置)。在模拟器中运行测试时,最初会以正确的语言查看我的应用,但按钮上的文本为英文。这是因为我尚未更改App Store的位置。我点击IAP购买按钮,它提示我登录。
  • 我使用该国家的测试用户登录。我停止应用程序,然后再次运行。

  • 结果:
    我正确地看到了该国家/地区的IAP价格,但按钮的标题未正确定位。该按钮的标题仍为英文。我设置的每种语言都会发生这种情况。

    有人可以在这里发现我在做什么错吗?我是否错误地认为SKProduct.localizedTitle不返回该语言的iTC显示名称(App Store)?任何帮助,将不胜感激,谢谢。

    最佳答案

    基于
    In-App Purchase FAQ

    08-27 07:20