web-dev-qa-db-fra.com

Trouver le pays actuel à partir d'un appareil iPhone

Je dois obtenir le pays actuel dans les paramètres de l'iPhone. Quelqu'un peut-il me dire comment obtenir le pays actuel dans l'application iPhone.

Je dois utiliser le pays actuel pour analyser le flux RSS dans lequel je dois passer le pays actuel.

Veuillez m'aider à trouver le pays.

Merci d'avance.

49
AppAspect

Pour trouver le pays de la langue choisie par l'utilisateur:

NSLocale *currentLocale = [NSLocale currentLocale];  // get the current locale.
NSString *countryCode = [currentLocale objectForKey:NSLocaleCountryCode];
// get country code, e.g. ES (Spain), FR (France), etc.

Dans Swift:

let currentLocale = NSLocale.currentLocale()
let countryCode = currentLocale.objectForKey(NSLocaleCountryCode) as? String

Si vous voulez trouver le code de pays du fuseau horaire actuel, voir réponse de @ chings228 .

Si vous souhaitez trouver le code de pays de l'emplacement physique de l'appareil, vous aurez besoin de CoreLocation avec géocodage inversé. Voir cette question pour plus de détails: Comment puis-je obtenir l'emplacement actuel de l'utilisateur dans iOS

135
kennytm
NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
NSString *country = [locale displayNameForKey: NSLocaleCountryCode value: countryCode];
17
Sachindra Pandey

Pour Swift 4.0,

Vous pouvez simplement utiliser

let countryCode = Locale.current.regionCode

print(countryCode)

9
Mehul Thakkar

Pour les appareils avec carte SIM, vous pouvez utiliser ceci:

  CTTelephonyNetworkInfo * network_Info = [CTTelephonyNetworkInfo new];
  CTCarrier * carrier = network_Info.subscriberCellularProvider;
  NSString  * countryCode = [carrier.isoCountryCode uppercaseString];
9
user2248258
NSLocale *countryLocale = [NSLocale currentLocale];  
NSString *countryCode = [countryLocale objectForKey:NSLocaleCountryCode];
NSString *country = [countryLocale displayNameForKey:NSLocaleCountryCode value:countryCode];
NSLog(@"Country Code:%@ Name:%@", countryCode, country);
//Country Code:IN Name:India

Lien source .

9
Teja Kumar Bethina
NSTimeZone *gmt = [NSTimeZone localTimeZone];

NSLog(@"timezone gmt %@",gmt.abbreviation);
5
chings228

Si vous testez et souhaitez utiliser une langue différente de votre système, il est plus facile de modifier les options Application Language Et Application Region De votre schéma au lieu de changer la langue et la région sur votre appareil ou simulateur.

Allez dans Product-> Scheme-> Edit Scheme... -> Run-> Options et choisissez Application Language Et Application Region Que vous souhaitez tester.

Edit Application Language and Application Region within Scheme Run Options

De la documentation iOS: Test de votre application internationalisée

5
Heath Borders

Le dernier code de travail de Swift 3.0 est

if let countryCode = (Locale.current as NSLocale).object(forKey: .countryCode) as? String {
    print(countryCode)
}
3
Muhammad Nayab

Swift 3. solution

if let countryCode = (Locale.current as NSLocale).object(forKey: .countryCode) as? String {
            print(countryCode)
        }
3
Sourabh Sharma