iOS9はバックグラウンドで位置情報を追跡しません 質問する

iOS9はバックグラウンドで位置情報を追跡しません 質問する

私のアプリはバックグラウンドで位置情報を追跡します...位置情報バックグラウンドモードが有効になっていて、

[self.locationManager startUpdatingLocation];

これはうまく機能しますiOS7-8が、機能しなくなりましたiOS9

シミュレータでは動作しますが、実際のデバイスではバックグラウンドでコールバックが取得されません... iOS8デバイスで同じコードを実行すると、以前と同じように通常のコールバックが取得されます

これは文書化されていますか? シミュレータでは動作するのに、デバイスでは動作しないのはなぜですか? これはバグですか?

iOS9で使用した場合startSignificantChangeUpdates、これは何らかのバッテリー節約機能であり、startUpdatingLocationを禁止している可能性があるのではないかと思います。

ベストアンサー1

使用:

if ([self.locationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {
    [self.locationManager setAllowsBackgroundLocationUpdates:YES];
}

システム バージョンを評価するマクロの使用を避けるためです。これにより、iOS 9 では setAllowsBackgroundLocationUpdates: が呼び出されますが、iOS 8 では呼び出されません。

おすすめ記事