Sample code for 30+ languages & platforms
Objective-C

MaxMind IPv4 Geolocation Lookup

See more Geolocation Examples

Demonstrates how to lookup Geolocation data for an IPv4 address using the MaxMind GeoIP2 Precision Web Service.

Chilkat Objective-C Downloads

Objective-C
#import <CkoHttp.h>
#import <NSString.h>
#import <CkoJsonObject.h>

BOOL success = NO;

//  This example requires the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

CkoHttp *http = [[CkoHttp alloc] init];

http.Login = @"MAXMIND_ACCOUNT_ID";
http.Password = @"MAXMIND_LICENSE_KEY";
http.Accept = @"application/json";

//  Lookup an IPv4 address: 149.250.207.170  (this was a randomly chosen address)
NSString *jsonStr = [http QuickGetStr: @"https://geoip.maxmind.com/geoip/v2.1/country/149.250.207.170"];
if (http.LastMethodSuccess == NO) {
    NSLog(@"%@",http.LastErrorText);
    return;
}

CkoJsonObject *json = [[CkoJsonObject alloc] init];
json.EmitCompact = NO;
success = [json Load: jsonStr];

NSLog(@"%@",[json Emit]);

//  Sample output:
//  Use this online tool to generate parsing code from sample JSON: 
//  Generate Parsing Code from JSON

//  {
//    "continent": {
//      "code": "EU",
//      "geoname_id": 6255148,
//      "names": {
//        "ja": "?????",
//        "pt-BR": "Europa",
//        "ru": "??????",
//        "zh-CN": "??",
//        "de": "Europa",
//        "en": "Europe",
//        "es": "Europa",
//        "fr": "Europe"
//      }
//    },
//    "country": {
//      "is_in_european_union": true,
//      "iso_code": "DE",
//      "geoname_id": 2921044,
//      "names": {
//        "fr": "Allemagne",
//        "ja": "????????",
//        "pt-BR": "Alemanha",
//        "ru": "????????",
//        "zh-CN": "??",
//        "de": "Deutschland",
//        "en": "Germany",
//        "es": "Alemania"
//      }
//    },
//    "maxmind": {
//      "queries_remaining": 49999
//    },
//    "registered_country": {
//      "is_in_european_union": true,
//      "iso_code": "DE",
//      "geoname_id": 2921044,
//      "names": {
//        "es": "Alemania",
//        "fr": "Allemagne",
//        "ja": "????????",
//        "pt-BR": "Alemanha",
//        "ru": "????????",
//        "zh-CN": "??",
//        "de": "Deutschland",
//        "en": "Germany"
//      }
//    },
//    "traits": {
//      "ip_address": "149.250.207.170"
//    }
//  }
//  
//  
NSString *continentCode = 0;
int continentGeoname_id;
NSString *continentNamesJa = 0;
NSString *continentNamesPt_BR = 0;
NSString *continentNamesRu = 0;
NSString *continentNamesZh_CN = 0;
NSString *continentNamesDe = 0;
NSString *continentNamesEn = 0;
NSString *continentNamesEs = 0;
NSString *continentNamesFr = 0;
BOOL countryIs_in_european_union;
NSString *countryIso_code = 0;
int countryGeoname_id;
NSString *countryNamesFr = 0;
NSString *countryNamesJa = 0;
NSString *countryNamesPt_BR = 0;
NSString *countryNamesRu = 0;
NSString *countryNamesZh_CN = 0;
NSString *countryNamesDe = 0;
NSString *countryNamesEn = 0;
NSString *countryNamesEs = 0;
int maxmindQueries_remaining;
BOOL registered_countryIs_in_european_union;
NSString *registered_countryIso_code = 0;
int registered_countryGeoname_id;
NSString *registered_countryNamesEs = 0;
NSString *registered_countryNamesFr = 0;
NSString *registered_countryNamesJa = 0;
NSString *registered_countryNamesPt_BR = 0;
NSString *registered_countryNamesRu = 0;
NSString *registered_countryNamesZh_CN = 0;
NSString *registered_countryNamesDe = 0;
NSString *registered_countryNamesEn = 0;
NSString *traitsIp_address = 0;

continentCode = [json StringOf: @"continent.code"];
continentGeoname_id = [[json IntOf: @"continent.geoname_id"] intValue];
continentNamesJa = [json StringOf: @"continent.names.ja"];
continentNamesPt_BR = [json StringOf: @"continent.names.pt-BR"];
continentNamesRu = [json StringOf: @"continent.names.ru"];
continentNamesZh_CN = [json StringOf: @"continent.names.zh-CN"];
continentNamesDe = [json StringOf: @"continent.names.de"];
continentNamesEn = [json StringOf: @"continent.names.en"];
continentNamesEs = [json StringOf: @"continent.names.es"];
continentNamesFr = [json StringOf: @"continent.names.fr"];
countryIs_in_european_union = [json BoolOf: @"country.is_in_european_union"];
countryIso_code = [json StringOf: @"country.iso_code"];
countryGeoname_id = [[json IntOf: @"country.geoname_id"] intValue];
countryNamesFr = [json StringOf: @"country.names.fr"];
countryNamesJa = [json StringOf: @"country.names.ja"];
countryNamesPt_BR = [json StringOf: @"country.names.pt-BR"];
countryNamesRu = [json StringOf: @"country.names.ru"];
countryNamesZh_CN = [json StringOf: @"country.names.zh-CN"];
countryNamesDe = [json StringOf: @"country.names.de"];
countryNamesEn = [json StringOf: @"country.names.en"];
countryNamesEs = [json StringOf: @"country.names.es"];
maxmindQueries_remaining = [[json IntOf: @"maxmind.queries_remaining"] intValue];
registered_countryIs_in_european_union = [json BoolOf: @"registered_country.is_in_european_union"];
registered_countryIso_code = [json StringOf: @"registered_country.iso_code"];
registered_countryGeoname_id = [[json IntOf: @"registered_country.geoname_id"] intValue];
registered_countryNamesEs = [json StringOf: @"registered_country.names.es"];
registered_countryNamesFr = [json StringOf: @"registered_country.names.fr"];
registered_countryNamesJa = [json StringOf: @"registered_country.names.ja"];
registered_countryNamesPt_BR = [json StringOf: @"registered_country.names.pt-BR"];
registered_countryNamesRu = [json StringOf: @"registered_country.names.ru"];
registered_countryNamesZh_CN = [json StringOf: @"registered_country.names.zh-CN"];
registered_countryNamesDe = [json StringOf: @"registered_country.names.de"];
registered_countryNamesEn = [json StringOf: @"registered_country.names.en"];
traitsIp_address = [json StringOf: @"traits.ip_address"];