Iphone 位置背景-网络连接

Iphone 位置背景-网络连接,iphone,objective-c,Iphone,Objective C,我试图在后台发布数据,我希望定期收到来自的响应,以便我尝试使用CLLocation Manager。但是didUpdateLocation方法只调用一次。 请推荐我! 在这里输入代码 - (void)applicationDidEnterBackgroundUIApplication *)application { locationManager = [[CLLocationManager alloc] init]; locationManager.delegat

我试图在后台发布数据,我希望定期收到来自的响应,以便我尝试使用CLLocation Manager。但是didUpdateLocation方法只调用一次。 请推荐我! 在这里输入代码

    - (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
DidUpdateLocationCLLocation*新位置 fromLocationCLLocation*旧位置 {

NSLog@Location改变 }
此方法只调用一次。

当然,您应该很高兴代理至少收到一次消息。在后台执行代码中没有任何代码会延迟应用程序挂起。而且这种代码可以工作大约10分钟,并且会被系统杀死

如果您需要在后台跟踪用户位置,那么您可能只需在Info.plist ui backgroundmodes中为应用程序后台操作设置此模式,并添加选项location,您的应用程序将不会仅在内存占用过多的情况下暂停