1

現在アクティブ化されている iTunes ストアの国コードを取得する必要があります。現在のロケールの取得について読みましたが、これはあまりスマートなソリューションではありません。ユーザーは 1 つのロケールでもまったく異なる iTunes アカウントを持つことができるからです。解決策は合法である必要はありません。リンゴの拒否はここでは問題ではありません。プライベート フレームワークを使用して、このシナリオの解決策を見つけた人はいますか?

4

3 に答える 3

0

このコードでStorefront IDを取得できます。プライベート API に依存しているため、本番コードでは使用しないでください。

NSError *error = nil;
BOOL loaded = [[NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/iTunesStore.framework"] loadAndReturnError:&error];
if (loaded) {
    NSString *localStoreFrontID = nil;
    @try {
        localStoreFrontID = [NSClassFromString(@"ISClient") valueForKeyPath:@"currentClient.localStoreFrontID"];
    }
    @catch (NSException *exception) {
        NSLog(@"%@", exception);
    }

    NSLog(@"localStoreFrontID: %@", localStoreFrontID);
}
else {
    NSLog(@"Error: %@", error);
}

iOS 5.1.1 では、これが印刷さlocalStoreFrontID: 143459-2,2れました。つまり、Swiss store です。接尾辞が何を-2,2意味するのかわかりませんが、おそらく言語に関するものです。これは iOS 6 ではテストしていません。

[設定] → [ストア] でアカウントからサインアウトした後でも機能することに注意してください。

于 2013-02-04T00:59:56.823 に答える
0

これを使用して「CFLocaleGetValue」を呼び出すことができます
NSString *aCountry=[getCurrentItunesStoreCountryFromProudct:myProudct];

-(NSString *)getCurrentItunesStoreCountryFromProudct:(SKProduct *)aProudct
{
 NSLocale* storeLocale = aProudct.priceLocale;
 NSString *storeCountry = (NSString*)CFLocaleGetValue((CFLocaleRef)storeLocale,   kCFLocaleCountryCode);
return storeCountry;
}
于 2013-01-29T20:49:22.403 に答える