백그라운드에서 위치 정보 얻기
백그라운드에서 위치 정보 얻기
자신의 필기로 삼다
추기 (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.swiftimport 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
Reference
이 문제에 관하여(백그라운드에서 위치 정보 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/chilitreat/items/b91f32ff074b1923690c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
}
}
Reference
이 문제에 관하여(백그라운드에서 위치 정보 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/chilitreat/items/b91f32ff074b1923690c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)