Геолокация с местным уведомлением, как напоминание - PullRequest
1 голос
/ 30 января 2012

Я хочу реализовать уведомления о геолокации, такие как напоминания о приложении. это то, что я уже сделал:

в приложении делегат:

self.locationManager = [[[CLLocationManager alloc] init] autorelease]; /* don't leak memeory! */
[self.locationManager setDelegate:self];
[self.locationManager setDesiredAccuracy:kCLLocationAccuracyBest];

-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{

}

-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{

}

-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{

}

И этот в контроллере представления начинает мониторинг:

CLLocationCoordinate2D location2D = mapView.region.center; 
CLRegion *regionForMonitoring = [[CLRegion alloc] initCircularRegionWithCenter:location2D radius:1 identifier:@"RegionIdentifier"];
[[Utils getLocationManager] startMonitoringForRegion:regionForMonitoring];

Теперь я понятия не имею, что мне нужно делать, чтобы запускать локальные уведомления с этой информацией.

Ответы [ 2 ]

5 голосов
/ 30 января 2012

Я могу вам сказать, что ваш радиус, скорее всего, слишком мал, чтобы вызвать обновление.У вас установлен радиус 1 метр.Это потребует обновления местоположения, почти слишком точного, чтобы регистрироваться на чем-либо, кроме проверки координат, которые вы передаете.

Если вы получите событие региона, я поместил бы ваше локальное уведомление в -didEnterRegion или * 1004.* методы.Вы можете создать свое уведомление, как сказал @Missaq.

UILocalNotification *notification = [[UILocalNotification alloc] init]; 
notification.fireDate = [NSDate date]; 
NSTimeZone* timezone = [NSTimeZone defaultTimeZone]; 
notification.timeZone = timezone; 
notification.alertBody = @"Notification message"; 
notification.alertAction = @"Show"; 
notification.soundName = UILocalNotificationDefaultSoundName; 
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
[notification release]; // release if not using ARC

Имейте в виду, что вы не получите уведомление, если ваше приложение активно.Вам нужно будет работать в фоновом режиме, если вы хотите, чтобы ваш огонь уведомлений.Если ваше приложение активно, вы должны представить UIAlertView вместо UILocalNotification.Надеюсь, это поможет.

2 голосов
/ 30 января 2012

Попробуйте использовать методы делегатов

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region;

и

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region;

.

...