iOS Geocoder forgeocode device IP Address location using GeoIP service(s) and a block-based syntax.
##Supported Services
(feel free to suggest other services to support)
##Requirements & Dependecies
- iOS >= 5.0
- ARC enabled
- CoreLocation Framework
##Installation
####CocoaPods:pod 'FCIPAddressGeocoder'
####Manual install:CopyFCIPAddressGeocoder.h andFCIPAddressGeocoder.m to your project.
##Usage
//the service used by default is FreeGeoIP, but you can set the default service to another one//this method will affect the default service/url of all instances, included the shared one//if you need to change the default service/url it's recommended to do it application:didFinishLaunching[FCIPAddressGeocodersetDefaultService:FCIPAddressGeocoderServiceTelize];//some services like FreeGeoIP are open-source, and you could need to use an instance of it running on your own server[FCIPAddressGeocodersetDefaultService:FCIPAddressGeocoderServiceFreeGeoIPandURL:@"http://127.0.0.1/"];
//you can use the shared instanceFCIPAddressGeocoder *geocoder = [FCIPAddressGeocodersharedGeocoder];//or create a new geocoderFCIPAddressGeocoder *geocoder = [FCIPAddressGeocodernew];//or create a new geocoder which uses a custom instance of the FreeGeoIP service installed on your own serverFCIPAddressGeocoder *geocoder = [[FCIPAddressGeocoderalloc]initWithService:FCIPAddressGeocoderServiceFreeGeoIPandURL:@"http://127.0.0.1/"];
//set if the geocoder can use all available services in case of failure of the default one//very useful since 3rd party services are not depending by us and could be temporary unavailable or no more active//by default this property value is set to YES only if you use the shared geocoder or if you create a geocoder without specifing its service/urlgeocoder.canUseOtherServicesAsFallback =YES;
//IP Address geocoding (geocoding results are cached for 1 minute)[geocodergeocode:^(BOOL success) {if(success) {//you can access the location info-dictionary containing all informations using 'geocoder.locationInfo'//you can access the location using 'geocoder.location'//you can access the location city using 'geocoder.locationCity' (it could be nil)//you can access the location country using 'geocoder.locationCountry'//you can access the location country-code using 'geocoder.locationCountryCode' }else {//you can debug what's going wrong using: 'geocoder.error' }}];//check if geocoding[geocoderisGeocoding];//returns YES or NO
//cancel geocoding[geocodercancelGeocode];
Enjoy :)