0

iPhone で LocationManager を使用して位置追跡アプリケーションを開発しています。以下は私の質問です。ユーザーが iPhone のホーム ボタンをクリックすると、アプリケーションがバックエンドに切り替わったことを意味しますが、ロケーション マネージャーのスレッドは引き続き動作しますか? ロケーションマネージャーは現在のロケーションを更新しますか? 以下はサンプルコードです。

CLLocationManager *_locationManager;

- (void)startStandardUpdates {
    if (nil == locationManager) {
        locationManager = [[CLLocationManager alloc] init];
    }

    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    // Set a movement threshold for new events.
    locationManager.distanceFilter = kCLLocationAccuracyNearestTenMeters;

        //Will the thread still work even the application is switched to background?
    [locationManager startUpdatingLocation]; 

    CLLocation *currentLocation = locationManager.location;
    if (currentLocation) {
        PAWAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
        appDelegate.currentLocation = currentLocation;
    }
}
4

3 に答える 3

0

多分あなたはあなたの場所を記録するべきです。

バックグラウンドでlocationmanagerに関する非常に役立つチュートリアルもあります。

これはあなたを助けるかもしれません。

唯一のことは、アップルはこのベリーをあまり好きではなく、おそらくバックグラウンドで20分後にアプリを殺してしまうでしょう。

http://mobile.tutsplus.com/tutorials/iphone/ios-multitasking-background-location/

幸運を、

ご不明な点がございましたら、お気軽にお問い合わせください。

于 2012-08-29T10:06:51.543 に答える
0

ロケーションマネージャーは、停止または解放しないと、アプリが中断されるまで続行されます。info.plist で必要なバックグラウンド操作を設定すると、無期限に更新を続行できるようになります。その場合、アプリが中断されている場合は、イベントでアプリを起動します。

そうは言っても、バックグラウンドでメソッドを呼び出すのは非常に難しい場合があります。

バックグラウンド状態でサービスを使用することを計画している場合、多くの考慮事項があります。スレッド化とロック、UI の欠如、ランループのアイドル状態の問題がたくさんあります。達成しようとしていることを真剣に評価し、それを達成するための最も簡単な方法を検討する必要があります。バッテリの寿命は、ポータブル デバイスの最大の問題です。あなたの機能は、エネルギー使用を保証するために、ユーザーにとって最大限の利益をもたらすものでなければなりません。デバイスをロックしたり、ユーザーの操作を妨害したりすると、歓迎されません。

いくつかの洞察と解決策を提供できる、github で私自身のハンドラーの例を見ることができます。

TTLocationHandler

于 2012-10-16T13:35:55.913 に答える
0
  • 開発者サイトからのメモ

バックグラウンドでユーザーの位置を追跡する方法はいくつかありますが、ほとんどの場合、アプリをバックグラウンドで継続的に実行する必要はありません。

The significant-change location service (Recommended)

Foreground-only location services

Background location services

大幅な位置情報サービスは、高精度の位置データを必要としないアプリに強くお勧めします。このサービスでは、ユーザーの場所が大幅に変更された場合にのみ、場所の更新が生成されます。したがって、ソーシャル アプリや、ユーザーに重要ではない場所に関連する情報を提供するアプリに最適です。更新が発生したときにアプリが中断された場合、システムは更新を処理するためにバックグラウンドでアプリを起動します。アプリがこのサービスを開始して終了した場合、新しい場所が利用可能になると、システムはアプリを自動的に再起動します。このサービスは iOS 4 以降で利用でき、セルラー無線を搭載したデバイスでのみ利用できます。

フォアグラウンドのみの位置情報サービスとバックグラウンド位置情報サービスはどちらも、標準位置コア位置情報サービスを使用して位置データを取得します。唯一の違いは、アプリが一時停止されると、フォアグラウンドのみの位置情報サービスが更新の配信を停止することです。これは、アプリが他のバックグラウンド サービスまたはタスクをサポートしていない場合に発生する可能性があります。フォアグラウンドのみの位置情報サービスは、フォアグラウンドにある間のみ位置データを必要とするアプリを対象としています。

(バックグラウンドであっても) ユーザーに継続的な位置情報の更新を提供するアプリは、その Info.plist ファイルに UIBackgroundModes キー (位置の値を含む) を含めることで、バックグラウンドの位置情報サービスを有効にすることができます。この値を UIBackgroundModes キーに含めても、システムがアプリを一時停止することはできませんが、配信する新しい位置データがある場合は常にアプリを起動する必要があることをシステムに伝えます。したがって、このキーを使用すると、アプリをバックグラウンドで実行して、場所の更新が発生するたびに処理できます。

ここにリンクの説明を入力

于 2013-04-29T13:00:29.600 に答える