1

Я наткнулся на CoreLocation рамки и реализовал основные шаги, как описано в iOS Location Awareness Programming Guide, так как я не смог найти его для OSX.Как получить информацию о местоположении на MacOS?

// AppDelegate.h 

#import <Cocoa/Cocoa.h> 
#import <CoreLocation/CoreLocation.h> 

@interface AppDelegate : NSObject<NSApplicationDelegate, CLLocationManagerDelegate> { 
    CLLocationManager* m_locationManager; 
} 
@end 

Существует не так много в файле реализации ...

// AppDelegate.m 

- (void)applicationDidFinishLaunching:(NSNotification*)notification { 
    m_locationManager = [[CLLocationManager alloc] init]; 
    m_locationManager.delegate = self; 
    m_locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    [m_locationManager startUpdatingLocation]; 
} 

#pragma mark - CLLocationManagerDelegate 

- (void)locationManager:(CLLocationManager*)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { 
    NSLog(@"%@ %@", self.className, NSStringFromSelector(_cmd)); 
} 

- (void)locationManager:(CLLocationManager*)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation*)oldLocation { 
    NSLog(@"%@ %@", self.className, NSStringFromSelector(_cmd)); 
} 

- (void)locationManager:(CLLocationManager*)manager didFailWithError:(NSError*)error { 
    NSLog(@"%@ %@", self.className, NSStringFromSelector(_cmd)); 
} 

При запуске приложения я попросил, чтобы разрешить поиск местоположения. Тот же вопрос появляется через некоторое время.
Проблема: Однако ни один из методов делегата не вызван.


КСТАТИ: интересная статья о Apple and Google Maps объявляя CLGeocoder.

ответ

0

Две вещи я могу думать:

1)

Является ли ваше приложение будет работать на MacOS 10.6 & новее? Если это так, убедитесь, что параметр «Цель развертывания» для вашего проекта установлен на 10.6 или новее.

2)

В файле интерфейса «.h», убедитесь, чтобы добавить <CLLocationManagerDelegate>, чтобы указать, что этот объект соответствует протоколу. Похоже, что вы пытаетесь сделать это из вашего приложения делегата, так что декларация может выглядеть примерно так:

@interface AppDelegate : NSObject <NSApplicationDelegate, CLLocationManagerDelegate> 
+0

* Mac OS X развертывания Target * установлено значение * Mac OS X 10.7 *, а также установите делегат в файл заголовка. – JJD

+0

На какой машине вы работаете? Я не уверен, что у macs есть какое-либо местоположение для этого. – rdelmar

+1

@rdelmar Это Mac Pro, на котором работает Lion. Насколько я понимаю, API-интерфейс местоположения инкапсулирует WIFI, GPS, поэтому не имеет значения, на какой машине я запускаю это. – JJD

2

использовать этот делегат

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation; 
Смежные вопросы