位置背景 - 网络连接

时间:2011-08-18 14:24:21

标签: iphone objective-c

我正在尝试在后台发布数据,我希望在常规时间间隔内收到响应,以便我尝试使用CLLocation Manager。但didUpdateToLocation方法只调用一次。 请建议我! 在这里输入代码

    - (void)applicationDidEnterBackgroundUIApplication *)application
    {
    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; // 100 m
    [locationManager startUpdatingLocation];
    UIApplication* app = [UIApplication sharedApplication];

    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
    [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
    // code for Posting Data Here
    NSLog(@"backgroundTimeRemaining: %f", [[UIApplication sharedApplication] backgroundTimeRemaining]);
    [app endBackgroundTask:bgTask];
    bgTask = UIBackgroundTaskInvalid;
    });

    }
    - (void)locationManagerCLLocationManager *)manager

didUpdateToLocationCLLocation *)newLocation fromLocationCLLocation *)oldLocation {

NSLog(@“位置变更”); } 此方法只调用一次。

1 个答案:

答案 0 :(得分:0)

当然,你应该对代表收到的消息至少一次感到高兴。没有代码会延迟后台执行代码中的应用程序暂停。此类代码也可以工作大约10分钟,并且会被系统杀死。

如果您需要在后台跟踪用户位置,可能只需将此模式设置为 Info.plist UIBackgroundModes )中的应用后台操作并添加选项位置)并且您的应用不会被暂停(仅在内存使用量很大的情况下)