1

特にアプリケーションがバックグラウンドにある場合に、位置情報の更新を取得しようとしています。アプリケーションがバックグラウンドに入ると、n 分ごとに位置情報の更新を送信する必要があります。まずフォアグラウンドで試してみましたが、問題なく動作しています。同じコードを applicationDidEnterBackground にコピーしましたが、場所の更新を印刷できません。どこにぶつけられたのかわからないので助けてください。

ビューでDidLoad

- (void)viewDidLoad {

  locationManager = [[CLLocationManager alloc] init];
  locationManager.delegate = self;
  locationManager.distanceFilter = kCLDistanceFilterNone;
  locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
  [locationManager startUpdatingLocation];
}

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation
{
  int degrees = newLocation.coordinate.latitude;
  double decimal = fabs(newLocation.coordinate.latitude - degrees);
  int minutes = decimal * 60;
  double seconds = decimal * 3600 - minutes * 60;
  NSString *lat = [NSString stringWithFormat:@"%d° %d' %1.4f\"", 
                   degrees, minutes, seconds];
  latLabel.text = lat;
  degrees = newLocation.coordinate.longitude;
  decimal = fabs(newLocation.coordinate.longitude - degrees);
  minutes = decimal * 60;
  seconds = decimal * 3600 - minutes * 60;
  NSString *longt = [NSString stringWithFormat:@"%d° %d' %1.4f\"", 
                     degrees, minutes, seconds];
  longLabel.text = longt;
}

これらのメソッドを AppDelegate に貼り付けてみました。機能していません:(。助けてください

4

2 に答える 2

2

単にコードをそこに貼り付けて、アプリケーションがバックグラウンドで実行されることを期待することはできません。バックグラウンドで実行されるアプリとして登録する必要があります。この記事の「長時間実行バックグラウンドタスクの実装」セクションを参照してください。

于 2012-04-13T06:23:19.550 に答える
2

コメントとの議論に従って、plist にエントリを作成することを提案しました。

UIBackgroundModes for location in plist

そして、これは役に立ちました。

編集

座標をログに記録するときは、おそらく NSUserDefaults のどこかで時間を節約する必要があります。その後、次にログに記録するときに、現在の時刻と NSUserDefaults に保存されている時刻の差を見つける必要があります。間隔が必要な場合は、座標をログに記録します。

お役に立てれば。

于 2012-04-13T07:09:59.683 に答える