KETAN
KETAN

Reputation: 481

application run in background

I want to develop app that get current location in background mode of app , and generate according to location particular event ,

So , how can I make app that go in to background and get continues location.

Upvotes: 0

Views: 939

Answers (2)

PJR
PJR

Reputation: 13180

- (CLLocationManager *)locationManager
{                
    if (locationManager != nil)
        return locationManager;

    locationManager = [[CLLocationManager alloc] init];

 //locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;

 locationManager.delegate = self;

 return locationManager;        
}  




- (void)applicationDidEnterBackground:(UIApplication *)application
{
    UIApplication*    app = [UIApplication sharedApplication];
    // Request permission to run in the background. Provide an
    // expiration handler in case the task runs long.
    NSAssert(bgTask == UIBackgroundTaskInvalid, nil);
    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
        // Synchronize the cleanup call on the main thread in case
        // the task actually finishes at around the same time.
        dispatch_async(dispatch_get_main_queue(), ^{
        if (bgTask != UIBackgroundTaskInvalid)
        {
            [app endBackgroundTask:bgTask];
            bgTask = UIBackgroundTaskInvalid;
        });
    }];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    // Do the work associated with the task.
    // Synchronize the cleanup call on the main thread in case
    // the expiration handler is fired at the same time.
    dispatch_async(dispatch_get_main_queue(), ^{
        if (bgTask != UIBackgroundTaskInvalid)
        {
            [app endBackgroundTask:bgTask];
            bgTask = UIBackgroundTaskInvalid;
        }
    });
});

}

  - (void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation`  

{
NSLog(@"location changed");
UIApplication* app = [UIApplication sharedApplication];

NSArray*    oldNotifications = [app scheduledLocalNotifications];

// Clear out the old notification before scheduling a new one.

if ([oldNotifications count] > 0)

    [app cancelAllLocalNotifications];

  // Create a new notification.

UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease];

if (alarm)

{
     alarm.timeZone = [NSTimeZone defaultTimeZone];

    alarm.repeatInterval = 0;

    alarm.soundName = @"b.wav";

    alarm.alertBody = @"Location changed!";


    [app scheduleLocalNotification:alarm];

}

}

Upvotes: 0

ohho
ohho

Reputation: 51951

Apple has written a demo app doing exactly what is asked: Breadcrumb

Upvotes: 2

Related Questions