2012-04-05 6 views
6

Im в настоящее время работает с "Регионы" Пример кода: https://developer.apple.com/library/ios/#samplecode/Regions/Introduction/Intro.h TML # // apple_ref/DOC/UID/DTS40010726-Intro-DontLinkElementID_2область на основе местного уведомления

Я хотел бы сделать шаг вперед и генерировать или запускать предупреждение, когда пользователь выходит из региона (может быть как для ввода & выхода, я не против, что проще всего для первоначальной реализации).

Я изучал ссылку на класс CLLocation, руководство по программированию местоположения и руководство по программированию на локальном и push-уведомлении. И им страдает от информационной перегрузки.

Большое спасибо :)

EDIT: Я думаю, что я, возможно, есть идея, которая решает эту проблему: в файле реализации RegionsViewController есть это:

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region  { 
    NSString *event = [NSString stringWithFormat:@"didExitRegion %@ at %@", region.identifier, [NSDate date]]; 

    [self updateWithEvent:event]; 
} 

Поскольку я хочу, чтобы реализовать локальное уведомление, когда пользователь выходит из указанной границы области, я ввел это:

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region { 
    NSString *event = [NSString stringWithFormat:@"didExitRegion %@ at %@", region.identifier, [NSDate date]]; 
    [self updateWithEvent:event]; 
    //implement local notification: 
    UIApplication *app    = [UIApplication sharedApplication]; 
    UILocalNotification *notification = [[UILocalNotification alloc] init]; 
    [[UIApplication sharedApplication] cancelAllLocalNotifications]; 

    if (notification == nil) 
     return; 

    notification.alertBody = [NSString stringWithFormat:@"Did You Lock Your House?"]; 
    notification.alertAction = @"Lock House"; 
    notification.soundName = UILocalNotificationDefaultSoundName; 
    notification.applicationIconBadgeNumber = 1; 
    [app presentLocalNotificationNow:notification]; 

    [notification release]; 
} 

Может ли кто-нибудь посоветовать мне, является правильным, или если есть какие-либо рекомендации? (извинения за плохое форматирование)

ответ

1

Вы правы, нет лучшего способа, чем запустить локальное уведомление из locationManager: didExitRegion: Кроме того, это будет работать, даже если ваше приложение работает в фоновом режиме или закрыто.