Saya mencoba men-debug beberapa perilaku tidak konsisten yang saya lihat dalam aplikasi yang mendapatkan data utamanya dari internet. Saya tidak melihat masalah dalam simulator, hanya pada perangkat, jadi saya ingin mereproduksi lingkungan jaringan dan konektivitas dalam simulator.
Apakah ada cara menonaktifkan jaringan di simulator?
(Saya terhubung ke Mac untuk kode jarak jauh, tidak ada pilihan lain sekarang, jadi menonaktifkan jaringan OS bukan pilihan).
ios
iphone
debugging
networking
ios-simulator
Paul Hammond
sumber
sumber
Jawaban:
Saya rasa tidak — simulator berbagi apa pun koneksi jaringan yang digunakan OS. Saya mengajukan laporan bug Radar tentang simulasi kondisi jaringan beberapa waktu lalu; Anda mungkin mempertimbangkan untuk melakukan hal yang sama.
sumber
Gunakan sangkar Faraday sederhana untuk memblokir atau membatasi level sinyal RF eksternal.
Anda bisa membuatnya sendiri dengan aluminium foil. Bukaan harus lebih kecil dari panjang gelombang layanan data Anda jika itu yang ingin Anda blokir.
800 Mhz memiliki panjang gelombang 37 cm (14 "), 1900 Mhz memiliki panjang gelombang 16 cm (6").
Ini berfungsi lebih baik dengan perangkat yang sebenarnya daripada dengan simulator karena Mac sulit untuk bekerja ketika di dalam kandang Faraday ;-)
sumber
Iya. Di Xcode, Anda dapat membuka
Xcode
item menu ->Open Developer Tools
->More Developer Tools
dan mengunduh " Alat Tambahan untuk Xcode ", yang akan memiliki Network Link Conditioner.Dengan menggunakan alat ini, Anda dapat mensimulasikan berbagai skenario jaringan (seperti kehilangan 100%, 3G, DNS latensi tinggi, dan banyak lagi) dan Anda juga dapat membuat yang khusus.
sumber
Satu-satunya cara untuk menonaktifkan jaringan pada simulator iOS yang saya tahu adalah menggunakan alat seperti Little Snitch atau Hands Off . Dengan mereka Anda dapat menolak / memblokir koneksi jaringan keluar dan masuk. Anda dapat mengaturnya sehingga hanya memblokir koneksi dari aplikasi simulator. Bekerja seperti firewall.
sumber
Matikan saja WiFi Anda di Mac OSX, ini manjur!
sumber
Unduh paket alat tambahan (Network Link Conditioner)
Deskripsi
Contoh di Sierra:
sumber
Hanya memperbarui jawaban ke tanggal saat ini. Karena Xcode 4 (?) Ada panel preferensi yang
/Applications/Utilities
dipanggilNetwork Link Conditioner
. Entah Anda menggunakan salah satu profil yang ada atau Anda membuat profil khusus Anda sendiri dengan 0 Kbps Atas / Downlink dan 100% turun.sumber
Network Link Conditioner
merupakan alat resmi Apple, dan ini benar-benar gratis, dibandingkan denganLittle Snitch
atauHands Off
.Karena Xcode tidak menyediakan fitur seperti itu, Anda pasti akan menggunakan beberapa aplikasi / alat pihak ketiga. Mematikan jaringan MAC juga akan membantu mematikan jaringan iOS Simulator.
Anda dapat mematikan internet MAC Anda dari "
System Preferences...
"> "Network
" dan mematikan sumber jaringan yang diinginkan.Untuk mematikan sumber internet MAC Ethernet Anda:
Untuk mematikan sumber internet WiFi MAC Anda (jika MAC Anda ada di Wifi Internet):
sumber
Anda dapat membatasi koneksi internet dengan aplikasi pihak ke-3 seperti
Charles: http://www.charlesproxy.com/
Tekan perintah + shift + T pada Mac untuk mengatur pembatasan.
sumber
Satu ide atau tambalan yang mungkin gila:
Hanya beralih bendera jangkauan jaringan
Ini adalah kode yang saya gunakan untuk mengaktifkan runtime flag saya dengan memicu 'Simulator Memory Warning' dan yang SEPENUHNYA AMAN, hanya pastikan kode berada di Mode DEBUG saja
sumber
false
adalah ide bagus. Tidak ada pemasangan, dan saya dapat terus bekerja dari jarak jauh! Terima kasih.isInternetAvailable
didefinisikan ?!Anda dapat menggunakan Little Snitch untuk memotong lalu lintas jaringan ke setiap proses individual, termasuk yang berjalan pada simulator iOS. Dengan begitu Anda dapat menjaga koneksi internet dan memutuskan koneksi aplikasi yang sedang berjalan.
sumber
Dengan Xcode 8.3 dan iOS 10.3:
Pastikan untuk memasukkan
@available(iOS 10.3, *)
di bagian atas file test suite Anda.Atau Anda bisa "Aktifkan Mode Pesawat" jika Anda mau.
Setelah Siri mematikan wifi atau menyalakan Mode Pesawat, Anda harus mengabaikan dialog Siri yang mengatakan bahwa Siri membutuhkan internet. Ini dilakukan dengan menekan tombol beranda, yang menolak dialog dan kembali ke aplikasi Anda.
sumber
Ada dua cara untuk menonaktifkan internet iOS Simulator:
Ini cara paling sederhana
sumber
Jika aplikasi Anda terhubung ke domain tertentu, Anda bisa menambahkannya ke
/etc/hosts
file Anda dan rutekan ke IP yang tidak ada di jaringan lokal Anda ... Untuk aplikasi itu akan sama seperti jika tidak ada koneksi internet atau server tidak dapat dijangkau.tambahkan baris berikut:
atau gunakan
127.0.0.1
jika Anda tidak menjalankan server web pada mesin lokal Anda.sumber
Anda bisa menggunakan OHHTTPStubs dan mematikan permintaan jaringan agar URL tertentu gagal.
sumber
Solusi sederhana adalah membuat Mode Pesawat untuk Mac Anda. Berikut ini cara melakukannya:
Ketika Anda ingin menghidupkan kembali jaringan, cukup pilih Otomatis dari menu dropdown Lokasi, dan klik Terapkan
sumber
Saya sarankan Anda menggunakan aplikasi Proxy Charles di Mac
Ini memungkinkan Anda menggunakan
Bandwidth Throttle
fitur yang dibuat hanya untuk menyesuaikan koneksi jaringanStar / Stop Throttling ⌘ command+ T
Pengaturan Throttle ... ⌘ command+ T+⇧ shift
sumber
Anda bisa menonaktifkan jaringan host saja!
sumber
Jika Anda memiliki setidaknya 2 jaringan wifi untuk terhubung adalah cara yang sangat sederhana adalah dengan menggunakan bug di simulator iOS:
Bugnya adalah bahwa simulator mencoba menggunakan jaringan (IP?) Yang belum terhubung.
Sampai Anda meluncurkan ulang simulator - ia tidak akan memiliki internet (bahkan jika jaringan wifi pertama yang Anda sambungkan memiliki koneksi internet), sehingga Anda dapat menjalankan (cmd-R) dan menghentikan (cmd-) proyek untuk menggunakan simulator tanpa koneksi, tetapi Mac Anda akan terhubung.
Kemudian, jika Anda perlu menjalankan simulator yang terhubung - cukup keluar dan luncurkan.
sumber
Anda dapat menggunakan kondisioner tautan jaringan di Mac Anda. Anda dapat mengunduhnya dari situs web pengembang apel. Itu harus tersedia di mana kita mendapatkan versi Xcode dan iOS yang lebih lama. Dengan kondisioner jaringan ini Anda dapat mengubah kekuatan jaringan dari wifi menjadi tidak ada jaringan.
Juga ketika Anda menginstal kondisioner jaringan itu akan diinstal dalam preferensi sistem.
sumber