[iPhone] GPSなど位置情報をCoreLocationを使って取得

GPSに代表される位置情報はスマホでは重要なファクターです。iOSでの位置情報の取得をXcodeで実装してみます。


Swift 5.1
Xcode 11.4.1

 

CoreLocation

 
位置情報を取得するにはCoreLocationのFrameworkを使います。
GPS/GNSSの衛星測位だけでなくWiFi、携帯電話通信網やデジタルコンパス、Bluetoothなどを使用して位置を測定しています。

衛星測位システムでは、日本の準天頂衛星みちびき、GPS、GLONASS、ガリレオにも対応しています。

iPhone11からはUWB(超広帯域無線)を使用した空間認識用「U1チップ」を搭載していてこれも室内などの近距離測位が可能です。

 

サンプルコード

 
実装自体はそれほど複雑ではありませんが、それなりに気をつけることやiOSのバージョンアップで変更されたところがあります。
 
ViewController.swift

 
尚、これだけコピへしても動きません、以下の設定が必要です。

 

framework等の設定

 
faramework:

CoreLocation.framework の設定
「TARGETS」「Build Phases」「Link Binary With Libraries」から「+」をクリックしてCoreLocation.frameworkを追加します。
 

 
CoreLocationを検索して「Add」
 

 
frameworkが追加されました。
 

 
ユーザー許可:
Privacyの許可を尋ねる設定を Info.plist にします。
 

 
直接ファイルに記述する方が早いかもしれません
 

 
ユーザー許可には2種類あります。

  • NSLocationWhenInUseUsageDescription
    • アプリ使用中のみ許可
  • NSLocationAlwaysAndWhenInUseUsageDescription
    • 常に許可


ここではアプリ使用中のみの設定でやっていますが、バックグラウンドでの測位ログを記録する場合は常に許可を得ることになります。
 
測位精度:

  • kCLLocationAccuracyBestForNavigation
    • ナビゲーションアプリのための高い精度と追加のセンサーも使用する
  • kCLLocationAccuracyBest
    • 最高レベルの精度
  • kCLLocationAccuracyNearestTenMeters
    • 10メートル以内の精度
  • kCLLocationAccuracyHundredMeters
    • 100メートル以内の精度
  • kCLLocationAccuracyKilometer
    • キロメートルでの精度
  • kCLLocationAccuracyThreeKilometers
    • 3キロメートルでの精度

高精度にするためにはより多くの消費電力が必要となるので、精度を上げすぎるとバッテリーの減りが早くなるので注意しないといけません。

 

測位テスト

 
測位は実機を使わないと最終的には確認できませんが、とりあえずの設定確認としてはSimulatorでもある程度できます。
 

  • Simulatorを起動
  • デバッグエリアに「Simulate Location」の矢印をクリック
  • 特定のロケーション、あるいはカスタム位置情報を設定

 
 
References:
Core Location | Apple Developer Documentation
CLLocationManager – Core Location | Apple Developer
CLLocationAccuracy – Core Location | Apple Developer
requestWhenInUseAuthorization() – Apple Developer
requestAlwaysAuthorization() – Apple Developer
distanceFilter – CLLocationManager | Apple Developer

一人でアプリ開発の限界を感じたら

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンライン・スクールがいいと思います。


TECH ACADEMY
自宅にいながら1時間でプログラミング基礎を習得

こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン



とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約20,000名の受講生と300社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。


無料で転職まで
これはiOSアプリ限定ではありませんが無料です
その代わり就職することを前提にしたスクールでエンジニアになって職を得たいのであれば手っ取り早いかもしれません


誤字脱字、意味不明などのご意見は 謙: e-mail まで
ブックマークしておくと便利です このエントリーをはてなブックマークに追加
Twitter:


シェアする

  • このエントリーをはてなブックマークに追加

フォローする