Как получить текущее название города с помощью Wi-Fi / 3G-IP-адреса с помощью программирования iPhone / iOS (Objective-c)? - PullRequest
0 голосов
/ 07 апреля 2011

Я хочу получить текущее «название города» iPhone, используя IP-адрес устройства (wifi / 3g).Есть ли способ сделать это?Пожалуйста, помогите мне.

Ниже приводится место, где я хочу текущее местоположение.

-(BOOL)fetchAndParseRss{

NSString * CurrentLocation = <I want the retrieved Location here!!>;
NSString * URLrss = [NSString stringWithFormat:@"http://news.google.com/news?q=location:%@&output=rss", CurrentLocation];

NSURL *url = [NSURL URLWithString:URLrss]; 
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
}

На самом деле я разрабатываю приложение для себя, которое отображает новости текущего города.

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

Вы можете использовать CLLocationManager и MKReverseGeocoder, чтобы получить город пользователей.

Сначала добавьте CLLocationManager и начните обновлять местоположение пользователя

- (void)startLocationManager 
{    
    if (locManager==nil)
        locManager = [[CLLocationManager alloc] init];
    if (locManager.locationServicesEnabled)
    {
        NSLog(@"User has opted out of service on it error");
    } else {
        locManager.delegate = self;
        locManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
        [locManager startUpdatingLocation];
    }
}

Затем добавьте методы делегата менеджера местоположений для использования MKReverseGeocoder.

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
    NSLog(@"Manager error: %@", [error description]);
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    self.geocoder = [[MKReverseGeocoder alloc] initWithCoordinate:newLocation.coordinate];
    [geocoder release];
    geocoder.delegate = self;
    [geocoder start];
    [manager stopUpdatingLocation];
}

и, конечно, вы должны реализовать MKReverseGeocoder методы делегирования

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error
{
    NSLog(@"reverseGeocoder:%@ didFailWithError:%@", geocoder, error);
}

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark
{   
    // with the placemark you can now retrieve the city name
    NSString *city = [placemark.addressDictionary objectForKey:@"City"];
    NSLog(@"City is %@", city);
}

Этот метод можно использовать, если пользователь дает разрешение на ваше приложение для менеджера местоположений.

0 голосов
/ 07 апреля 2011

Один из вариантов - отправить HTTP-запрос на веб-сайт, такой как geoiptool.com , и получить информацию о городе из ответа. Я не уверен, какой успех вы будете иметь при использовании сетей мобильной связи, хотя Wi-Fi работал, когда я пробовал его на своем телефоне, но 3G не работал.

...