-2

私のアプリは、ユーザーの現在地の更新 (必ずしも重要な場所の変更ではない) を次の方法で監視します。

someLocationManager = [[CLLocationManager alloc] init];
[someLocationManager setDelegate:self];
[someLocationManager startUpdatingLocation];

アプリ (シミュレーター) がフォアグラウンドにある場合はすべて問題なく動作しますが、バックグラウンドに一時停止する (終了しない) 場合、ログに次のエラーが表示されます。

バックグラウンド タスクを終了できません: 識別子 * のバックグラウンド タスクが存在しないか、既に終了している可能性があります

このエラーに対する他のすべての回答には、位置情報サービスとの関連はありませんが、一般的なバックグラウンド タスクの問題のみがあります。

4

2 に答える 2

1

ユーザーから位置認証を取得する際に、以下のコードを追加します。Apple がデフォルトの allowBackgroundLocationUpdates NO を iOS9 から変更したためです。

'if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) {
    locationManager.allowsBackgroundLocationUpdates = YES;
}'
于 2015-10-28T13:49:08.573 に答える
1

そのため、バックグラウンドでの位置情報の更新を正しく機能させるには、次の 3 つの設定を行う必要があるようです。これを実行して問題を修正します。

  1. にMakeNSLocationAlwaysUsageDescriptionキーが設定されています (値は許可の理由として) info.plist
  2. [someLocationManager requestAlwaysAuthorization];許可を求めるときは、必ず電話してください。
  3. ターゲット設定のセクションで有効Location UpdatesBackground Modesします。Capabilitiesこれについてはよくわかりませんが、正しいように聞こえます。

楽しみ!

于 2015-06-18T12:58:11.607 に答える