Atur lokasi di iPhone Simulator

124

Bagaimana cara mengatur lokasi (seperti yang diambil di layanan CoreLocation) di Simulator iPhone?

Jurang
sumber
Saya menambahkan metode untuk Xcode 6. stackoverflow.com/questions/19694205/…
Ohmy
Adakah yang berhasil membuat ini bekerja di React native, simulator?
Nikos
Dengan iOS 13 beta 2, saya hanya bisa melihat opsi "Tidak Ada" dan "Khusus". Apakah ada orang lain yang mengalami masalah ini? stackoverflow.com/q/56733625/1364053
nr5

Jawaban:

122

Mulai iOS 5, simulator memiliki lokasi yang dapat dikonfigurasi.

Di bawah menu Debug, entri terakhir adalah "Lokasi"; ini memberi Anda sub menu dengan:

  • Tidak ada
  • Lokasi Kustom
  • Toko Apple
  • apel
  • City Bicycle Ride
  • City Run
  • Jalan Tol

Lokasi Khusus memungkinkan Anda memasukkan nilai Lintang / Bujur. Naik sepeda, City Run, dan Freeway Drive adalah simulasi lokasi bergerak (tentu saja di Cupertino).

Tentu saja, ini tidak membantu debugging untuk iOS 4 (atau sebelumnya); tapi itu peningkatan yang pasti!

Robert Altman
sumber
di mana menu debug di simulator IOS?
Lucky_girl
1
ini berfungsi tetapi untuk menu debug di simulator bukan yang di xcode
Lance Samaria
2
Untuk simulator iOS, sekarang berada di bawah "Features"
J. Saw
85
  1. Jalankan proyek di iPhone Simulator
  2. Buat di file TextEdit file berikut, sebut saja MyOffice misalnya. Jadikan ekstensi sebagai .gpx masukkan deskripsi gambar di sini

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

  3. Pilih di Xcode di area Simulasikan Add GPX File to Project...masukkan deskripsi gambar di sini

  4. Tambahkan file yang dibuat dari menu ke proyek.
  5. Sekarang Anda dapat melihat lokasi Anda di area Simulasikan:masukkan deskripsi gambar di sini
berilium
sumber
TextEdit tidak menyimpan file .gpx. Bagaimana saya melakukannya?
2
simpan sebagai .txt (atau .xml) dan kemudian ganti namanya menjadi .gpx
beryllium
7
Terima kasih! Sangat mudah, berfungsi dengan baik. Jika orang lain menggunakan ini, berikut contoh file GPX dalam teks sehingga Anda dapat menyalin & menempelkannya: <? Xml version = "1.0"?> <Gpx version = "1.0" creator = "Name"> <wpt lat = "" lon = ""> <name> Kantor </name> </wpt> </gpx>
RyanG
1
Anda menyelamatkan hari "+1" saya.
SAHIL
3
bisakah kita memasukkan waktu dalam hal ini? Saya ingin menguji metode startMonitoringSignificantLocationChanges
Durgaprasad
17

Dalam panggilan balik delegasi saya, saya memeriksa untuk melihat apakah saya menjalankan simulator ( #if TARGET_ IPHONE_SIMULATOR) dan jika demikian, saya menyediakan Lat / Bujur saya sendiri yang telah dicari sebelumnya. Sepengetahuan saya, tidak ada cara lain.

Ben Gottlieb
sumber
3
Dimulai dengan Xcode 4.2, sekarang ada cara di bawah Debugmenu pada simulator menggunakan Locationentri yang memungkinkan pengaturan lokasi khusus atau memilih dari beberapa wahana dan lokasi yang telah ditentukan.
progrmr
17

di menu iOS Simulator, buka Debug -> Lokasi -> Lokasi Kustom. Di sana Anda dapat mengatur garis lintang dan bujur dan menguji aplikasi yang sesuai. Ini berfungsi dengan mapkit dan juga dengan CLLocationManager.

Ravi Chokshi
sumber
10

XCode 11.3 dan sebelumnya:

Debug -> Location -> Custom Location

masukkan deskripsi gambar di sini

XCode 11.4+:

Features -> Location -> Custom Location

masukkan deskripsi gambar di sini

Untuk mengetahui versi Xcode yang Anda miliki

$ /usr/bin/xcodebuild -version
Samuel Hulla
sumber
5

Pra iOS 5 Anda bisa melakukannya dalam kode:

Saya menggunakan potongan ini tepat sebelum @implementationkelas di mana saya membutuhkan informasi heading dan lokasi palsu saya.

#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

Setelah iOS 5 cukup sertakan file GPX dalam proyek Anda seperti ini agar lokasi diperbarui terus menerus 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>

Saya menggunakan GPSies.com untuk membuat file dasar untuk data gpx. Sedikit pembersihan diperlukan.

Aktifkan dengan menjalankan simulator dan memilih file Anda


(sumber: castleandersen.dk )

Kastil Niels
sumber
4

Buka aplikasi iOS Simulator dari Menu Debug -> Lokasi ->

  1. Tidak ada
  2. Lokasi Kustom
  3. Toko Apple ...
Abo3atef
sumber
4

Anda dapat dengan mudah membagikan lokasi yang diinginkan dari aplikasi macOS Maps ke simulator Xcode .

  1. Dari Xcode, jalankan aplikasi di simulator seperti yang biasa Anda lakukan.
  2. Buka aplikasi peta di macOS (untuk kenyamanan saya biasanya membuat Desktop baru tempat saya memiliki simulator dan aplikasi peta).
  3. Di dalam peta (macOS), klik lama pada titik mana pun di peta, atau cari tempat agar peta dapat menggambar pin di tempat yang Anda butuhkan.
  4. Klik pada pin, lalu pada ikon informasi (i) ( lihat gambar ).
  5. Di kanan atas tampilan informasi, klik ikon bagikan.
  6. Bagikan lokasi dengan simulator ( lihat gambar ).
  7. Konfirmasikan dan nikmati :)

Ini memungkinkan Anda menguji beberapa lokasi dengan cepat, memiliki pemahaman tentang di mana lokasi secara geografis (misalnya untuk menguji geofencing), dan memutuskan pada waktu proses ke mana harus pergi selanjutnya (misalnya untuk debugging dan fine-tuning barang).

Menguji ini di MacOS Catalina 10.15.4 dan Xcode 11.4.

AlessandroSteri
sumber
3

Orang-orang baik di FutureTap telah membuat FTLocationSimulator tersedia secara gratis di GitHub . Ini memungkinkan Anda menyiapkan rute uji menggunakan misalnya Google Earth, dan kemudian meminta simulator memasukkan koordinat ini ke aplikasi Anda.

Saya telah menulis posting blog tentang cara menggunakan FTLocationSimulator untuk dengan mudah beralih di antara beberapa rute selama pengujian fitur lokasi.

Claus Broch
sumber
3

Anda dapat menambahkan file gpx ke proyek Anda dan menggunakannya:
edit skema> opsi> izinkan simulasi lokasi> pilih nama file yang berisi misalnya:

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

opsional, cukup hardcode nilai lintang / bujur yang dikembalikan oleh pengelola lokasi. Ini gaya lama.

jadi Anda tidak akan menambahkannya ke simulator, tetapi ke proyek Xcode Anda.

Zsolt
sumber
2
Bagaimana saya bisa menggunakan lokasi yang telah ditentukan. bisakah kamu menjelaskan secara rinci ??? Saya ingin tahu tentang itu.
Shreyash Mahajan
klik pada xcode lalu produk> skema> Edit skema> lokasi inti
Mumthezir VP
1

Saat tulisan ini dibuat, opsi lokasi untuk simulator IOS telah dipindahkan ke Fitur -> Lokasi -> Lokasi Khusus

pengusaha licik
sumber
0

Lebih baik terlambat daripada tidak sama sekali :)

Saya baru saja menemukan iSimulate ini yang memungkinkan Anda mengirim lokasi Palsu ke aplikasi. Solusinya TIDAK gratis.

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

Bagaimanapun, saya berencana untuk mendapatkan ini. akan segera diperbarui!

prakash
sumber
Saya baru saja menghubungi pengembangnya: "Dalam Opsi iSimulate, dapat diakses dari tombol kanan atas di layar" Pilih Komputer untuk Terhubung ", Anda dapat memilih salah satu dari empat lokasi lain untuk digunakan." Jadi, tidak banyak membantu kok.
Simon Woodside
bitbucket.org/gnucoop/xamarin-ios-simulator-enhancements Ini membantu mensimulasikan lokasi secara gratis
Pierre
0

Di mana Anda ingin menyetel lokasi Anda? Anda dapat menggunakan api mapkit untuk menunjukkan lokasi Anda. lihat icodeblog.com untuk detail lebih lanjut tentang cara menggunakan mapkit. Anda juga dapat menyimpan koordinat yang Anda inginkan hanya dengan membuat lokasi objek CLLocation2D *; location.longitude = nilai bujur yang Anda inginkan; location.latitude = nilai garis lintang yang Anda inginkan;

Rahul Vyas
sumber
Ini adalah pertanyaan lama sejak saya baru mengenal SDK. Saya sekarang menyadari tidak ada dukungan untuk mengotomatiskan CoreLocation di Simulator, yang memalukan.
Tebing