İPhone Simulator'da konumu ayarlayın


124

İPhone Simulator'da konumu (CoreLocation hizmetlerinden alındığı gibi) nasıl ayarlayabilirim?


Xcode 6 için bir yöntem ekledim. Stackoverflow.com/questions/19694205/…
Ohmy

Bunun React native, simülatörde çalışmasını sağlayan var mı?
Nikos

İOS 13 beta 2 ile sadece "Yok" ve "Özel" seçeneklerini görebiliyordum. Bu sorunu yaşayan başka biri var mı? stackoverflow.com/q/56733625/1364053
nr5

Yanıtlar:


122

İOS 5 itibariyle, simülatörün yapılandırılabilir bir konumu vardır.

Hata Ayıklama menüsü altında, son giriş "Konum" dur; bu size aşağıdakileri içeren bir alt menü sağlar:

  • Yok
  • Özel Konum
  • Apple Mağazaları
  • elma
  • Şehir Bisiklet Turu
  • Şehir Koşusu
  • Otoyol Sürüşü

Özel Konum, bir Enlem / Boylam değeri girmenizi sağlar. Bisiklete binme, Şehir Koşusu ve Otoyol Sürüşü hareketli bir konumun simülasyonudur (elbette Cupertino'da).

Elbette bu, iOS 4 (veya öncesi) için hata ayıklamaya yardımcı olmuyor; ama bu kesin bir gelişme!


IOS simülatöründe hata ayıklama menüsü nerede?
Lucky_girl

1
bu işe yarıyor ancak simülatördeki hata ayıklama menüsü için değil xcode'daki değil
Lance Samaria

2
İOS simülatörü için artık "Özellikler" altında yer almaktadır
J. Saw

85
  1. İPhone Simulator'da proje çalıştır
  2. Aşağıdaki dosyayı takip eden TextEdit dosyasını oluşturun, örneğin MyOffice olarak adlandırın. Uzantıyı .gpx olarak yapın görüntü açıklamasını buraya girin

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

  3. Simülasyon alanında Xcode'da seçin Add GPX File to Project...görüntü açıklamasını buraya girin

  4. Oluşturulan dosyayı menüden projeye ekleyin.
  5. Artık konumunuzu Simülasyon alanında görebilirsiniz:görüntü açıklamasını buraya girin

TextEdit, .gpx dosyasını kaydetmez. Nasıl yaparım?

2
.txt (veya .xml) olarak kaydedin ve sonra .gpx olarak yeniden adlandırın
berilyum

7
Teşekkürler! Çok kolay, harika çalışıyor. Bunu başka birinin kullanması durumunda, örnek GPX dosyasını metin olarak kopyalayıp yapıştırabilirsiniz: <? Xml version = "1.0"?> <Gpx version = "1.0" creator = "Name"> <wpt lat = "" lon = ""> <name> Office </name> </wpt> </gpx>
RyanG

1
Günümü "+1" kurtardın.
SAHIL

3
buna zaman ekleyebilir miyiz? StartMonitoringSignificantLocationChanges yöntemini test etmek istiyorum
Durgaprasad

17

Temsilci geri aramamda, bir simülatörde ( #if TARGET_ IPHONE_SIMULATOR) çalışıp çalışmadığımı kontrol ediyorum ve öyleyse, kendi, önceden bakılmış Lat / Long'umu tedarik ediyorum. Bildiğim kadarıyla başka yolu yok.


3
Xcode 4.2'den başlayarak Debug, simülatördeki menü altında, Locationözel bir konum ayarlamaya veya önceden tanımlanmış bazı sürüşler ve konumlar arasından seçim yapmaya izin veren girişi kullanan bir yol var .
progrmr

17

iOS Simulator menüsünde, Debug -> Location -> Custom Location'a gidin. Orada enlem ve boylamı ayarlayabilir ve uygulamayı buna göre test edebilirsiniz. Bu, mapkit ve ayrıca CLLocationManager ile çalışır.


10

XCode 11.3 ve öncesi:

Debug -> Location -> Custom Location

görüntü açıklamasını buraya girin

XCode 11.4+:

Features -> Location -> Custom Location

görüntü açıklamasını buraya girin

Hangi XCode sürümüne sahip olduğunuzu öğrenmek için

$ /usr/bin/xcodebuild -version

5

İOS 5 öncesinde bunu kodla yapabilirsiniz:

Bu pasajı, @implementationsahte başlık ve konum verilerime ihtiyacım olan sınıfın hemen öncesinde kullanıyorum .

#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

İOS 5'ten sonra, konumun sürekli olarak güncellenmesi için projenize bunun gibi bir GPX dosyası eklemeniz yeterlidir 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>

Gpx verileri için temel dosya oluşturmak için GPSies.com'u kullanıyorum . Yine de biraz temizlik gerekiyor.

Simülatörü çalıştırıp dosyanızı seçerek etkinleştirin


(kaynak: castleandersen.dk )


4

Hata Ayıklama Menüsünden iOS Simulator uygulamasını açın -> Konum ->

  1. Yok
  2. Özel Konum
  3. Apple Mağazaları ...

4

Kolayca yapabilirsiniz paylaşmak istenilen konuma gelen MacOS Maps uygulaması için Xcode simülatörü .

  1. Xcode'dan uygulamayı genellikle yaptığınız gibi simülatörde çalıştırın.
  2. MacOS'ta haritalar uygulamasını açın (kolaylık sağlamak için genellikle hem simülatör hem de harita uygulamasına sahip olduğum yeni bir Masaüstü oluştururum).
  3. Haritaların (macOS) içinde, haritadaki herhangi bir noktayı uzun tıklayın veya haritanın ihtiyacınız olan yere bir raptiye çizmesine izin vermek için bir yer arayın.
  4. Pime tıklayın, ardından bilgi (i) simgesine tıklayın ( resme bakın ).
  5. Bilgi görünümünün sağ üst köşesindeki paylaş simgesine tıklayın.
  6. Konumu simülatör ile paylaşın ( resme bakın ).
  7. Onaylayın ve keyfini çıkarın :)

Bu, konumun coğrafi olarak nerede olduğunu anlayarak (ör. Coğrafi sınırları test etmek için) ve çalışma zamanında nereye gideceğine karar vererek (ör. Hata ayıklama ve ince ayar yapmak için) bazı konumları hızlı bir şekilde test etmenize olanak tanır.

Bunu MacOS Catalina 10.15.4 ve Xcode 11.4'te test etti.


3

Tür millet FutureTap adresinden ücretsiz FTLocationSimulator mevcut yaptık GitHub'dan . Örneğin Google Earth kullanarak bir test rotası hazırlamanıza ve ardından simülatörün bu koordinatları uygulamanıza beslemesine olanak tanır.

Konum özelliklerinin test edilmesi sırasında birden çok rota arasında kolayca geçiş yapmak için FTLocationSimulator'ün nasıl kullanılacağı hakkında bir blog yazısı yazdım .


3

projenize gpx dosyaları ekleyebilir ve kullanabilirsiniz:
şemayı düzenle> seçenekler> konum simülasyonuna izin ver > aşağıdakileri içeren dosya adını seçin:

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

isteğe bağlı olarak sadece konum yöneticisi tarafından döndürülen enlem / boylam değerlerini kodlayın. Yine de bu eski tarz.

bu yüzden onu simülatöre değil, Xcode projenize eklemelisiniz.


2
Önceden tanımlanmış konumu nasıl kullanabilirim. lütfen detaylı olarak açıklar mısınız ??? Bunu bilmek istiyorum.
Shreyash Mahajan


1

Bunun yazılmasından itibaren, IOS simülatörü için konum seçeneği Özellikler -> Konum -> Özel Konum'a taşınmıştır.


0

Geç olsun güç olmasın :)

Uygulamaya Sahte konum göndermenize izin veren bu iSimulate ile az önce karşılaştım . Çözüm ücretsiz DEĞİLDİR.

> 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.

Her neyse, bunu almayı planlıyorum. yakında daha fazla güncellenecek!


Geliştiricilerle az önce iletişime geçtim: "" Bağlanılacak Bilgisayarı Seçin "ekranındaki sağ üst düğmeden erişilebilen iSimulate Seçeneklerinde, kullanmak için diğer dört konumdan birini seçebilirsiniz." Yani, pek yardımcı olmuyor.
Simon Woodside

bitbucket.org/gnucoop/xamarin-ios-simulator-enhancements Bu, konumların ücretsiz simülasyonuna yardımcı olur
Pierre

0

Konumunuzu nerede ayarlamak istiyorsunuz? konumlarınızı göstermek için mapkit api'yi kullanabilirsiniz. mapkit'in nasıl kullanılacağı hakkında daha fazla ayrıntı için icodeblog.com adresine bakın. Ayrıca istediğiniz koordinatları saklayabilirsiniz, sadece bir nesne oluşturun CLLocation2D * konumu; location.longitude = istediğiniz boylam değeri; location.latitude = istediğiniz enlem değeri;


Bu, SDK'ya yeni olduğum zamandan beri eski bir soruydu. Simülatörde CoreLocation'ı otomatikleştirmek için hiçbir destek olmadığını şimdi anlıyorum ki bu utanç verici.
Cliff
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.