Ok, how do you do that with the IP.
So, geoplugin.net has it's amazing JSON api, it defaults the IP to the currently conection, so what you have to do is make a request to this address:
http://www.geoplugin.net/json.gp
Astunishing! It returns, for me, this data:
geoPlugin({
"geoplugin_request":"201.6.226.233",
"geoplugin_status":200,
"geoplugin_city":null,
"geoplugin_region":"São Paulo",
"geoplugin_areaCode":0,
"geoplugin_dmaCode":0,
"geoplugin_countryCode":"BR",
"geoplugin_countryName":"Brazil",
"geoplugin_continentCode":"SA",
"geoplugin_latitude":-23.473301,
"geoplugin_longitude":-46.665798,
"geoplugin_regionCode":27,
"geoplugin_regionName":"São Paulo",
"geoplugin_currencyCode":"BRL",
"geoplugin_currencySymbol":"R$",
"geoplugin_currencyConverter":2.0198
})
Well, now what you have to do is just parse this "JSON". It's not actually a JSON as it has this geoplugin( {data} )
wrapper. So you could lazily execute some filtering, removing those parts of a NSSTring, maybe.
I See you are in a hurry, so I took my spare time to write some code for you. It's very non-standard as I don't know if you are using any REST framework that would help, but here goes:
NSString *url = [NSString stringWithFormat:@"http://www.geoplugin.net/json.gp"];
NSString *locationData = [[NSString alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]
encoding:NSUTF8StringEncoding]];
locationData = [locationData stringByReplacingOccurrencesOfString:@"geoPlugin(" withString:@""];
locationData = [locationData stringByReplacingOccurrencesOfString:@")" withString:@""];
//user some json parser here.
if([[[locationData JSONValue] valueForkey:@"geoplugin_countryCode"] isEqualToString:@"US"]){
//proceed.
}