Встановіть розташування в iPhone Simulator


124

Як я можу встановити місце розташування (як воно вибрано в сервісах CoreLocation) в iPhone Simulator?


Я додав метод для Xcode 6. stackoverflow.com/questions/19694205/…
Оммі

Хто-небудь встиг змусити це працювати в рідному реакторі, симуляторі?
Нікос

З iOS 13 beta 2 я бачив лише параметри "None" та "Custom". Хтось ще має цю проблему? stackoverflow.com/q/56733625/1364053
nr5

Відповіді:


122

Як і в iOS 5, тренажер має налаштоване розташування.

У меню Налагодження останній запис - "Місцезнаходження"; це дає підменю з:

  • Жоден
  • Спеціальне місцезнаходження
  • Магазини Apple
  • Apple
  • Місто на велосипеді
  • Пробіг міста
  • Шлях до автостради

Спеціальне місцезнаходження дозволяє вводити значення Lat / Long. Прогулянка на велосипеді, міський біг та автострада - це імітація місця, що рухається (звичайно, у Купертіно).

Звичайно, це нічого не допомагає при налагодженні для iOS 4 (або раніше); але це певне поліпшення!


де меню налагодження в тренажері IOS?
Lucky_girl

1
це працює, але це для меню налагодження на тренажері, а не для того, на xcode
Lance Samaria

2
Тепер для iOS-симулятора він розміщений у розділі "Особливості"
J. Saw

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. Тепер ви можете бачити своє місцезнаходження у районі імітації:введіть тут опис зображення

TextEdit не зберігає файл .gpx. Як мені це зробити?

2
збережіть його як .txt (або .xml), а потім перейменуйте на .gpx
beryllium

7
Дякую! Дуже легко, чудово працює. У випадку, якщо хтось інший використовує цей файл зразкового GPX у тексті, щоб ви могли його скопіювати та вставити: <? Xml version = "1.0"?> <Gpx version = "1.0" creator = "Ім'я"> <wpt lat = "" lon = ""> <ім'я> Офіс </name> </wpt> </gpx>
RyanG

1
Ти врятував мій день "+1".
SAHIL

3
чи можемо ми включити до цього час? Я хочу перевірити метод
startMonitoringSignificantLocationChanges

17

Під час зворотного дзвінка делегата я перевіряю, чи працюю я в тренажері ( #if TARGET_ IPHONE_SIMULATOR), і якщо так, я постачаю свій, попередньо переглянутий, Lat / Long Наскільки мені відомо, іншого шляху немає.


3
Починаючи з Xcode 4.2, тепер у Debugменю на тренажері є спосіб, використовуючи Locationзапис, який дозволяє встановити власні місця розташування або вибрати з деяких заздалегідь визначених атракціонів та місць.
progrmr

17

у меню iOS Simulator перейдіть до програми Налагодження -> Місцезнаходження -> Спеціальне місцезнаходження. Там ви можете встановити широту і довготу і тестувати додаток відповідно. Це працює з 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 Simulator з меню налагодження -> Місцезнаходження ->

  1. Жоден
  2. Спеціальне місцезнаходження
  3. Магазини Apple ...

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 Планета Земля, а потім надати тренажеру подати ці координати у ваш додаток.

Я написав повідомлення в блозі про те, як використовувати FTLocationSimulator, щоб легко переходити між декількома маршрутами під час тестування функцій розташування.


3

ви можете додати gpx файли до свого проекту та використовувати його:
редагувати схему> параметри> дозволити моделювання місцезнаходження> вибрати ім’я файлу, яке містить, наприклад:

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

необов'язково просто жорсткий код lat / lon значень, які повертаються менеджером локації. Це, однак, старий стиль.

тож ви додасте його не до тренажера, а до свого проекту Xcode.


2
Як я можу використовувати заздалегідь визначене місцеположення. Ви можете, будь ласка, пояснити детально ??? Я хочу знати про це.
Шреяш Махаджан

натисніть на xcode, а потім на товар> схеми> Редагувати схему> місце розташування
Mumthezir VP

1

На момент написання цього параметра параметр розташування для симулятора IOS переміщено до функцій -> Location -> Custom Location


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 ", доступному з верхньої правої кнопки на екрані" Вибрати комп'ютер для підключення до ", ви можете вибрати одне з чотирьох інших локацій, які слід використовувати." Отже, не дуже допомагають.
Саймон Вудсайд

bitbucket.org/gnucoop/xamarin-ios-simulator-enhancements Це допомагає безкоштовно моделювати місця
Pierre

0

Де ви хочете встановити своє місцезнаходження? ви можете використовувати mapkit api, щоб показати ваше місцезнаходження. дивіться на icodeblog.com для отримання більш детальної інформації про використання mapkit. Також ви можете зберігати потрібні кординати просто створити об’єкт CLLocation2D * розташування; location.longitude = бажане значення довготи; location.latitude = бажане значення широти;


Це було давнє питання, коли я був знову в SDK. Зараз я усвідомлюю, що в Симуляторі немає підтримки для автоматизації CoreLocation, що шкода.
Кліф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.