iOSでバックグラウンドでの位置情報を取得するアプリを作成しています。
その際にバッテリーが過剰に消費される問題が解決できずに悩んでいます。
一応教科書通りに以下の対応は実行済みです。
フォアグラウンド時には「pausesLocationUpdatesAutomatically」で必要に応じて停止する、「desiredAccuracy」を多めに設定する。
バックグラウンド時には大規模変更のみ検知する「startMonitoringSignificantLocationChanges」に切り替えるといった方法です。
objective
1// foreground時 2self.locationManager = [[CLLocationManager alloc] init]; 3self.locationManager.delegate = self; 4self.locationManager.pausesLocationUpdatesAutomatically = YES; 5self.locationManager.activityType = CLActivityTypeOther; 6self.locationManager.desiredAccuracy = kCLLocationAccuracyKilometer; 7self.locationManager.distanceFilter = 100; 8[self.locationManager startUpdatingLocation]; 9 10// background時 11[self.locationManager stopUpdatingLocation]; 12[self.locationManager startMonitoringSignificantLocationChanges];
しかし大規模変更に切り替えてもなおバックグラウンドでのバッテリー消費が大きく、同じように位置情報を取得しているであろうFoursquareと比較すると時間当たり3倍以上使用されています。
Appleのドキュメントなどを見てもこれ以上の情報は掲載されておらず、八方塞がり状態です。
大規模変更でも一定時間おきに完全に切ったりつけたりを繰り返したほうが良いのでしょうか。
アドバイスお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。