2016-12-05 5 views
0

ボタンを押したときにアプリケーションで位置情報サービスを起動するBluetoothデバイスがあります。ロケーションサービスは実行されますが、約8秒間だけ実行されます。私は、NSLogがdidUpdateToLocationデリゲートメソッドでLocation Foundを出力しています。それはNSLogをわずか8秒間出力します。BackgroundLocationUpdatesは数秒間しか動作しません

アプリをフォアグラウンドに置くと、位置情報サービスが再び続行されます。ここで私はロケーションマネージャを初期化する方法である:ボタンを押すと

self.locationManager = [[CLLocationManager alloc] init]; 
self.locationManager.delegate = self; 
[self.locationManager requestAlwaysAuthorization]; 
[self.locationManager requestWhenInUseAuthorization]; 
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
[self.locationManager setAllowsBackgroundLocationUpdates:YES]; 
[self.locationManager allowsBackgroundLocationUpdates]; 

、私はこれを実行します。

[self.locationManager startUpdatingLocation]; 
+0

バックグラウンドでの位置の更新を継続的に開始するには、アプリがフォアグラウンドにある間に重要な位置の変更の監視を開始する必要があります。 – Paulw11

+0

テストしただけで機能しますが、必要な操作を行う方法はありません私のアプリで?全く? – Chris

+0

まあ、重要な位置情報の更新を残すだけです。それは完全なGPS位置更新と比較してエネルギーの影響が少ない – Paulw11

答えて

0

あなたがいる限りあなたの場所-マネージャがあるとして、バックグラウンドモード(場所)を有効にする必要がありますあなたのアプリはすべてのBluetoothデータを受信します。

コメントに記載されているように、重要な位置更新を使用すると、バッテリの使用量が大幅に削減されます。

ここにApple guideへのリンクです。

ここにバックグラウンドで位置情報を取得することに関連するquestionへのリンクがあります。

関連する問題