【问题标题】:Location Background - Network Connection位置背景 - 网络连接
【发布时间】:2011-10-29 20:30:01
【问题描述】:

我正在尝试在后台发布数据,并且我想定期接收来自的响应,以便我尝试使用 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(@"位置变化"); } 该方法只调用一次。

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    当然,您应该对代表至少收到一次消息感到高兴。没有代码会延迟应用程序在您的后台执行代码中挂起。而且这种代码可以工作10分钟左右,会被系统杀死。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 2014-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      相关资源
      最近更新 更多