質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

バックグラウンド処理

バックグラウンド処理とは、マルチタスク環境において、ユーザーに対して前面に表示させている処理の裏側で実行させる処理のことを呼びます。バックグラウンド処理を行う事によって、ユーザーが他の作業に携わることが可能となります。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

3回答

1500閲覧

SecondViewController遷移時に、GPSバックグラウンド処理を継続したい

REPSOLCRF

総合スコア14

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

バックグラウンド処理

バックグラウンド処理とは、マルチタスク環境において、ユーザーに対して前面に表示させている処理の裏側で実行させる処理のことを呼びます。バックグラウンド処理を行う事によって、ユーザーが他の作業に携わることが可能となります。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/05/24 08:47

編集2018/05/25 07:27

イメージ説明
swiftでバイクラリーガイド用アプリを制作しています。
アプリはFirstViewController(方位、移動距離), SecondViewController(地図上に移動の軌跡を表示)の2つの画面から構成されています。

FirstViewControllerとSecondViewControllerはタブで切り替えとなっています。(プロジェクト開始時に選択)
FirstViewControllerでは既に方位、移動距離が実装できており、バックグラウンドでも動作しています。
しかし、SecondViewController(内容は現時点で空)にタブを切り替えた瞬間にバックグラウンドでの動作が止まってしまいます。

SecondViewControllerに切り替えてもFirstViewControllerで実装したGPSがバックグラウンドで動作するにはどのような方法がありますでしょうか?よろしくお願い致します。

(SecondViewControllerにも明示的にバックグラウンド処理の記載が必要かとも思い始めていますが、SecondViewControllerには具体的な処理を一切記載しない初期段階でもFirstViewControllerに記載したGPSのバックグラウンド処理が停止してしまい、対処が分かりません。。。)

(暫定対応)
アプリをシングルViewControllerで作り直し、一旦この問題を回避しました。
とはいえ、理想は2つのViewControllerで機能を分けたいので、回答をお持ちの方は引き続きお知恵を拝借いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

取り急ぎ、助言までに。
gpsをmanageするコードを
別クラスでsingletonで作成すれば、解決すると思います。

自分も似たようなことをコードで書いたことあるんですが、
その時の参考にしたサイトがすぐ見つけられなくて、、、
見つかったら、再投稿させていただきます。

再投稿しました。
自分の過去のプログラムを参考に
singletonで作成しようと試みましたが、うまくできませんでした。
singletonは言わば独立した別のものとして、独立してGPSだけ存在させることです。
observerパターンと組み合わせることで、他のviewでもデータをリアルタイムに取得できるようにできます。

singletonは作れませんでしたが、試したところ、viewが消えてもgpsは背景で動いてましたよ。
一応、サンプルプログラムを作ってみました。
viewが切り替わってもコンソール見ると、GPSは動いてて、GPSを新規取得・表示できているはずです。
マップに軌跡を表示するなら、何らかのデータ保存方法・クラスを用意すれば目的は達せられると思います。
参考になれば幸いです。

https://github.com/hameji/simpleGPS/

投稿2018/05/26 16:42

編集2018/05/27 12:37
hameji

総合スコア1380

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

REPSOLCRF

2018/05/26 22:06 編集

具体的な示唆ありがとうございございます。singletonで作成ですね!2つのViewControllerを外からコントロールするというイメージなのでしょうか?頂いたキーワードを元に私も調べてみます。感謝致します。
REPSOLCRF

2018/05/28 08:46

詳細な説明とサンプルプログラムまで作っていただきありがとうございます。 いただいた回答をベストアンサーにさせていただきます。 お忙しい中ご回答ありがとうございました!
guest

0

TabBarControllerにGPSの処理を書いてみてはどうでしょうか?

投稿2018/05/26 15:13

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

REPSOLCRF

2018/05/26 15:17

そのような方法があるのですね!調べてやってみます!回答ありがとうございました????
guest

0

アプリをシングルViewControllerで作り直し、一旦この問題を回避しました。
閲覧いただいた方、ありがとうございました。

投稿2018/05/26 04:22

REPSOLCRF

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問