2011-02-03 7 views
4

저는 처음에는 iPhone 앱 개발에 초보자입니다. 그러나 포 그라운드에 있지 않을 때마다 기본적으로 위치를 업데이트하는 앱을 만들려고합니다. 그래서 내가 언제 그 사람이 있었는지를 매핑 할 수 있습니다./그녀는 앱을 실행합니다. startMonitoringSignificantLocationChange를 사용할 수 있다고 생각했는데, 이유는 응용 프로그램이 백그라운드에있을 때 작동하기 때문입니다. 그러나 매우 정확하지 않습니다. 나는 정말로 시간 간격을 설정할 수 있기를 원한다. 그래서 예를 들어, 10 분마다 위치가 업데이트 될 것이지만, 나는 그것에 대해 갈 방법이 없다. 어떤 아이디어?시작 위치 변경 모니터링 중요한 변경 사항?

+0

사용자가 앱을 시작할 때 사용자의 위치를 ​​추적하려면 앱이 시작될 때 위치 서비스를 시작하는 것이 좋습니다. –

+0

포인트는 앱에 있지 않을 때 사용자의 위치를 ​​추적하는 것입니다 (예 : 주머니에 휴대 전화를 걸어 다니는 경우). 그러면 앱이로드 할 때의 위치의지도가 표시됩니다. – evanskis

답변

3

당신은 startUpdatingLocation 사용하지만 당신의 CLLocationManager의 속성이 설정되어 있는지 확인 수 :

  1. 사용 distanceFilter을 현명 : 대신 위치 업데이트에 대한 모든 X 분을 확인의 바로 업데이트 할 위치 관리자에게 당신은 200/300 미터마다 (사용자가 도보 또는 운전 중인지 여부에 달려 있습니다).

  2. desiredAccuracy뿐만 아니라 약 100 미터 (헤더 파일에 선언 된 상수를 보면)로 설정해야합니다 그래서 당신의 응용 프로그램은 배터리를 소모하지 않습니다 ..

앱이 재발되지 않습니다 죽은 경우에도 배경에 머무르는 한, 위치 관리자의 대리인 인 의미는 locationManager:didUpdateToLocation:fromLocation:을 계속 받게됩니다.

희망이 있습니다.

5

여기 당신이

하나의 옵션이 지속적인 위치 업데이트를 필요로 응용 프로그램을 선언하는 것입니다 애플 사이트에서 background location documentation을 읽어보십시오.

응용 프로그램은 연속 배경 위치를 업데이트를 필요로 자신을 선언 할 수 있습니다. 전경과 배경 모두에서 정기적으로 위치 업데이트를 필요로하는 응용 프로그램은 그 의 Info.plist 파일에 에게 UIBackgroundModes 키를 추가하고 위치 문자열을 포함하는 배열에 이 키의 값을 설정해야합니다. 이 옵션은 특정 서비스 (예 : 서비스)와 같은 서비스를 제공하는 응용 프로그램을 대상으로하며 사용자에게 항상 자신의 위치 인 을 알리는 것을 포함하는 응용 프로그램 용으로 지정된 입니다. 응용 프로그램의 Info.plist 파일에있는 키가 있으면 시스템에서 필요에 따라 응용 프로그램을 실행하여 배경을 허용해야한다고 시스템에 알립니다.

그러나 이것은이 가장 힘 배고픈 옵션임을 인식해야하며 일반적으로 가장 바람직한 옵션으로 간주되고, 앱이 사용자가 걸어 위치를 추적 할 수 있다는 점에서 원하는 결과를해야합니다 . 그러나 누군가의 산책을 추적하려고한다면, 이것은 당신이해야 할 일입니다.

매우입니다. 당신은 단지 10 분 정도마다 업데이트를 받고 싶다고 말합니다. 이 경우이 전략을 사용하지 말고 중요한 위치 업데이트를 사용하는 것이 가장 좋습니다. 이것들은 앱이 닫히지 만 앱을 다시 시작 하겠지만 말한 것처럼 매우 정확하지는 않습니다.앱을 더 잘 만드는 방법은 앱이 중요한 위치 업데이트를 얻는 즉시 정상적인 위치 업데이트를 시작하는 것입니다. 앱이 다시 일시 중지되기 전에 위치를 개선 할 수있는 충분한 시간을 확보해야합니다 (업데이트를 더 보내야합니다).

완벽하지는 않지만 중요한 (예 : 셀 타워) 변경을 사용하는 것보다 낫습니다.