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.