iPhone 実機で位置情報を任意に設定

  • 2017.12.30
  • iOS
NO IMAGE

以下の環境でやってみました。

  • iPhone 7
  • iOS 11.2.1
  • Xcode 9.2

基本的には下記で紹介されている手順でいけます。

iPhoneの実機で位置情報をシミュレーションする方法
https://qiita.com/narikei/items/c20d95532130e8fcdeb7

適当な Xcode プロジェクト作成

まず、適当な Single View Application を作成し、AppDelegate.swift の func applicationWillResignActive(_ application: UIApplication) に下記を追加します。

func applicationWillResignActive(_ application: UIApplication) {
    self.backgroundTaskID = application.beginBackgroundTask(){
        [weak self] in
        application.endBackgroundTask((self?.backgroundTaskID)!)
        self?.backgroundTaskID = UIBackgroundTaskInvalid
    }
}

ソースコード追加はこれだけです。

GPX ファイル作成

次に、位置情報を模擬するための GPX ファイルを作成します。例えば下記のサイトで。

GPX Generator
https://gpxgenerator.com

地図上にピンを立てて [Generate GPX] ボタンをクリックすると、XML ファイルが表示されます。

<?xml version="1.0"?>
<gpx version="1.1" creator="gpxgenerator.com">
<wpt lat="xx.xxxxxxxxxxxxxx" lon="y.yyyyyyyyyyyyyyy">
    <ele>4.02</ele>
    <time>2017-12-30T01:49:26Z</time>
</wpt>
</gpx>

実際には下記の情報のみでよさそうです。適当なファイル名を付けて拡張子を gpx として保存します。

<?xml version="1.0"?>
<gpx version="1.1">
<wpt lat="xx.xxxxxxx" lon="yyy.yyyyyyy">
</wpt>
</gpx>

Xcode へ GPX ファイル追加

GPX ファイルは Xcode のメニューの Debug – Simulate Location – Add GPX File to Project… で追加できるはずなのですが、Xcode 9.2 では反映されませんでした。どうやら Xcode のプロジェクトナビゲータに手動で登録しないといけないようです。

GPX File does not load iOS Xcode
https://stackoverflow.com/questions/43428073/gpx-file-does-not-load-ios-xcode

I noticed the same issue (Xcode 9.2). If you are adding the .gpx file through the status bar at the bottom and it's not appearing:

Drag and drop the .gpx file directly in your project navigator window on the left (where all your program files are)

and it should then appear in the drop-down simulator icon.

その後、Xcode のメニューの Debug – Simulate Location に、追加した GPX ファイルの名前が表示されるようになります。

iOS 実機へ GPX ファイルの内容適用

作成した Single View Application を iOS 実機で実行させます。

Xcode のメニューの Debug – Simulate Location で、追加した GPX ファイルの名前を選択します。

iOS 実機の地図アプリで表示される現在地が、現実のものではなく GPX ファイルで指定したものになっていることを確認します。

この位置情報は Single View Application がバックグラウンドになっても、終了しても有効です。

現実の位置情報に戻したい場合は、iOS 実機を再起動させる必要があります。

iOSカテゴリの最新記事