[iPhone SDK] Significant-change Location Service の挙動

公開日: : 最終更新日:2011/09/26 iPad, iPhone ,

iPhoneで位置情報取得を連続して行うと、あっという間に電池が無くなってしまう。これは、位置情報取得のためにGPS関係のデバイスを軒並み起動しているためらしい。
このため、iOS4より、Significant-change Location Service という便利なものが用意された。
ずっと測位を続けていると電池がすぐに無くなるが、このサービスを startMonitoringSignificantLocationChanges: で開始すると、前回の測位から大きな距離の移動があった場合にのみ、locationManager:didUpdateToLocation:fromLocation: を呼び出してくれる。
バックグラウンドに入っていても通知されるし、バックグラウンドに入っていつの間にか他にアプリに押し出されて終了してしまっても、自動的に再起動をしてくれるとドキュメントには書かれている。

しかしiOS4 Betaの間はなかなか動作が安定せず、その後もなかなかまともに動いていなかったようなのでそんなにきっちり調べていなかったのだが、そろそろまじめに挙動を調べてみようと思う。

同様の疑問を持った人がいて、StackOverflow に質問をしてくれていた。
Behaviour for significant change location API when terminated/suspended? – Stack Overflow

この人によると、startMonitoringSignificantLocationChanges: を呼び出してバックグラウンドに回ったアプリは、たとえ終了させられたとしてもiOSから通知を受けられるが、app delegate のcallbackは全く受けられないという。
さて、実際どうなのかをアプリにログ書き出し機能を入れて試してみる。
位置情報取得系アプリは、実際に移動しないとデバッグができないのがつらい。
いや、何か回避する方法があるのかな。

2010/10/07 試験1

試験に使ったのは、自作の Log Locations
これは起動しておくとバックグラウンドでSignificant-change Location Serviceを使って自動的に測位をしていくライフログ的なアプリなのだけれども、バックグラウンドに入れていろいろなアプリを起動すると、いつの間にかバックグラウンドからいなくなっており、それ以降ログがとられない。
しかし、Appleのドキュメント通りならば終了させられてもまた長い距離を移動すれば自動的に起動させられるはず。
これを、最近検索して見つけた iMemoryGraph を使って確認してみた。

で、結果としては確かにメモリから追い出されて終了させられたことをiMemoryGraphのプロセス一覧画面で確認したのだが、帰宅途中に見たら確かに復活していた。
ということで、確かに起動はしてくれているようだ。
なのに、なぜ測位結果が残らないのかを次は調べてみよう。

追記 2011/07/13

調べてみよう、と書きつつその後の結果を書いていなかったのでいまさらながら書いてみる。
その後、ログを出力するコードを入れて毎日通勤時に動かしてみてログを確認することを繰り返して、startMonitoringSignificantLocationChanges: により自動起動された場合、起動されるけれどもごく一部のコードしか呼ばれないことが判明した。
そして、起動されてもすぐにバックグラウンドに入ることもわかった。
確かに、大きな距離移動して自動起動されたとしてもUIが表示されるわけではないし、フォアグラウンドに出てくるわけでもないので、呼ばれていたのは
– (void)applicationDidEnterBackground:(UIApplication *)application {
だった。
このため、ここで CLLocationManager をallocして、一通りの初期化をする必要があった。
また、すぐにバックグラウンドに入ってしまうので startMonitoringSignificantLocationChanges: を呼ぶ必要もあった。
これらのことを実行することで、バックグランドに入り、メモリ不足でアプリ終了されてもその後起動してログをとり続けることができるようになったようだ。

iMemoryGraph 1.5(無料) for iPhone

iPhone、iPod touch および iPad 互換 iOS 3.1.2 以降が必要

iMemoryGraph 1.5
カテゴリ: ユーティリティ
価格: 無料 App
更新:2010/08/20

imagesimages

関連記事

[iOS SDK] Miselu C.24 対応(Bluetooth MIDI対応)

自作アプリの Miselu C.24 対応(というかBluetooth MIDI対応)を行ったので、

記事を読む

no image

ついにヒレガス本第3版が出るらしい

以前から、いつかは出るかな、いやもういまさらでないかなと思っていたヒレガス本の第3版が11月についに

記事を読む

no image

Corona SDK 調査4日目

今日はスクリプト言語による効率的ゲーム開発を読んで、ちょっとテストプログラムを書いたくらいであまり進

記事を読む

no image

iPhone/iPad で教育

この本は面白そう。今後は教育分野での応用も増えていくだろう。 その時に、iPhone/iPad は教

記事を読む

no image

iPhone 3G 起動せず

奥さんのiPhone 3G は年末あたりに一度充電できなくなったのだが、その後復活していた。 しかし

記事を読む

no image

インド式計算マスター

最近朝起きたらやっているアプリ。 これはいい。今まで全く知らなかったインド式計算がいつの日かマスター

記事を読む

au iPhone 6 Plus 64GB Silver 届いた

9/19 の発売以来、悩み抜いた結果 au で iPhone 6 Plus 64GB S

記事を読む

iPad, iPhone, Mac, PC で使える Line6 Mobile Keys

今年のCESで発表されて以来ずっと待っていたLine6のMobile Keysがついに発売される。こ

記事を読む

no image

iPhone OS 4.0 のマルチタスク対応

iPhone OS 4.0 でマルチタスク対応される、ということでWindowsやMacOS Xの

記事を読む

auからUQモバイルに乗り換えてみた

今更ながら、auからUQモバイルに乗り換えてみた。 以前はキャリアを乗り換え

記事を読む

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Wi-Fi6Eルータ TP-Link AXE5400購入

Wi-Fi6E を試してみたくなり、TP-Link AXE5

児童手当 認定請求書申請 2024 「請求者が養育をする18歳に達する日以降の最初の3月31日までの子の数」とは?

2024年に受給していない人には手紙が届くらしい。 電子申請も

Vision Proアプリ開発本 8/24、8/26に発売

Vision Proアプリ開発入門 P400が 8/24 に発売、V

Developer Strap が日本でも購入可能に

USアカウントでしか購入できなかった Vision Pro 用 De

Vision Pro カバーケースを買ってみた

[itemlink post_id="11629"]

→もっと見る

PAGE TOP ↑