見出し画像

【徒然iOS】気ままにUIKit57〜端末の位置情報を利用準備〜

概要

このマガジンは四十を過ぎたおっさんが、

を参考にStoryboardでiOSアプリを完全に趣味で楽しんでいるだけな記事を気ままに上げてます。

今回

をハイ、レッツゴ🕺

前準備

念の為、

  1. バックアップ

  2. 新しいクラス

  3. ビューコントローラの追加

  4. イニシャルビューの変更

をいつも通りやってから本題へ💃

てな感じで〜〜〜

本題

GPSを内蔵しているiPhoneやiPadがあれば、ソースコードで端末の位置情報を利用することができる。

ってことなので早速〜〜〜〜

⒈位置情報を利用するための準備

を追加しろってことらしい👀
開いて〜〜〜
+を押す〜〜〜
追加しました🕺

⒉位置情報サービスのON、OFFを確認する

//位置情報サービスが利用できるかを確認
CLLocationManager.locationServicesEnabled()

メソッドはこれらしい👀

⒊位置情報の利用許可を確認する

CLLocationManager.authorizationStatus()

メソッドはこれらしい👀

ステータスまとめ

ふむふむ🕺

ステータスがCLAuthorizationStatus.NotDetermined(未設定)のときに以下のメソッドを呼び出すと、設定を変更する画面をポップアップ表示

//「このAppの使用中のみ許可」に変更する画面をポップアップ表示する。
testManager.requestWhenInUseAuthorization()

//「常に許可」に変更する画面をポップアップ表示する
testManager.requestAlwaysAuthorization()

⒋コードを組み込む

//
//  ViewController.swift
//
import UIKit
import CoreLocation
class ViewController: UIViewController,CLLocationManagerDelegate {
    var testManager:CLLocationManager!
    //最初からあるメソッド
    override func viewDidLoad() {
        super.viewDidLoad()
        testManager = CLLocationManager()
    }
    //画面表示後の呼び出しメソッド
    override func viewDidAppear(animated: Bool) {
        if(CLLocationManager.locationServicesEnabled() == true){
            switch CLLocationManager.authorizationStatus() {
            //未設定の場合
            case CLAuthorizationStatus.NotDetermined:
                testManager.requestWhenInUseAuthorization()
            //機能制限されている場合
            case CLAuthorizationStatus.Restricted:
                alertMessage("位置情報サービスの利用が制限されている利用できません。「設定」⇒「一般」⇒「機能制限」")
            //「許可しない」に設定されている場合
            case CLAuthorizationStatus.Denied:
                alertMessage("位置情報の利用が許可されていないため利用できません。「設定」⇒「プライバシー」⇒「位置情報サービス」⇒「アプリ名」")
            //「このAppの使用中のみ許可」に設定されている場合
            case CLAuthorizationStatus.AuthorizedWhenInUse:
                //位置情報の取得を開始する。
                testManager.startUpdatingLocation()
            //「常に許可」に設定されている場合
            case CLAuthorizationStatus.AuthorizedAlways:
                //位置情報の取得を開始する。
                testManager.startUpdatingLocation()
            }
        } else {
            //位置情報サービスがOFFの場合
            alertMessage("位置情報サービスがONになっていないため利用できません。「設定」⇒「プライバシー」⇒「位置情報サービス」")
        }
    }
    //メッセージ出力メソッド
    func alertMessage(message:String) {
        let aleartController = UIAlertController(title: "注意", message: message, preferredStyle: .Alert)
        let defaultAction = UIAlertAction(title:"OK", style: .Default, handler:nil)
        aleartController.addAction(defaultAction)
        presentViewController(aleartController, animated:true, completion:nil)
        
    }
}

とりあえず、

import CoreLocation

して〜〜〜

インポートした〜〜〜

今回のコード(まとめ)

class MapCurrentResidenceViewController: UIViewController,CLLocationManagerDelegate {
    var myManager:CLLocationManager!
    //最初からあるメソッド
    override func viewDidLoad() {
        super.viewDidLoad()
        myManager = CLLocationManager()
    }
    //画面表示後の呼び出しメソッド
    override func viewDidAppear(_ animated: Bool) {
        if(CLLocationManager.locationServicesEnabled() == true){
            switch CLLocationManager.authorizationStatus() {
                //未設定の場合
            case CLAuthorizationStatus.notDetermined:
                myManager.requestWhenInUseAuthorization()
                //機能制限されている場合
            case CLAuthorizationStatus.restricted:
                alertMessage(message: "位置情報サービスの利用が制限されている利用できません。「設定」⇒「一般」⇒「機能制限」")
                //「許可しない」に設定されている場合
            case CLAuthorizationStatus.denied:
                alertMessage(message: "位置情報の利用が許可されていないため利用できません。「設定」⇒「プライバシー」⇒「位置情報サービス」⇒「アプリ名」")
                //「このAppの使用中のみ許可」に設定されている場合
            case CLAuthorizationStatus.authorizedWhenInUse:
                //位置情報の取得を開始する。
                myManager.startUpdatingLocation()
                //「常に許可」に設定されている場合
            case CLAuthorizationStatus.authorizedAlways:
                //位置情報の取得を開始する。
                myManager.startUpdatingLocation()
            }
        } else {
            //位置情報サービスがOFFの場合
            alertMessage(message: "位置情報サービスがONになっていないため利用できません。「設定」⇒「プライバシー」⇒「位置情報サービス」")
        }
    }
    //メッセージ出力メソッド
    func alertMessage(message:String) {
        let aleartController = UIAlertController(title: "注意", message: message, preferredStyle: .alert)
        let defaultAction = UIAlertAction(title:"OK", style: .default, handler:nil)
        aleartController.addAction(defaultAction)
        present(aleartController, animated:true, completion:nil)
        
    }
}
非推奨の部分があって、警告は出るけど
実行できた〜〜〜〜🕺

ブラッシュアップ

今回は準備なんで、今回も特に無し💦

Apple公式

どうやらiOS14.0からダメになってるらしい💦

さて、次回は

をレッツゴする🕺

いいなと思ったら応援しよう!