2017-12-16 1 views
1

Geofence과 사용자의 현재 위치를 동시에 처리하는 데 문제가 있습니다.didEnterRegion이 호출 될 때 didUpdateLocations가 더 이상 호출되지 않습니다.

앱이 작동하기 시작하면 didUpdateLocations이 완벽하게 호출되며 사용자 위치는 원하는대로 유지됩니다. didUpdateLocations 더 이상 발생하지 않습니다

func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {} 

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 

그러나 즉시 didEnterRegion 대표가 호출되는 것으로,. 서로 관련되어 있습니까?

는 또한 didEnterRegion가 호출되는 후 상태가 변경되지

func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {} 

를 확인했습니다. 또한 didEnterRegion

locationManager?.startUpdatingLocation() 

을 추가했지만 여전히 didUpdateLocations 불려갑니다 없습니다.

문제가있는 곳을 아는 사람이 있습니까? 지역의 위치를 ​​추적하는 방법은 무엇입니까?

PS : 업데이트 위치가 자동으로 EnterRegion가 호출 될 때 정지 자동 ExitRegion이

업데이트 호출 될 때 시작 : 나는 xCode9, 아이폰 OS (10), SWIFT를 사용 4. 모두 EnterRegionExitRegion이 비어 I 이제는 로그를 인쇄하십시오. 앞으로 서버에 일부 데이터를 게시 할 것입니다.

+0

나는 내 대답을 편집했습니다. 이것은 매우 이상하게 보입니다.'didEnterRegion','didExitRegion'에 대한 코드를 공유하고'startMonitoring'을 수행 한 후에 호출 할 것을 제안합니다. 또한이 테스트를 거친 iOS 버전은 무엇입니까? – Honey

+0

질문에 대한 답변으로 내 질문을 업데이트했습니다. – Mina

답변

2

didUpdateLocations는 더 이상 실행되지 않습니다. 그들은 함께 무엇입니까?

NO!here

여기서 didChangeAuthorizationStatus은 의미가 없습니다. 인증은 동일하게 유지됩니다. 방금 멈췄다.

정상적인 추적은 regionMonitoring에 영향을 미치지 않습니다. 그것은 운영 체제에 의해 관리됩니다.

  • 아마도 백그라운드에서 너무 많은 시간이 지나서 정상 추적이 중지되었을 수 있습니다. falsepausesLocationUpdatesAutomatically을 설정하는 것이 방지하려면 기본은 또한 true

  • allowsBackgroundLocationUpdatestrue로 설정되어 있는지 확인합니다. ITS의 링크에서 :

업데이트는 응용 프로그램이 이에 해당 이벤트를 처리하기 위해 깨어되는 것을 응용 프로그램을 방지 일시 중단 된 경우에만 중지합니다.

내 생각에 지역을 입력하면 더 이상 앱이 일시 중지되지 않고 다시 추적을 시작할 수 있으므로 앱이 일시 중지되지 않도록해야합니다. 당신이 할 수있는 걸 추적하려면 UIApplication.shared.backgroundTimeRemaining을 사용하십시오. this example

  • 시뮬레이터로 테스트하지 마십시오. 앱의 라이프 사이클이 조금 엉망이되면서. this post from an Apple employee을 참조하십시오. Mac에서 연결을 끊고 logging을 사용해야 만 실제 경험을 가질 수 있습니다.
  • this question을 확인하십시오. 지오 펜스의 한계점을 설명해주었습니다. 그때 이후로 애플이 얼마나 개선되었는지 잘 모르겠습니다.

솔직히 말해서 나는 여전히 단순한 실수를 저지른 채 어떻게 든 당신의 위치를 ​​얻는다고 생각합니다. ...

+0

글쎄, 나는''pausesLocationUpdatesAutomatically'''를 이미 거짓으로 설정했습니다. – Mina

+0

이상한 일은'''EnterRegion'''이 호출 될 때 위치를 자동으로 멈추고'''ExitRegion'''이 호출 될 때 자동으로 시작됩니다. – Mina

+0

덧붙여 말한 것은 불가능합니다. 즉, didEnter가 호출되면 추적을 중지합니다. 어떻게 든 stopUpdatingLocation을 호출해야합니다. 전체 프로젝트에서 검색하십시오. 그렇지 않다면 iOS 버그를 발견했습니다. – Honey

관련 문제