iPhone Simulator에서 위치 설정


124

iPhone Simulator에서 위치 (CoreLocation 서비스에서 선택됨)를 어떻게 설정할 수 있습니까?


Xcode 6에 대한 메소드를 추가했습니다. stackoverflow.com/questions/19694205/…
— Ohmy

누구든지 React 네이티브 시뮬레이터에서 이것을 작동시킬 수 있었습니까?
— Nikos 2015

iOS 13 베타 2에서는 "없음"및 "사용자 지정"옵션 만 볼 수있었습니다. 이 문제가있는 다른 사람이 있습니까? stackoverflow.com/q/56733625/1364053
— nr5

답변:


122

iOS 5부터 시뮬레이터에는 구성 가능한 위치가 있습니다.

디버그 메뉴에서 마지막 항목은 "위치"입니다. 다음과 같은 하위 메뉴가 제공됩니다.

  • 없음
  • 맞춤 위치
  • 애플 스토어
  • 사과
  • 도시 자전거 타기
  • 시티 런
  • 고속도로 드라이브

사용자 지정 위치를 사용하면 위도 / 경도 값을 입력 할 수 있습니다. 자전거 타기, City Run 및 Freeway Drive는 움직이는 위치의 시뮬레이션입니다 (물론 쿠퍼 티노에서).

물론 이것은 iOS 4 (또는 이전 버전)에 대한 디버깅에 도움이되지 않습니다. 하지만 확실히 개선되었습니다!


IOS 시뮬레이터의 디버그 메뉴는 어디에 있습니까?
— Lucky_girl

1
이 작품하지만 대한의 시뮬레이터에 디버그 메뉴 하지 엑스 코드의 하나
— 랜스 사마리아

2
아이폰 OS 시뮬레이터를 들어, 지금은 "기능"에 있습니다
— J. 톱

85
  1. iPhone Simulator에서 프로젝트 실행
  2. 다음 파일을 TextEdit 파일로 생성하고 예를 들어 MyOffice라고합니다. 확장자를 .gpx로 만드십시오. 여기에 이미지 설명 입력

    <?xml version="1.0"?> <gpx version="1.0" creator="MyName"> <wpt lat="53.936166" lon="27.565370"> <name>MyOffice</name> </wpt> </gpx>

  3. 시뮬레이션 영역의 Xcode에서 선택 Add GPX File to Project...여기에 이미지 설명 입력

  4. 메뉴에서 생성 된 파일을 프로젝트에 추가합니다.
  5. 이제 Simulate 영역에서 위치를 볼 수 있습니다.여기에 이미지 설명 입력

텍스트 편집기는 .gpx 파일을 저장하지 않습니다. 내가 어떻게하는지?

2
.txt (또는 .xml)로 저장 한 다음 .gpx
— beryllium으로

7
감사! 매우 쉽고 훌륭하게 작동합니다. 다른 사람이이 샘플 GPX 파일을 텍스트로 사용하는 경우 복사하여 붙여 넣을 수 있습니다. <? xml version = "1.0"?> <gpx version = "1.0"creator = "Name"> <wpt lat = "" lon = ""> <name> Office </ name> </ wpt> </ gpx>
— RyanG

1
내 하루 "+1"을 저장했습니다.
— SAHIL

3
여기에 시간을 포함 할 수 있습니까? 나는 startMonitoringSignificantLocationChanges 방법을 테스트 할
— Durgaprasad

17

델리게이트 콜백에서 시뮬레이터 ( #if TARGET_ IPHONE_SIMULATOR) 에서 실행 중인지 확인하고 실행중인 경우 미리 조회 된 Lat / Long을 제공합니다. 내 지식으로는 다른 방법이 없습니다.


3
Xcode 4.2부터 이제 Debug시뮬레이터 의 메뉴 아래 Location에 사용자 지정 위치를 설정하거나 미리 정의 된 일부 승차 및 위치에서 선택할 수 있는 항목을 사용할 수 있는 방법이 있습니다.
— progrmr

17

iOS 시뮬레이터 메뉴에서 디버그-> 위치-> 사용자 지정 위치로 이동합니다. 여기에서 위도와 경도를 설정하고 그에 따라 앱을 테스트 할 수 있습니다. 이것은 mapkit 및 CLLocationManager에서도 작동합니다.


10

XCode 11.3 이하 :

Debug -> Location -> Custom Location

여기에 이미지 설명 입력

XCode 11.4 이상 :

Features -> Location -> Custom Location

여기에 이미지 설명 입력

사용중인 XCode 버전을 확인하려면

$ /usr/bin/xcodebuild -version

5

iOS 5 이전에는 코드로 할 수 있습니다.

@implementation가짜 제목과 위치 데이터가 필요한 수업 직전에이 스 니펫을 사용 합니다.

#if (TARGET_IPHONE_SIMULATOR)
@interface MyHeading : CLHeading
    -(CLLocationDirection) magneticHeading;
    -(CLLocationDirection) trueHeading;
@end

@implementation MyHeading
    -(CLLocationDirection) magneticHeading { return 90; }
    -(CLLocationDirection) trueHeading { return 91; }
@end

@implementation CLLocationManager (TemporaryLocationFix)
- (void)locationFix {
    CLLocation *location = [[CLLocation alloc] initWithLatitude:55.932 longitude:12.321];
    [[self delegate] locationManager:self didUpdateToLocation:location fromLocation:nil];

    id heading  = [[MyHeading alloc] init];
    [[self delegate] locationManager:self didUpdateHeading: heading];
}

-(void)startUpdatingHeading {
    [self performSelector:@selector(locationFix) withObject:nil afterDelay:0.1];
}

- (void)startUpdatingLocation {
    [self performSelector:@selector(locationFix) withObject:nil afterDelay:0.1];
}
@end
#endif

iOS 5 이후에는 다음과 같이 프로젝트에 GPX 파일을 포함하기 만하면 위치가 지속적으로 업데이트됩니다. Hillerød.gpx :

<?xml version="1.0"?>
<gpx version="1.1" creator="Xcode"> 
    <wpt lat="55.93619760" lon="12.29131930"></wpt>
    <wpt lat="55.93625770" lon="12.29108330"></wpt>
    <wpt lat="55.93631780" lon="12.29078290"></wpt>
    <wpt lat="55.93642600" lon="12.29041810"></wpt>
    <wpt lat="55.93653420" lon="12.28998890"></wpt>
    <wpt lat="55.93660630" lon="12.28966710"></wpt>
    <wpt lat="55.93670240" lon="12.28936670"></wpt>
    <wpt lat="55.93677450" lon="12.28921650"></wpt>
    <wpt lat="55.93709900" lon="12.28945250"></wpt>
    <wpt lat="55.93747160" lon="12.28949540"></wpt>
    <wpt lat="55.93770000" lon="12.28966710"></wpt>
    <wpt lat="55.93785620" lon="12.28977440"></wpt>
    <wpt lat="55.93809660" lon="12.28988170"></wpt>
    <wpt lat="55.93832490" lon="12.28994600"></wpt>
    <wpt lat="55.93845710" lon="12.28996750"></wpt>
    <wpt lat="55.93856530" lon="12.29007480"></wpt>
    <wpt lat="55.93872150" lon="12.29013910"></wpt>
    <wpt lat="55.93886570" lon="12.28975290"></wpt>
    <wpt lat="55.93898590" lon="12.28955980"></wpt>
    <wpt lat="55.93910610" lon="12.28919500"></wpt>
    <wpt lat="55.93861330" lon="12.28883020"></wpt>
    <wpt lat="55.93845710" lon="12.28868000"></wpt>
    <wpt lat="55.93827680" lon="12.28850840"></wpt>
    <wpt lat="55.93809660" lon="12.28842250"></wpt>
    <wpt lat="55.93796440" lon="12.28831520"></wpt>
    <wpt lat="55.93780810" lon="12.28810070"></wpt>
    <wpt lat="55.93755570" lon="12.28790760"></wpt>
    <wpt lat="55.93739950" lon="12.28775730"></wpt>
    <wpt lat="55.93726730" lon="12.28767150"></wpt>
    <wpt lat="55.93707500" lon="12.28760710"></wpt>
    <wpt lat="55.93690670" lon="12.28734970"></wpt>
    <wpt lat="55.93675050" lon="12.28726380"></wpt>
    <wpt lat="55.93649810" lon="12.28713510"></wpt>
    <wpt lat="55.93625770" lon="12.28687760"></wpt>
    <wpt lat="55.93596930" lon="12.28679180"></wpt>
    <wpt lat="55.93587310" lon="12.28719940"></wpt>
    <wpt lat="55.93575290" lon="12.28752130"></wpt>
    <wpt lat="55.93564480" lon="12.28797190"></wpt>
    <wpt lat="55.93554860" lon="12.28833670"></wpt>
    <wpt lat="55.93550050" lon="12.28868000"></wpt>
    <wpt lat="55.93535630" lon="12.28900190"></wpt>
    <wpt lat="55.93515200" lon="12.28936670"></wpt>
    <wpt lat="55.93505580" lon="12.28958120"></wpt>
    <wpt lat="55.93481550" lon="12.29001040"></wpt>
    <wpt lat="55.93468320" lon="12.29033230"></wpt>
    <wpt lat="55.93452700" lon="12.29063270"></wpt>
    <wpt lat="55.93438280" lon="12.29095450"></wpt>
    <wpt lat="55.93425050" lon="12.29121200"></wpt>
    <wpt lat="55.93413040" lon="12.29140520"></wpt>
    <wpt lat="55.93401020" lon="12.29168410"></wpt>
    <wpt lat="55.93389000" lon="12.29189870"></wpt>
    <wpt lat="55.93372170" lon="12.29239220"></wpt>
    <wpt lat="55.93385390" lon="12.29258530"></wpt>
    <wpt lat="55.93409430" lon="12.29295010"></wpt>
    <wpt lat="55.93421450" lon="12.29320760"></wpt>
    <wpt lat="55.93433470" lon="12.29333630"></wpt>
    <wpt lat="55.93445490" lon="12.29350800"></wpt>
    <wpt lat="55.93463520" lon="12.29374400"></wpt>
    <wpt lat="55.93479140" lon="12.29410880"></wpt>
    <wpt lat="55.93491160" lon="12.29419460"></wpt>
    <wpt lat="55.93515200" lon="12.29458090"></wpt>
    <wpt lat="55.93545250" lon="12.29494570"></wpt>
    <wpt lat="55.93571690" lon="12.29505300"></wpt>
    <wpt lat="55.93593320" lon="12.29513880"></wpt>
    <wpt lat="55.93617360" lon="12.29522460"></wpt>
    <wpt lat="55.93622170" lon="12.29537480"></wpt>
    <wpt lat="55.93713510" lon="12.29505300"></wpt>
    <wpt lat="55.93776000" lon="12.29378700"></wpt>
    <wpt lat="55.93904600" lon="12.29531040"></wpt>
    <wpt lat="55.94004350" lon="12.29552500"></wpt>
    <wpt lat="55.94023570" lon="12.29561090"></wpt>
    <wpt lat="55.94019970" lon="12.29591130"></wpt>
    <wpt lat="55.94017560" lon="12.29629750"></wpt>
    <wpt lat="55.94017560" lon="12.29670520"></wpt>
    <wpt lat="55.94017560" lon="12.29713430"></wpt>
    <wpt lat="55.94019970" lon="12.29754200"></wpt>
    <wpt lat="55.94024780" lon="12.29816430"></wpt>
    <wpt lat="55.94051210" lon="12.29842180"></wpt>
    <wpt lat="55.94084860" lon="12.29820720"></wpt>
    <wpt lat="55.94105290" lon="12.29799270"></wpt>
    <wpt lat="55.94123320" lon="12.29777810"></wpt>
    <wpt lat="55.94140140" lon="12.29749910"></wpt>
    <wpt lat="55.94142550" lon="12.29726310"></wpt>
    <wpt lat="55.94147350" lon="12.29687690"></wpt>
    <wpt lat="55.94155760" lon="12.29619020"></wpt>
    <wpt lat="55.94161770" lon="12.29576110"></wpt>
    <wpt lat="55.94148550" lon="12.29531040"></wpt>
    <wpt lat="55.94093270" lon="12.29522460"></wpt>
    <wpt lat="55.94041600" lon="12.29518170"></wpt>
    <wpt lat="55.94056020" lon="12.29398010"></wpt>
    <wpt lat="55.94024780" lon="12.29352950"></wpt>
    <wpt lat="55.94001940" lon="12.29335780"></wpt>
    <wpt lat="55.93992330" lon="12.29325050"></wpt>
    <wpt lat="55.93969490" lon="12.29299300"></wpt>
    <wpt lat="55.93952670" lon="12.29277840"></wpt>
    <wpt lat="55.93928630" lon="12.29260680"></wpt>
    <wpt lat="55.93915410" lon="12.29232780"></wpt>
    <wpt lat="55.93928630" lon="12.29202740"></wpt>
    <wpt lat="55.93933440" lon="12.29174850"></wpt>
    <wpt lat="55.93947860" lon="12.29116910"></wpt>
    <wpt lat="55.93965890" lon="12.29095450"></wpt>
    <wpt lat="55.94001940" lon="12.29061120"></wpt>
    <wpt lat="55.94041600" lon="12.29084730"></wpt>
    <wpt lat="55.94076450" lon="12.29101890"></wpt>
    <wpt lat="55.94080060" lon="12.29065410"></wpt>
    <wpt lat="55.94086060" lon="12.29031080"></wpt>
    <wpt lat="55.94092070" lon="12.28990310"></wpt>
    <wpt lat="55.94099280" lon="12.28975290"></wpt>
    <wpt lat="55.94119710" lon="12.28986020"></wpt>
    <wpt lat="55.94134130" lon="12.28998890"></wpt>
    <wpt lat="55.94147350" lon="12.29007480"></wpt>
    <wpt lat="55.94166580" lon="12.29003190"></wpt>
    <wpt lat="55.94176190" lon="12.28938810"></wpt>
    <wpt lat="55.94183400" lon="12.28893750"></wpt>
    <wpt lat="55.94194220" lon="12.28850840"></wpt>
    <wpt lat="55.94199030" lon="12.28835820"></wpt>
    <wpt lat="55.94215850" lon="12.28859420"></wpt>
    <wpt lat="55.94250700" lon="12.28883020"></wpt>
    <wpt lat="55.94267520" lon="12.28893750"></wpt>
    <wpt lat="55.94284350" lon="12.28902330"></wpt>
    <wpt lat="55.94304770" lon="12.28915210"></wpt>
    <wpt lat="55.94325200" lon="12.28925940"></wpt>
    <wpt lat="55.94348030" lon="12.28953830"></wpt>
    <wpt lat="55.94366060" lon="12.28966710"></wpt>
    <wpt lat="55.94388890" lon="12.28975290"></wpt>
    <wpt lat="55.94399700" lon="12.28994600"></wpt>
    <wpt lat="55.94379280" lon="12.29065410"></wpt>
    <wpt lat="55.94364860" lon="12.29095450"></wpt>
    <wpt lat="55.94350440" lon="12.29127640"></wpt>
    <wpt lat="55.94340820" lon="12.29155540"></wpt>
    <wpt lat="55.94331210" lon="12.29198450"></wpt>
    <wpt lat="55.94315590" lon="12.29269260"></wpt>
    <wpt lat="55.94310780" lon="12.29318610"></wpt>
    <wpt lat="55.94301170" lon="12.29361530"></wpt>
    <wpt lat="55.94292760" lon="12.29408740"></wpt>
    <wpt lat="55.94290350" lon="12.29436630"></wpt>
    <wpt lat="55.94287950" lon="12.29453800"></wpt>
    <wpt lat="55.94283140" lon="12.29533190"></wpt>
    <wpt lat="55.94274730" lon="12.29606150"></wpt>
    <wpt lat="55.94278340" lon="12.29621170"></wpt>
    <wpt lat="55.94280740" lon="12.29649060"></wpt>
    <wpt lat="55.94284350" lon="12.29679100"></wpt>
    <wpt lat="55.94284350" lon="12.29734890"></wpt>
    <wpt lat="55.94308380" lon="12.29837890"></wpt>
    <wpt lat="55.94315590" lon="12.29852910"></wpt>
    <wpt lat="55.94263920" lon="12.29906550"></wpt>
    <wpt lat="55.94237480" lon="12.29910850"></wpt>
    <wpt lat="55.94220660" lon="12.29915140"></wpt>
    <wpt lat="55.94208640" lon="12.29902260"></wpt>
    <wpt lat="55.94196620" lon="12.29887240"></wpt>
    <wpt lat="55.94176190" lon="12.29794970"></wpt>
    <wpt lat="55.94156970" lon="12.29760640"></wpt>
</gpx>

저는 GPSies.com 을 사용하여 gpx 데이터에 대한 기본 파일을 만듭니다. 그래도 약간의 정리가 필요합니다.

시뮬레이터를 실행하고 파일을 선택하여 활성화


(출처 : castleandersen.dk )


4

디버그 메뉴-> 위치->에서 iOS 시뮬레이터 애플리케이션을 엽니 다.

  1. 없음
  2. 맞춤 위치
  3. 애플 스토어 ...

4

macOS Maps 애플리케이션 에서 Xcode 시뮬레이터로 원하는 위치 를 쉽게 공유 할 수 있습니다 .

  1. Xcode에서 평소처럼 시뮬레이터에서 애플리케이션을 실행합니다.
  2. macOS에서지도 애플리케이션을 엽니 다 (편의를 위해 일반적으로 시뮬레이터와지도 애플리케이션이 모두있는 새 데스크톱을 만듭니다).
  3. 지도 (macOS) 내에서지도의 아무 지점이나 길게 클릭하거나지도에서 필요한 곳에 핀을 그릴 수있는 장소를 검색합니다.
  4. 핀을 클릭 한 다음 정보 (i) 아이콘을 클릭합니다 ( 이미지 참조 ).
  5. 정보보기의 오른쪽 상단에서 공유 아이콘을 클릭합니다.
  6. 시뮬레이터와 위치를 공유합니다 ( 이미지 참조 ).
  7. 확인하고 즐기십시오 :)

이를 통해 일부 위치를 빠르게 테스트하고 위치가 지리적으로 어디에 있는지 (예 : 지오 펜싱 테스트 용) 이해하고 런타임시 다음에 이동할 위치 (예 : 디버깅 및 미세 조정)를 결정할 수 있습니다.

MacOS Catalina 10.15.4 및 Xcode 11.4에서 이것을 테스트했습니다.


3

FutureTap 의 친절한 사람들 은 FTLocationSimulator를 GitHub 에서 무료로 제공했습니다 . 예를 들어 Google Earth를 사용하여 테스트 경로를 준비한 다음 시뮬레이터가 이러한 좌표를 앱에 제공하도록 할 수 있습니다.

위치 기능을 테스트하는 동안 FTLocationSimulator를 사용하여 여러 경로를 쉽게 전환하는 방법에 대한 블로그 게시물을 작성했습니다 .


3

프로젝트에 gpx 파일을 추가하고 사용할 수 있습니다.
구성표 편집> 옵션> 위치 시뮬레이션 허용> 다음을 포함하는 파일 이름 선택 :

<?xml version="1.0"?>
<gpx version="1.1" creator="Xcode"> 
    <wpt lat="41.92296" lon="-87.63892"></wpt>
</gpx>

선택적으로 위치 관리자가 반환하는 위도 / 경도 값을 하드 코딩합니다. 그래도 이것은 오래된 스타일입니다.

시뮬레이터에 추가하지 않고 Xcode 프로젝트에 추가합니다.


2
사전 정의 된 위치를 어떻게 사용할 수 있습니까? 자세히 설명 해주세요 ??? 그것에 대해 알고 싶습니다.
— Shreyash 마하 잔

xcode를 클릭 한 다음 제품> 계획> 계획 편집> 핵심 위치
— Mumthezir VP 2015

1

이 글을 쓰는 시점에서 IOS 시뮬레이터의 위치 옵션이 기능-> 위치-> 사용자 지정 위치로 이동되었습니다.


0

안하는 것보다 늦게하는 것이 낫다 :)

방금 앱에 가짜 위치를 보낼 수있는 iSimulate 를 발견했습니다 . 솔루션은 무료가 아닙니다.

> Q: How does iSimulate work? 

> A: When added to your project, the iSimulate
> SDK library creates a listening server
> on your iPhone Simulator that waits
> for a connection from an iPhone/iPod
> running the iSimulate client. When
> such connection is established, the
> iSimulate client running on your
> iPhone/iPod captures all data from the
> accelerometer sensor, the touch
> events, the location and device ID and
> streams them to the server. The
> iSimulate SDK library then recreates
> all input events synthetically. This
> is entirely transparent to your
> application and does not interfere
> with your application's functionality.

어쨌든, 나는 이것을 얻을 계획입니다. 곧 업데이트됩니다!


방금 개발자에게 연락했습니다. ""연결할 컴퓨터 선택 "화면의 오른쪽 상단 버튼에서 액세스 할 수있는 iSimulate 옵션에서 사용할 다른 4 개 위치 중 하나를 선택할 수 있습니다." 그래서 정말 도움이되지 않습니다.
— Simon Woodside

bitbucket.org/gnucoop/xamarin-ios-simulator-enhancements 이 무료로 시뮬레이션 위치를하는 데 도움이
— 피에르

0

어디에 위치를 설정 하시겠습니까? mapkit api를 사용하여 위치를 표시 할 수 있습니다. 맵킷 사용 방법에 대한 자세한 내용은 icodeblog.com을 참조하십시오. 또한 원하는 좌표를 저장할 수 있습니다. CLLocation2D * location; location.longitude = 원하는 경도 값; location.latitude = 원하는 위도 값;


이것은 SDK를 처음 접했을 때의 오래된 질문이었습니다. 이제 시뮬레이터에서 CoreLocation 자동화에 대한 지원이 없다는 것을 깨달았습니다. 이는 부끄러운 일입니다.
— Cliff
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.