क्या आईओएस सिम्युलेटर में नेटवर्क को अक्षम करना संभव है?


430

मैं कुछ असंगत व्यवहार को डीबग करने का प्रयास कर रहा हूं जो मैं एक एप्लिकेशन में देख रहा हूं जो इंटरनेट से इसका प्राथमिक डेटा प्राप्त करता है। मैं सिर्फ डिवाइस पर सिम्युलेटर में मुद्दों को नहीं देखता, इसलिए मैं सिम्युलेटर में नेटवर्क और कनेक्टिविटी वातावरण को पुन: पेश करना चाहता हूं।

क्या सिम्युलेटर में नेटवर्क को अक्षम करने का कोई तरीका है?

(मैं मैक को दूरस्थ रूप से कोड से कनेक्ट कर रहा हूं, अभी कोई अन्य विकल्प नहीं है, इसलिए ओएस नेटवर्क को अक्षम करना एक विकल्प नहीं है)।


मुझे लगता है कि आप इसी तरह के परीक्षण चलाने के लिए CharlesProxy का उपयोग भी कर सकते हैं
Honey

जवाबों:


273

मुझे डर है कि जो भी ओएस कनेक्शन का उपयोग कर रहा है वह सिम्युलेटर शेयर करता है। मैंने थोड़ी देर पहले नेटवर्क स्थितियों के अनुकरण के बारे में एक रडार बग रिपोर्ट दायर की थी ; आप ऐसा करने पर विचार कर सकते हैं।


52
सुनिश्चित नहीं है कि यह इस रडार बग के जवाब में है, लेकिन डेवलपर टूल में अब नेटवर्क लिंक कंडीशनर टूल शामिल है।
samvermette

7
नेटवर्क लिंक कंडीशनर आपको गिराए जाने वाले पैकेट का एक प्रतिशत निर्दिष्ट करने की अनुमति देता है, लेकिन जहां तक ​​मैंने देखा है दुर्भाग्य से सभी कनेक्टिविटी को अक्षम करने का कोई तरीका नहीं है।
modocache

11
वर्तमान में नेटवर्क लिंक कंडीशनर 100% पैकेट लॉस सेट करने की अनुमति देता है, और यह काम करने लगता है।
गैब्रियल पेट्रोनेला

4
चूंकि सिम्युलेटर होस्ट मशीन के नेटवर्क कनेक्शन को साझा करता है, आप "नेटवर्क अक्षम" का अनुकरण करने के लिए अपने होस्ट मशीन पर इंटरनेट बंद कर सकते हैं। आदर्श नहीं है लेकिन यह काम करता है।
आदिल हुसैन

5
प्रतीक्षा करें, नेटवर्क लिंक कंडीशनर पूरे मेजबान मशीन पर लागू होता है, न कि केवल सिम्युलेटर पर। यह कैसे उपयोगी है? अगर मैं चाहता हूं कि मैं अपने ईथरनेट को अनप्लग कर सकता हूं।
sudo

1734

बाहरी आरएफ सिग्नल स्तर को अवरुद्ध या सीमित करने के लिए एक सरल फैराडे पिंजरे का उपयोग करें ।

आप एल्यूमीनियम पन्नी के साथ अपना खुद का बना सकते हैं। यदि आप ब्लॉक करना चाहते हैं तो उद्घाटन आपकी डेटा सेवा की तरंग दैर्ध्य से छोटा होना चाहिए ।

800 मेगाहर्ट्ज में 37 सेमी (14 ") तरंग दैर्ध्य है, 1900 मेगाहर्ट्ज में 16 सेमी (6") तरंगदैर्ध्य है।

यह सिम्युलेटर के साथ एक वास्तविक डिवाइस के साथ बेहतर काम करता है क्योंकि मैक जब फैराडे के अंदर काम करना मुश्किल है;

यहां छवि विवरण दर्ज करें


179
बस एक त्वरित सुझाव है, अगर आप अंदर डेस्क के साथ वॉक-इन फैराडे पिंजरे बनाते हैं, तो मैक के साथ काम करना बहुत आसान होगा।
केविन लैटी

86
आपका जवाब दिलचस्प है, भले ही उन्होंने सिम्युलेटर के लिए पूछा
विग्नेश कुमार

76
चूंकि सवाल सिम्युलेटर के बारे में था, इसलिए मुझे लगता है कि मैं फ़ोटोशॉप में इनमें से एक बनाऊंगा और इसे अपने डेस्कटॉप बैकग्राउंड के रूप में सेट करूंगा। वह शायद काम करेगा, है ना?
टिमोथी ली रसेल

8
इस 'ट्रिक' का इस्तेमाल पेशेवरों द्वारा वास्तविक के लिए किया गया है :) वापस जब मैंने पहले जीन स्मार्ट फोन पर काम किया था तो हम स्टाउट बिस्किट के डिब्बे का उपयोग करते थे। सभी ब्रांडों ने काम नहीं किया, लेकिन जो किया वे परिपूर्ण थे।
विल

11
सही उत्तर के रूप में स्वीकार किया जाना चाहिए! (मैं बजाय iKryptonite के लिए साहुल बॉक्स का उपयोग नहीं करेंगे)
gaussblurinc

309

हाँ। Xcode में, आप Xcodeमेनू आइटम -> Open Developer Tools-> पर जा सकते हैं More Developer Toolsऔर " अतिरिक्त उपकरण Xcode के लिए " डाउनलोड कर सकते हैं , जिसमें नेटवर्क लिंक कंडीशनर होगा।

इस उपकरण का उपयोग करके, आप विभिन्न नेटवर्क परिदृश्यों (जैसे 100% नुकसान, 3 जी, उच्च विलंबता DNS, और अधिक) का अनुकरण कर सकते हैं और आप अपने स्वयं के कस्टम भी बना सकते हैं।


7
यदि आप डेवलपर्स पर हैं, तो यह पैकेज में है IO उपकरण XCODE के लिए।
तरल

156
किसी तरह मैं अपने डिवाइस को पन्नी में बंद करने के विचार को पसंद करता हूं।
माइकल रॉबिन्सन

14
Xcode 8 के बाद से, नेटवर्क लिंक कंडीशनर " अतिरिक्त उपकरण Xcode " पैकेज में है।
१43

6
इसके अलावा, 100% नुकसान मेजबान के कनेक्शन को थ्रॉटल करता है, न कि एक व्यावहारिक समाधान। यदि आप इंटरनेट के बिना विकसित होने के लिए तैयार हैं तो बस अपने डेवलपर मशीन पर प्लग खींचना इस समाधान से बेहतर है।
जेनी थिसिसन

7
यह सभी मैक को प्रभावित कर रहा है। मैं केवल सिम्युलेटर के लिए इंटरनेट कनेक्शन छोड़ना चाहता हूं, क्योंकि मैं मैक का दूरस्थ रूप से उपयोग कर रहा हूं ...
JCarlosR

48

IOS सिम्युलेटर पर नेटवर्क को निष्क्रिय करने का एकमात्र तरीका मुझे पता है कि लिटिल स्निच या हैंड्स ऑफ जैसे टूल का उपयोग किया जा रहा है । उनके साथ आप किसी भी नेटवर्क नेटवर्क कनेक्शन को अस्वीकृत / ब्लॉक कर सकते हैं। आप इसे सेट कर सकते हैं ताकि यह केवल सिम्युलेटर ऐप से कनेक्शन ब्लॉक करे। फायरवॉल की तरह काम करता है।


11
लेकिन इससे सिम्युलेटर ऐसा व्यवहार नहीं करेगा जैसे आप ऑफ़लाइन हैं। यह आपके सर्वर को अनुपलब्ध बना देगा, जो काफी अलग बात है।
ब्लिट्ज

1
वास्तव में, लॉर्ड्ट, मेरे पास विशिष्ट परिस्थितियों के लिए पर्याप्त हो सकता है ...!
पॉल हैमंड

phix23 - क्या आपके पास उन दो सुझाए गए उपकरणों के बीच प्राथमिकता है?
पॉल हैमंड

नहीं, मैंने नहीं किया है। मैंने केवल हैंड्स ऑफ की कोशिश की है, क्योंकि इसमें अधिक विशेषताएं हैं।
फेलिक्स

2
+1: मैंने इस उद्देश्य के लिए लिटिल स्निच का उपयोग किया है, यह सुनिश्चित करने के लिए परीक्षण किया जाता है कि नेटवर्क कनेक्शन टूट गया है या नहीं एक नकली ऐप काम करता है।
हॉटपावर 2

18

मैक ओएसएक्स में अपने वाईफाई को बंद कर दें यह एक उपचार का काम करता है!


1
ओपी की मदद नहीं करता है जिसने विशेष रूप से कहा है कि यह एक विकल्प नहीं था, लेकिन यह मेरे लिए एक सही सरल समाधान है।
जॉनो

14

अतिरिक्त टूल पैकेज डाउनलोड करें (नेटवर्क लिंक कंडीशनर)

विवरण

सिएरा में उदाहरण: यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें


9
यह होस्ट के कनेक्शन को भी थ्रॉटल करता है, इसलिए यह आपके डेवलपर मशीन पर प्लग खींचने से बेहतर नहीं है - कोई सहयोग या इंटरनेट संदर्भ नहीं। तो, एक व्यावहारिक समाधान नहीं।
जेनी थिसिसन

11

बस वर्तमान तिथि के उत्तर को अपडेट कर रहा है। Xcode 4 (?) के बाद से /Applications/Utilitiesबुलाया में वरीयताएँ फलक है Network Link Conditioner। या तो आप किसी मौजूदा प्रोफ़ाइल का उपयोग करते हैं या आप 0 Kbps अप / डाउनलिंक के साथ अपना स्वयं का कस्टम प्रोफ़ाइल बनाते हैं और 100% गिरा दिया जाता है।


1
बस जोड़ना चाहते हैं, कि यदि आप 0 बैंडविड्थ के साथ एक कस्टम नेटवर्क सेटिंग बनाते हैं, तो यह स्वचालित रूप से इसे अधिकतम मान लेता है। पैकेट का 100% नुकसान उठाना महत्वपूर्ण है।
डेनिस कुतलुबाएव

इसके अलावा, मैं यह जोड़ना चाहूंगा कि यह विधि केवल सिम्युलेटर ही नहीं बल्कि हर चीज से इंटरनेट को हटा देती है। हो सकता है कि इंटरनेट को पूरी तरह से बंद कर देना और भी आसान हो। लेकिन फिर भी यह बहुत उपयोगी उपकरण है क्योंकि आप विभिन्न गुणवत्ता के ई और 3 जी इंटरनेट का अनुकरण कर सकते हैं।
डेनिस कुटलुबा

यह निश्चित रूप से सबसे अच्छा जवाब है क्योंकि Network Link Conditionerएक अधिकारी ने एप्पल उपकरण है, और यह की तुलना में पूरी तरह से मुक्त है, Little Snitchया Hands Off
फतहुखु

हम्म, ऐसा लगता है कि यह टूल हर चीज के लिए नेटवर्क स्विच ऑफ करता है। मैंने यह भी पाया कि यह रीचैबिलिटी नोटिफिकेशन को ट्रिगर नहीं करता है (मैंने github.com/stefanomondino/STMReactiveReachability का उपयोग किया है )।
fatuhoku

4
BE चेतावनी दी - नेटवर्क लिंक नियंत्रक उपकरण केवल iPhone सिम्युलेटर ही नहीं, ENTIRE मशीन को प्रभावित करता है। यदि आप अपने मैक में देव के लिए रिमोट करते हैं, जैसे मैं ज़ामरीन बिल्ड होस्ट का उपयोग करता हूं, तो यह आपके कनेक्शन को मार देगा।
जॉन Kocktoasten

10

चूंकि Xcode इस तरह की सुविधा प्रदान नहीं करता है, आप निश्चित रूप से कुछ तृतीय पक्ष एप्लिकेशन / टूल के लिए जाएंगे। मैक नेटवर्क को बंद करने से आईओएस सिम्युलेटर नेटवर्क को बंद करने में भी मदद मिलेगी।

आप " System Preferences..."> " Network" से मैक इंटरनेट को बंद कर सकते हैं और इच्छा नेटवर्क स्रोत को बंद कर सकते हैं।

आप मैक ईथरनेट इंटरनेट स्रोत को बंद करने के लिए: एथरनेट नेटवर्क स्रोत

यदि आप मैक वाईफाई इंटरनेट स्रोत (यदि आपका मैक वाईफाई इंटरनेट पर है) को चालू करने के लिए: यहां छवि विवरण दर्ज करें


7

आप इंटरनेट कनेक्शन को थ्री पार्टी ऐप जैसे कि थ्रॉटल कर सकते हैं

चार्ल्स: http://www.charlesproxy.com/

थ्रॉटलिंग सेटअप करने के लिए मैक पर हिट कमांड + शिफ्ट + टी।


6

एक शायद पागल विचार या पैच:

बस नेटवर्क की पहुंच के झंडे को टॉगल करें

यह वह कोड है जिसका उपयोग मैं 'सिम्युलेटर मेमोरी वार्निंग' और इसकी पूरी सुरक्षा को ट्रिगर करके अपने फ्लैग रनटाइम को टॉगल करने के लिए करता हूं , बस यह सुनिश्चित करें कि कोड केवल DEBUG मोड में होना चाहिए

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 
{
#ifdef DEBUG
    isInternetAvailable = !isInternetAvailable;
#endif 
}

1
मेरे पास इंटरनेट कनेक्शन के लिए स्थैतिक फ़ंक्शन की जाँच के साथ एक वैश्विक वर्ग है। वापसी falseएक महान विचार है। कोई इंस्टॉल नहीं है, और मैं दूरस्थ रूप से काम करना जारी रख सकता हूं! धन्यवाद।
JCarlosR

यह कहाँ isInternetAvailableपरिभाषित किया गया है ?!
CSawy

@CSawy इसका झंडा जो रिएचेबिलिटी क्लास में इंटरनेट कनेक्शन की वर्तमान स्थिति भेजता है।
दर्षित शाह

3

आप आईओएस सिम्युलेटर पर चलने वाले लोगों सहित किसी भी व्यक्तिगत प्रक्रिया के लिए नेटवर्क ट्रैफ़िक को काटने के लिए लिटिल स्निक का उपयोग कर सकते हैं । इस तरह आप अपना इंटरनेट कनेक्शन रख सकते हैं और अपने रनिंग ऐप को डिस्कनेक्ट कर सकते हैं।


3

Xcode 8.3 और iOS 10.3 के साथ:

XCUIDevice.shared().siriService.activate(voiceRecognitionText: "Turn off wifi")
XCUIDevice.shared().press(XCUIDeviceButton.home)

@available(iOS 10.3, *)अपने परीक्षण सूट फ़ाइल के शीर्ष पर शामिल करना सुनिश्चित करें ।

यदि आप चाहें तो आप वैकल्पिक रूप से "एयरप्लेन मोड चालू करें" कर सकते हैं।

एक बार सिरी वाईफाई बंद कर देता है या एयरप्लेन मोड चालू कर देता है, आपको सिरी संवाद को खारिज करने की आवश्यकता होगी जो कहता है कि सिरी को इंटरनेट की आवश्यकता है। यह होम बटन दबाकर पूरा किया जाता है, जो संवाद को खारिज कर देता है और आपके ऐप पर वापस आ जाता है।


यह iOS11GM पर काम नहीं कर सकता है। मैं सिम्युलेटर में वाईफ़ाई सेटिंग नहीं पा सकता हूं।
बिल चन

2
सिरी का उपयोग करना Xcode 9 के साथ अब एकमात्र विकल्प नहीं है कि कई ऐप्स को सक्रिय करना संभव है। वाईफाई को चालू करने के लिए iOS सेटिंग ऐप को सक्रिय करना अब भी काम करता है।
ब्रैंडनबर्स

3

IOS सिम्युलेटर इंटरनेट को निष्क्रिय करने के दो तरीके हैं :

  • अपना नेटवर्क कनेक्शन अनप्लग करें
  • वाई-फाई बंद करें

यह सबसे सरल तरीका है


3

यदि आपका ऐप किसी विशिष्ट डोमेन से कनेक्ट हो रहा है, तो आप बस इसे अपनी /etc/hostsफ़ाइल में जोड़ सकते हैं और इसे अपने स्थानीय नेटवर्क में एक गैर-मौजूदा आईपी पर रूट कर सकते हैं ... आवेदन के लिए यह उसी तरह होगा जैसे कि कोई इंटरनेट कनेक्शन नहीं था या सर्वर उपलब्ध नहीं है।

sudo nano /etc/hosts

निम्नलिखित पंक्ति जोड़ें:

192.168.1.123   example.com

या उपयोग करें 127.0.0.1यदि आप अपने स्थानीय मशीन पर वेबसर्वर नहीं चला रहे हैं।


2

आप OHHTTPStubs का उपयोग कर सकते हैं और विफल होने के लिए विशिष्ट URL के लिए नेटवर्क अनुरोधों को रोक सकते हैं।


1

एक सरल उपाय यह है कि आप अपने मैक के लिए एक एयरप्लेन मोड बनाएं। यहाँ यह कैसे करना है:

  • सिस्टम प्रेफरेंस में नेटवर्क में जाएं
  • स्थान ड्रॉपडाउन मेनू पर क्लिक करें
  • नया स्थान जोड़ने के लिए प्लस आइकन पर क्लिक करें
  • नए स्थान का नाम 'एयरप्लेन मोड' या समान है, और 'पूरा' पर क्लिक करें
  • उस स्थान का चयन करें जिसे आपने केवल स्थान ड्रॉपडाउन मेनू से बनाया है
  • बारी में खिड़की के बाईं ओर सूची में प्रत्येक उपलब्ध नेटवर्क इंटरफेस पर क्लिक करें, प्रत्येक को अक्षम करना
  • कॉन्फ़िगर IPv4 मेनू पर क्लिक करें, और बंद का चयन करें
  • वाई-फाई के लिए, बस टर्न वाई-फाई ऑफ बटन पर क्लिक करें
  • लागू करें पर क्लिक करें, और यह स्थान सभी नेटवर्क गतिविधि को अवरुद्ध कर देगा

जब आप नेटवर्किंग को वापस चालू करना चाहते हैं, तो बस स्थान ड्रॉपडाउन मेनू से स्वचालित का चयन करें, और लागू करें पर क्लिक करें


1

मैं आपको Mac पर चार्ल्स प्रॉक्सी ऐप का उपयोग करने का सुझाव दूंगा

यह आपको Bandwidth Throttleउस सुविधा का उपयोग करने की अनुमति देता है जो नेटवर्क कनेक्शन को समायोजित करने के लिए बनाई गई थी

स्टार / स्टॉप थ्रॉटलिंग ⌘ command+ T
थ्रॉटल सेटिंग्स ... ⌘ command+ T+⇧ shift


0

आप इसके बजाय होस्ट के नेटवर्क को अक्षम कर सकते हैं!


7
आपके ऐप की कनेक्शन समस्याओं को डीबग करते समय StackOverflow को देखने में सक्षम नहीं होना असुविधाजनक है!
फतुहोकू

प्रश्न की अंतिम पंक्ति पढ़ें: "(मैं मैक को दूरस्थ रूप से कोड से कनेक्ट कर रहा हूं, अभी कोई अन्य विकल्प नहीं है, इसलिए ओएस नेटवर्क को अक्षम करना एक विकल्प नहीं है)"। इसके अलावा, आपका सुझाव पहले से ही दो साल पहले, benpalmer द्वारा दिया गया था।
टूलमेकरसेव

0

यदि आपके पास कनेक्ट करने के लिए कम से कम 2 वाईफ़ाई नेटवर्क हैं, तो आईओएस सिम्युलेटर में बग का उपयोग करने का एक बहुत ही सरल तरीका है:

  1. यदि यह खुला है तो सिम्युलेटर (cmd-q) से बाहर निकलें
  2. अपने मैक को एक वाईफाई से कनेक्ट करें (यह इंटरनेट से जुड़ा नहीं हो सकता है, कोई बात नहीं)
  3. लॉन्च सिम्युलेटर (मेनू: xCode-> ओपन डेवलपर टूल-> आईओएस सिम्युलेटर) और लोड होने पर प्रतीक्षा करें
  4. वाईफाई नेटवर्क को अन्य एक पर स्विच करें
  5. फायदा

बग यह है कि सिम्युलेटर एक नेटवर्क (आईपी?) का उपयोग करने की कोशिश करता है जो पहले से जुड़ा नहीं है।

जब तक आप सिम्युलेटर को पुन: लॉन्च नहीं करते हैं, तब तक इसका कोई इंटरनेट नहीं होगा (भले ही वह पहला वाईफाई नेटवर्क जिससे आपने इंटरनेट कनेक्शन जोड़ा था), इसलिए आप बिना कनेक्शन के सिम्युलेटर का उपयोग करने के लिए (cmd-R) और स्टॉप (cmd-) प्रोजेक्ट चला सकते हैं। लेकिन आपका मैक कनेक्ट हो जाएगा।

फिर, यदि आपको सिम्युलेटर से कनेक्ट करने की आवश्यकता होगी- बस इसे छोड़ दें और लॉन्च करें।


0

आप अपने मैक पर नेटवर्क लिंक कंडीशनर का उपयोग कर सकते हैं। आप इसे ऐप्पल डेवलपर वेबसाइट से डाउनलोड कर सकते हैं। यह उपलब्ध होना चाहिए जहां हमें Xcode और iOS के पुराने संस्करण मिलते हैं। इस नेटवर्क कंडीशनर से आप वाईफाई से नेटवर्क की ताकत को बिना नेटवर्क में बदल सकते हैं।

इसके अलावा जब आप नेटवर्क कंडीशनर स्थापित करते हैं तो यह सिस्टम वरीयताओं में स्थापित हो जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.