0

Я пытаюсь написать приложение в iOS для iPhone 4, используя значительное изменение местоположения, которое запускает локальное уведомление каждый раз, когда делегат местоположения получает обновление местоположения. Мой код размещен ниже. Я ухожу из приложения и закрываю его из фона. Пока телефон бодрствует (экран горит), приложение работает хорошо, увольняя уведомления, но когда я убираю телефон (экран черный), я больше не получаю уведомления, пока не разбужу телефон нажав кнопку «домой», получив текст и т. д. Затем уведомление будет запущено. Что мне нужно сделать, чтобы обновления местоположений регистрировались, даже когда устройство спит? Заранее спасибо.iOS Значительное изменение местоположения работает только тогда, когда устройство пробуждено

SigLoc.h 

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

@interface SigLocViewController : UIViewController <CLLocationManagerDelegate> { 
CLLocationManager *locationManager; 

} 

@property (nonatomic, retain) CLLocationManager *locationManager; 

@end 

SigLoc.m 

#import "SigLocViewController.h" 

@implementation SigLocViewController 
@synthesize locationManager; 

- (void)viewDidLoad { 
    self.locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    [locationManager startMonitoringSignificantLocationChanges]; 
} 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation  *)newLocation fromLocation:(CLLocation *)oldLocation 
    UIApplication *app = [UIApplication sharedApplication]; 
    UILocalNotification *alarm = [[[NSClassFromString(@"UILocalNotification") alloc] init] autorelease]; 
    if (alarm) { 
     alarm.fireDate = nil; 
     alarm.repeatInterval = 0; 
     alarm.alertBody = @"Location Update"; 
     alarm.soundName = UILocalNotificationDefaultSoundName; 
     alarm.hasAction = NO; 
     [app presentLocalNotificationNow:alarm]; 
    } 
} 

ответ

0

Моя догадка ваша точка зрения не является активным, когда приложение переходит в фоновом режиме, так что нет никакого способа, чтобы получить уведомления. Я бы назначил делегата приложения делегатом диспетчера местоположений, а затем передал обратные вызовы в ваш делегат менеджера местоположений SigLoc.

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

+0

Я ученик средней школы, все еще пытающийся получить поддержку программирования, и я не так хорошо знаком с делегатами и передаю обратные вызовы. То, что я пробовал делать, это взять мой код сверху и перенести его в AppDelegate.h и AppDelegate.m, и я все еще испытывал те же проблемы. Каков правильный способ этого или где я могу найти хороший учебник о том, как передать эти обратные вызовы? – videoadventures

Смежные вопросы

 Смежные вопросы