2014-12-17 4 views
0

Я написал приложение для геозащиты, и он отлично работает, когда он работает на переднем плане и в фоновом режиме. И как заставить это приложение работать и отправлять уведомления о геообъектах даже в случае, когда приложение убито?Geofencing in iPhone

ответ

0

Когда приложение будет убито, iOS по-прежнему будет контролировать геообъекты. Если вы введете или выйдете из него, будет вызван ваш AppDelegate application:didFinishLaunchingWithOptions:. Вы можете обнаружить, будет ли это место запуска с параметрами запуска:

if (launchOptions[UIApplicationLaunchOptionsLocationKey]) 
    { 
     //Re-Setup your location manager and take appropriate action. The locationManager:didEnterRegion: locationManager:didExitRegion delegate of the new location manager will be triggered. 
    } 
0

Вы также можете создать оповещение в то время, когда вы начинаете мониторинг вашего региона:

[self.locationManager startMonitoringForRegion:region]; 

    UILocalNotification *regionNotification = [UILocalNotification new]; 
    NSString *notificationString = [NSString stringWithFormat:@"You are approaching near region%@",region.identifier]; 
    regionNotification.alertBody = notificationString; 
    regionNotification.alertAction = @"Show me the region details."; 
    regionNotification.region = region; 
    regionNotification.regionTriggersOnce = NO; 
    regionNotification.userInfo = [NSDictionary dictionaryWithObject:region.identifier forKey:@"regionIdentifier"]; 
    [[UIApplication sharedApplication]scheduleLocalNotification:regionNotification]; 

Это уведомление будет работать на все 3 условия:

  1. , когда приложение находится на переднем плане
  2. , когда приложение находится в фоновом режиме
  3. , когда приложение будет убит

функции обратного вызова для уведомления всех трех случаев принимаются в UIApplicationDelegate методы - application:didReceiveLocalNotification:

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 
{ 
    //Do whatever you want after you receive the notification 
}