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

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

ただいまの
回答率

90.51%

  • Swift

    7265questions

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

  • Xcode

    4112questions

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

  • GPS

    50questions

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

  • バックグラウンド処理

    10questions

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

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

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 206

REPSOLCRF

score 6

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

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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+1

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

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

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/27 06:50 編集

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

    キャンセル

  • 2018/05/28 17:46

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

    キャンセル

+1

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/27 00:17

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

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    xcodeでの画面サイズ変更方法

    swiftでサンプルコードを写しているのですが、参考書を今まで放置してたのでxcodeのバージョンが違うので画面サイズ変更の方法がわからないです。 simulatorでの表示画面

  • 解決済

    iOS(swift)におけるSpeechToText(watson)の実装について

    watson-developer-cloudのiOS-sdkを使用して簡単なSpeechToTextを使用した簡単なアプリを開発しようとしてます。 mainStoryboad上の

  • 解決済

    UIScrollViewのStoryboards上でのY座標がおかしい

    UIScrollViewの設定値が、どうしても最上部がマイナス値になってしまいます。 contentOffsetの値を、実行中に y:-56 とかにするとうまく表示されるので

  • 解決済

    push遷移とmodal遷移を混在させる

    まず以下のようにそれぞれの画面間をpush遷移させると左の画面→真ん中の画面→右の画面というふうに画面が遷移していきます。 今度は左の画面から右の画面に以下のようにm

  • 解決済

    ACCESS クエリでの一部重複?の除外方法について

    前提・実現したいこと こんにちは、質問タイトルが適格でないかもしれませんが宜しくお願いいたします。 通販事業をしており、商品の仕入から販売までのデータベースをACCESSの

  • 解決済

    UberのiOSアプリで使用しているMapについて

    UberのiOSアプリで使用しているMapについて これはどの地図APIを使用しているかご存知の方 いらっしゃいますでしょうか。 今位置情報を元にしたFoursquare

  • 解決済

    switでクイズアプリを作りたい!

    swiftで四択のクイズアプリを作っています。 ユーティリティーエリアからviewcontrollerを新しく取り出したのですが、その新しいviewcontrollerの中に

  • 受付中

    Monaca プッシュ通知

    Monaca マネジメントAPIを用いて、外部サーバーより特定のデバイス(今回はデバッガー)にプッシュ通知しようとしております。 以下の流れで試しているのですが、どうしてもエラー

同じタグがついた質問を見る

  • Swift

    7265questions

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

  • Xcode

    4112questions

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

  • GPS

    50questions

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

  • バックグラウンド処理

    10questions

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