1

CLLocationManagerを使用してGPSデータを取得するiOSアプリケーションを開発しています。ユーザーがFast App Switcherを使用してアプリケーションを停止するときにCLLocationManagerを停止する

ユーザーがホームボタンを押してからアプリを高速アプリスイッチャーで殺したときに、CLLocationManagerを停止するにはどうすればよいですか?

CLLocationManagerを停止してGPSデータのポーリングを停止するにはどうすればよいですか?誰もがこれを達成するための良い方法を知っている、ユーザーがアプリケーションを殺すときに通常、私は任意のコードを実行するカント原因....

EDITん: 私は背景にアプリケーションを送信していた場合、それはまだsignificantLocationChangesを取得する必要があります、アプリケーションがバックグラウンドで送信されたときにCLLocationManagerを停止することはできません!

答えて

1

AppDelegateには、applicationWillResignActiveというメソッドがあります。このメソッドは、アプリケーションがバックグラウンドに送信される直前に実行されます。 AppDelegateからCLLocationManagerへのアクセス権があれば、すぐに停止できます。それ以外の場合は、applicationWillResignActiveから通知をポストすることができます。また、CLLocationManagerがその通知をサブスクライブしてそこから処理することができるクラスを投稿できます。

後、このような通知:

[[NSNotificationCenter defaultCenter] postNotificationName:@"appWillResignActive" object:nil]; 

そして、このようにサブスクライブ:あなたが実行したい場合は :

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleResign:) name:@"appWillResignActive" object:nil]; 

次に、このようないくつかの方法:

- (void)handleResign: (NSNotification *)notification 
{ 
    // stop CLLocationManager 
} 

EDITコードを実行すると、AppDelegateのこのメソッドでそのコードを実行できます。

- (void)applicationWillTerminate:(UIApplication *)application 
+1

あなたはアプリデリゲート以外のクラスは、これらのイベントに応答する必要がある場合は、独自の通知を掲示する必要がいけない:UIApplicationWillResignActiveNotification らを参照してください。 – rickster

+0

SteveB、rickster - アプリケーションがバックグラウンドである間に場所の変更が必要なので、私は自分の投稿を編集したので、背景を入力するときにCLLocationManagerを停止することはできません。とにかくあなたの答えをありがとう! – joshi737

+0

あなたはアプリが手動でユーザーによって殺されたときだけ止めたいですか?それが起こると、アプリ内のすべてのコードが実行を停止する必要があります。それはそれを殺すのがポイントです。その時点で、何かがまだ起こっていることを確認する方法はありますか?あなたはログファイルを出力し、アプリが殺された後で活動を見ていますか? – SteveB

関連する問題