백그라운드에서 위치 정보 얻기

7987 단어 SwiftXcode8ios10

백그라운드에서 위치 정보 얻기


자신의 필기로 삼다

추기 (2016/10/15)


백그라운드에서 가져온 위치 정보를Firebase의realtimeDB로 보내기
이메일 주소 인증(Auth)을 추가한 후 완전히 움직이지 않았다
원인 조사에서 알면 부기된 일에 설명해라!
까닭
Firebase의 DB 룰을 가지고 놀았기 때문에.
- 이 기사의viewController에 인증용viewController가 추가되었기 때문에
- 인증 불량

추기 (2016/10/21)


심심한 이유로 해결했어요.
info.plist의 Provacy-Location Always Usage Description 개발
Location Always Usage Description으로 덮어썼습니다.
이 일대의 권한계는 농락해서는 안 된다.

컨디션


iOS10 Xcode8 Swift3

초기 설정


Backgroud Fetch에서 대상 선택 ->backgroudMode

info.plist에 Privacy-Location Always Usage Description 추가
Value에 권한 경고에 표시되는 텍스트 입력

ViewController.swift


ViewController.swift
import UIKit
import CoreLocation

class ViewController: UIViewController,CLLocationManagerDelegate {    
    var myLocationManager: CLLocationManager!
    var myLatitude       : String = ""
    var myLongitude      : String = ""

    //Success get location
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        if let location = manager.location {
            self.myLatitude  = "\(location.coordinate.latitude)"
            self.myLongitude = "\(location.coordinate.longitude)"

            print("\(self.myLatitude):\(self.myLongitude)")

        }
    }

    //Cant get location
    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
        print("error")
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        let status = CLLocationManager.authorizationStatus()
        if status == CLAuthorizationStatus.restricted || status == CLAuthorizationStatus.denied {
            return
        }

        myLocationManager = CLLocationManager()
        myLocationManager.delegate = self

        //
        if status == CLAuthorizationStatus.notDetermined {
            myLocationManager.requestAlwaysAuthorization()
            myLocationManager.startMonitoringSignificantLocationChanges()
        }else{
            myLocationManager.startMonitoringSignificantLocationChanges()
        }

        //
        if !CLLocationManager.locationServicesEnabled() {
            return
        }

        myLocationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
        myLocationManager.distanceFilter = 100   
    }
}

참고 자료


백그라운드에서 위치 정보 얻기
http://qiita.com/shngt/items/6687edeb055113e5fd70
[iOS 9 지원] 알고 싶은 위치 정보 주변의 변경점
http://qiita.com/koogawa/items/024b00173561ed06ce9a

좋은 웹페이지 즐겨찾기