为当前用户获取或模拟NSLocale

时间:2013-01-23 13:02:06

标签: ios objective-c

我希望从几家iTunes商店中使用我的应用程序。我读了NSLocale Class Reference,他们正在谈论“当前用户”。那么,谁是“当前用户”?是下载app的用户吗?

1)是否可以根据我的应用程序下载的当前appleID国家或iTunes商店所在国家/地区获取NSLocale?

2)是否可以模拟NSLocale来测试我的应用程序?

2 个答案:

答案 0 :(得分:1)

在iOS中,没有"当前用户"。对"当前用户"的引用NSLocale文档中的内容可能是OS X文档的暂停。

在iOS中,运行“设置”应用并转到“常规”,然后转到“国际”。 "地区格式"和#34;语言"设置定义了您在iOS中获取[NSLocale currentLocale]的内容。

在iOS中,第三方应用无法获取任何类型的appleID或有关特定iTunes商店的信息。

直接回答你的两个问题:

1)不,您无权访问此信息

2)是,运行“设置”应用并更改“语言和/或区域格式”设置。这会影响您在应用中获得的NSLocale

答案 1 :(得分:1)

Mates,我找到了获得用户(Apple ID,iTunes商店)区域设置的解决方案!您可以从SKProduct获取区域设置。

if([SKPaymentQueue canMakePayments])
{
   [self requestProductData];
}

#pragma mark -
#pragma mark In-App Purchase Delegate Methods

- (void)requestProductData
{
    NSLog(@"IN-APP:requestProductData");
    SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:<your in-app identifier>]];
    request.delegate = self;
    [request start];
}

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
    NSArray *myProduct = [[NSArray alloc]initWithArray:response.products];
    if ([myProduct count]>0)
    {
        SKProduct *product = [myProduct objectAtIndex:0];
        NSLog(@"Price: %.2f",product.price.floatValue);
        NSLog(@"Price Locale: %@",product.priceLocale.localeIdentifier);
        NSLog(@"Product Identifier: %@",product.productIdentifier);
        NSLog(@"IN-APP:array count: %i", [myProduct count]);
        [request autorelease];
    }
    [myProduct release];
    myProduct = nil;
}