เป็นไปได้หรือไม่ที่จะปิดการใช้งานเครือข่ายใน iOS Simulator?


430

ฉันพยายามดีบักพฤติกรรมที่ไม่สอดคล้องกันบางอย่างที่ฉันเห็นในแอปพลิเคชันที่รับข้อมูลหลักจากอินเทอร์เน็ต ฉันไม่เห็นปัญหาในเครื่องจำลองเพียงแค่บนอุปกรณ์ดังนั้นฉันต้องการสร้างสภาพแวดล้อมเครือข่ายและการเชื่อมต่อในเครื่องจำลอง

มีวิธีการปิดการใช้งานเครือข่ายในเครื่องจำลองหรือไม่?

(ฉันกำลังเชื่อมต่อกับ Mac จากระยะไกลไปยังรหัสไม่มีตัวเลือกอื่นในขณะนี้ดังนั้นการปิดใช้งานเครือข่าย OS จึงไม่ใช่ตัวเลือก)


ฉันคิดว่าคุณยังสามารถใช้ CharlesProxy เพื่อทำการทดสอบที่คล้ายกัน
Honey

คำตอบ:


273

ฉันไม่กลัว - ตัวจำลองแชร์การเชื่อมต่อเครือข่ายใดก็ตามที่ระบบปฏิบัติการใช้อยู่ ฉันได้ยื่นรายงานข้อผิดพลาดของ Radarเกี่ยวกับการจำลองสภาพเครือข่ายมาระยะหนึ่งแล้ว คุณอาจลองทำแบบเดียวกัน


52
ถ้าไม่แน่ใจว่าจะเป็นในการตอบสนองต่อข้อผิดพลาดเรดาร์นี้ แต่เครื่องมือสำหรับนักพัฒนาในขณะนี้รวมถึงเครือข่ายการเชื่อมโยงปรับอากาศเครื่องมือ
samvermette

7
Network Link Conditioner อนุญาตให้คุณระบุเปอร์เซ็นต์ของแพ็กเก็ตที่จะถูกดร็อป แต่เท่าที่ฉันได้เห็นมันไม่มีทางปิดการเชื่อมต่อทั้งหมด
modocache

11
ปัจจุบัน Network Link Conditioner อนุญาตให้ตั้งค่าแพ็กเก็ตที่สูญหาย 100% และดูเหมือนว่าจะใช้งานได้
Gabriele Petronella

4
เนื่องจากเครื่องจำลองใช้การเชื่อมต่อเครือข่ายของเครื่องโฮสต์คุณสามารถปิดอินเทอร์เน็ตบนเครื่องโฮสต์เพื่อจำลอง "เครือข่ายที่ปิดใช้งาน" ไม่เหมาะ แต่ใช้งานได้
Adil Hussain

5
รอ Network Link Conditioner ใช้กับเครื่องโฮสต์ทั้งหมดไม่ใช่เฉพาะโปรแกรมจำลอง สิ่งนี้มีประโยชน์อย่างไร? ฉันสามารถถอดปลั๊กอีเธอร์เน็ตของฉันได้ถ้าต้องการ
sudo

1734

ใช้กรงฟาราเดย์อย่างง่ายเพื่อบล็อกหรือ จำกัด ระดับสัญญาณ RF ภายนอก

คุณสามารถสร้างของคุณเองด้วยอลูมิเนียมฟอยล์ ช่องเปิดควรเล็กกว่าความยาวคลื่นของบริการข้อมูลของคุณหากนั่นคือสิ่งที่คุณต้องการปิดกั้น

800 Mhz มีความยาวคลื่น 37 ซม. (14 "), 1900 Mhz มีความยาวคลื่น 16 ซม. (6")

วิธีนี้ใช้งานได้ดีกว่ากับอุปกรณ์จริงมากกว่ากับเครื่องจำลองเนื่องจาก Mac นั้นยากที่จะทำงานเมื่ออยู่ในกรงฟาราเดย์ ;-)

ป้อนคำอธิบายรูปภาพที่นี่


179
เพียงแค่ข้อเสนอแนะอย่างรวดเร็วหากคุณสร้างกรงฟาราเดย์แบบ Walk-in ที่มีโต๊ะอยู่ข้างใน Mac จะทำงานได้ง่ายขึ้นมาก
Kevin Laity

86
คำตอบของคุณน่าสนใจแม้ว่าเขาจะขอ simulator กับเขา
vignesh kumar

76
เนื่องจากคำถามเกี่ยวกับเครื่องจำลองฉันคิดว่าฉันจะสร้างหนึ่งใน Photoshop และตั้งเป็นพื้นหลังเดสก์ท็อปของฉัน นั่นอาจจะใช้ได้ใช่ไหม
ทิโมธีลีรัสเซล

8
'เคล็ดลับ' นี้ถูกใช้จริงโดยมืออาชีพ :) ย้อนกลับไปเมื่อฉันทำงานกับสมาร์ทโฟนรุ่นแรกที่เราเคยใช้กระป๋องบิสกิตอ้วน ไม่ใช่ทุกยี่ห้อที่ใช้งานได้ แต่เป็นแบรนด์ที่สมบูรณ์แบบ
จะ

11
ควรได้รับการยอมรับว่าเป็นคำตอบที่ถูกต้อง! (ฉันอยากจะใช้กล่อง plumbum สำหรับ iKryptonite)
gaussblurinc

309

ใช่. ใน Xcode คุณสามารถไปที่Xcodeรายการเมนู -> Open Developer Tools-> More Developer Toolsและดาวน์โหลด " เครื่องมือเพิ่มเติมสำหรับ Xcode " ซึ่งจะมี Network Link Conditioner

การใช้เครื่องมือนี้คุณสามารถจำลองสถานการณ์เครือข่ายต่างๆ (เช่นการสูญเสีย 100%, 3G, DNS latency สูงและอื่น ๆ ) และคุณสามารถสร้างสถานการณ์ที่กำหนดเองของคุณเองได้เช่นกัน


7
หากคุณอยู่ในเว็บไซต์ของนักพัฒนามันอยู่ในแพคเกจเครื่องมือ HARDWARE IO สำหรับ XCODE
ของเหลว

156
ยังไงก็เถอะฉันชอบความคิดของการห่อหุ้มอุปกรณ์ของฉันในกระดาษฟอยล์
Michael Robinson

14
ตั้งแต่ Xcode 8 Network Link Conditioner อยู่ในแพ็คเกจ " เครื่องมือเพิ่มเติมสำหรับ Xcode "
สิบเอ็ด

6
นอกจากนี้การสูญเสีย 100% ยังควบคุมการเชื่อมต่อของโฮสต์ไม่ได้เป็นวิธีแก้ปัญหาในทางปฏิบัติ หากคุณพร้อมที่จะพัฒนาโดยไม่ใช้อินเทอร์เน็ตเพียงแค่ดึงปลั๊กบนเครื่องนักพัฒนาของคุณจะดีกว่าโซลูชันนี้
Jannie Theunissen

7
มันมีผลกับ mac ทั้งหมด ฉันต้องการออกจากการเชื่อมต่ออินเทอร์เน็ตสำหรับตัวจำลองเท่านั้นเนื่องจากฉันใช้ mac จากระยะไกล ...
JCarlosR

48

วิธีเดียวที่จะปิดการใช้งานเครือข่ายในการจำลอง iOS ของคุณผมรู้ก็คือใช้เครื่องมือเช่นลิตเติ้ลสนิชหรือHands Off คุณสามารถปฏิเสธ / บล็อกการเชื่อมต่อเครือข่ายใด ๆ คุณสามารถตั้งค่าเพื่อป้องกันการเชื่อมต่อจากแอพจำลองเท่านั้น ทำงานเหมือนไฟร์วอลล์


11
แต่นั่นจะไม่ทำให้ตัวจำลองทำงานเหมือนคุณออฟไลน์ มันจะทำให้เซิร์ฟเวอร์ของคุณไม่สามารถใช้งานได้ซึ่งค่อนข้างแตกต่างออกไป
Blitz

1
จริง ๆ แล้ว LordT นั้นอาจเพียงพอสำหรับสถานการณ์เฉพาะที่ฉันมี ... !
พอลแฮมมอนด์

phix23 - คุณมีความพึงพอใจระหว่างเครื่องมือแนะนำทั้งสองนี้หรือไม่?
พอลแฮมมอนด์

ไม่ฉันยังไม่ได้ ฉันลองใช้งานมือเท่านั้นเพราะมีคุณสมบัติมากกว่านี้
เฟลิกซ์

2
+1: ฉันใช้ Little Snitch เพื่อจุดประสงค์นี้ทดสอบเพื่อให้แน่ใจว่าแอปจำลองทำงานได้หากการเชื่อมต่อเครือข่ายขาด
hotpaw2

18

เพียงแค่ปิด WiFi ของคุณใน Mac OSX สิ่งนี้ได้ผล!


1
ไม่ช่วย OP ที่ระบุไว้โดยเฉพาะว่านี่ไม่ใช่ตัวเลือก แต่นี่เป็นโซลูชันที่สมบูรณ์แบบสำหรับฉัน
Johno

14

ดาวน์โหลดแพ็คเกจเครื่องมือเพิ่มเติม (Network Link Conditioner)

ลักษณะ

ตัวอย่างใน Sierra: ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


9
นี่เป็นการ จำกัด การเชื่อมต่อของโฮสต์ดังนั้นจึงไม่ดีไปกว่าการดึงปลั๊กบนเครื่องนักพัฒนาของคุณ - ไม่มีการทำงานร่วมกันหรือการอ้างอิงทางอินเทอร์เน็ต ดังนั้นไม่ใช่วิธีการปฏิบัติ
Jannie Theunissen

11

เพียงอัปเดตคำตอบเป็นวันที่ปัจจุบัน ตั้งแต่ Xcode 4 (?) มีความเป็นบานหน้าต่างการตั้งค่าในที่เรียกว่า/Applications/Utilities Network Link Conditionerไม่ว่าคุณจะใช้หนึ่งในโปรไฟล์ที่มีอยู่หรือคุณสร้างโปรไฟล์ที่กำหนดเองของคุณด้วย 0 Kbps ขึ้น / ลงและลดลง 100%


1
เพียงแค่ต้องการเพิ่มว่าถ้าคุณสร้างการตั้งค่าเครือข่ายแบบกำหนดเองด้วยแบนด์วิดท์ 0 มันจะถือว่าเป็นค่าสูงสุดโดยอัตโนมัติ สิ่งสำคัญคือการสูญเสียแพ็คเก็ต 100%
เดนิส Kutlubaev

นอกจากนี้ฉันต้องการเพิ่มว่าวิธีนี้จะลบอินเทอร์เน็ตออกจากทุกสิ่งไม่ใช่เฉพาะโปรแกรมจำลอง อาจเป็นการง่ายกว่าที่จะปิดอินเทอร์เน็ตอย่างสมบูรณ์ แต่อย่างไรก็ตามมันเป็นเครื่องมือที่มีประโยชน์มากเพราะคุณสามารถจำลอง E และ 3G อินเทอร์เน็ตที่มีคุณภาพแตกต่างกัน
เดนิส Kutlubaev

นี้ก็เป็นคำตอบที่ดีที่สุดเพราะNetwork Link Conditionerเป็นเครื่องมือที่แอปเปิ้ลอย่างเป็นทางการและเป็นอิสระโดยสิ้นเชิงเมื่อเทียบกับหรือLittle Snitch Hands Off
fatuhoku

อืมดูเหมือนว่าเครื่องมือนี้จะปิดเครือข่ายสำหรับทุกสิ่ง ฉันยังพบว่าไม่ได้เปิดใช้งานการแจ้งเตือนการเข้าถึง (ฉันใช้github.com/stefanomondino/STMReactiveReachability )
fatuhoku

4
ถูกเตือน - เครื่องมือ NETWORK LINK CONDITIONER ส่งผลกระทบต่อเครื่องทั้งเครื่องไม่ใช่แค่ iPhone Simulator หากคุณรีโมตไปยัง mac ของคุณสำหรับการพัฒนาเหมือนที่ฉันใช้ Xamarin Build Host มันจะหยุดการเชื่อมต่อของคุณ
John Kocktoasten

10

เนื่องจาก Xcode ไม่มีคุณสมบัติดังกล่าวคุณจะต้องไปใช้แอปพลิเคชัน / เครื่องมือของบุคคลที่สามอย่างแน่นอน การปิดเครือข่าย MAC จะช่วยในการปิดเครือข่าย iOS Simulator

คุณสามารถปิดอินเทอร์เน็ต MAC ของคุณได้จาก " System Preferences..."> " Network" และปิดแหล่งที่มาของเครือข่ายที่ต้องการ

ในการปิดการใช้งานแหล่งที่มาของอินเทอร์เน็ต MAC Ethernet: แหล่งเครือข่าย EtherNet

หากต้องการปิดการใช้งานแหล่งที่มาของอินเทอร์เน็ต MAC WiFi (หาก MAC ของคุณอยู่บนอินเทอร์เน็ต Wifi): ป้อนคำอธิบายรูปภาพที่นี่


7

คุณสามารถเค้นการเชื่อมต่ออินเทอร์เน็ตด้วยแอพของบุคคลที่สามเช่น

Charles: http://www.charlesproxy.com/

กดคำสั่ง + shift + T บน Mac เพื่อตั้งค่าการควบคุมปริมาณ


6

หนึ่งอาจเป็นความคิดที่บ้าหรือแพทช์:

เพียงสลับการตั้งค่าสถานะการเข้าถึงเครือข่าย

นี่คือรหัสที่ฉันใช้เพื่อเปิดใช้งานการตั้งค่าสถานะของฉันโดยเรียก 'คำเตือน Simulator หน่วยความจำ'และปลอดภัยโดยสมบูรณ์เพียงตรวจสอบให้แน่ใจว่ารหัสควรอยู่ในโหมดดีบักเท่านั้น

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

1
ฉันมีระดับโลกที่มีฟังก์ชั่นคงที่ตรวจสอบการเชื่อมต่ออินเทอร์เน็ต การกลับมาfalseเป็นแนวคิดที่ยอดเยี่ยม ไม่มีการติดตั้งและฉันสามารถทำงานต่อจากระยะไกลได้! ขอบคุณ.
JCarlosR

สิ่งนี้isInternetAvailableกำหนดไว้ที่ไหน!
CSawy

@CSawy เป็นสถานะที่ส่งสถานะปัจจุบันของการเชื่อมต่ออินเทอร์เน็ตในระดับการเข้าถึงได้
Darshit Shah

3

คุณสามารถใช้Little Snitchเพื่อลดทราฟฟิกเครือข่ายไปยังกระบวนการใด ๆ รวมถึงกระบวนการที่ทำงานบนเครื่องจำลอง iOS ด้วยวิธีนี้คุณจะสามารถรักษาการเชื่อมต่ออินเทอร์เน็ตและยกเลิกการเชื่อมต่อแอพที่กำลังรันอยู่


3

ด้วย Xcode 8.3 และ iOS 10.3:

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

อย่าลืมรวม@available(iOS 10.3, *)ไว้ที่ด้านบนของไฟล์ชุดทดสอบ

คุณสามารถเลือก "เปิดโหมดเครื่องบิน" ได้หากต้องการ

เมื่อ Siri ปิด wifi หรือเปิดโหมดเครื่องบินคุณจะต้องยกเลิกการสนทนา Siri ที่บอกว่า Siri ต้องใช้อินเทอร์เน็ต การดำเนินการนี้ทำได้โดยการกดปุ่มโฮมซึ่งจะยกเลิกการสนทนาและกลับสู่แอปของคุณ


มันอาจไม่ทำงานบน iOS11GM ฉันหาการตั้งค่า Wifi ในเครื่องจำลองไม่พบ
Bill Chan

2
การใช้ Siri ไม่ใช่ตัวเลือกเดียวกับ Xcode 9 ในขณะนี้ที่เป็นไปได้ที่จะเปิดใช้งานหลายแอป การเปิดใช้งานแอพการตั้งค่า iOS เพื่อเปลี่ยน wifi ก็ใช้ได้เช่นกัน
brandenbyers

3

มีสองวิธีในการปิดการใช้งาน IOS Simulator บนอินเทอร์เน็ต:

  • ถอดปลั๊กการเชื่อมต่อเครือข่ายของคุณ
  • ปิด Wi-Fi

มันเป็นวิธีที่ง่ายที่สุด


3

หากแอปของคุณเชื่อมต่อกับโดเมนที่ระบุคุณสามารถเพิ่มลงใน/etc/hostsไฟล์ของคุณและกำหนดเส้นทางไปยัง IP ที่ไม่มีอยู่ในเครือข่ายท้องถิ่นของคุณ ... สำหรับแอปพลิเคชันมันจะเหมือนกับว่าไม่มีการเชื่อมต่ออินเทอร์เน็ตหรือ เซิร์ฟเวอร์ไม่สามารถเข้าถึงได้

sudo nano /etc/hosts

เพิ่มบรรทัดต่อไปนี้:

192.168.1.123   example.com

หรือใช้127.0.0.1หากคุณไม่ได้ใช้งานเว็บเซิร์ฟเวอร์บนเครื่องของคุณ



1

ทางออกที่ง่ายคือการสร้างโหมดเครื่องบินสำหรับ Mac ของคุณ นี่คือวิธีการทำสิ่งนี้:

  • ไปที่เครือข่ายในการตั้งค่าระบบ
  • คลิกที่เมนูดร็อปดาวน์ตำแหน่ง
  • คลิกที่ไอคอนเครื่องหมายบวกเพื่อเพิ่มตำแหน่งใหม่
  • ตั้งชื่อตำแหน่งใหม่ว่า 'Airplane Mode' หรือที่คล้ายกันแล้วคลิก 'Done'
  • เลือกตำแหน่งที่คุณเพิ่งสร้างจากเมนูดร็อปดาวน์ตำแหน่ง
  • คลิกที่แต่ละอินเตอร์เฟสเครือข่ายที่มีอยู่ในรายการทางด้านซ้ายของหน้าต่างเพื่อเปิดใช้งานแต่ละอัน
  • คลิกที่เมนู Configure iPv4 และเลือก Off
  • สำหรับ Wi-Fi เพียงคลิกที่ปุ่มปิด Wi-Fi
  • คลิกใช้และตำแหน่งนี้จะบล็อกกิจกรรมเครือข่ายทั้งหมด

เมื่อคุณต้องการเปิดเครือข่ายอีกครั้งเพียงเลือกอัตโนมัติจากเมนูดร็อปดาวน์ตำแหน่งแล้วคลิกนำไปใช้


1

ฉันขอแนะนำให้คุณใช้แอปCharles Proxyบน Mac

ช่วยให้คุณใช้Bandwidth Throttleคุณสมบัติที่สร้างขึ้นเพื่อปรับการเชื่อมต่อเครือข่าย

Star / Stop Throttling ⌘ command+ T
การตั้งค่าเค้น ... ⌘ command+ T+⇧ shift


0

คุณสามารถปิดการใช้งานเครือข่ายของโฮสต์แทน!


7
ไม่สะดวกที่จะไม่เห็น StackOverflow เมื่อทำการดีบั๊กปัญหาการเชื่อมต่อแอพของคุณ!
fatuhoku

อ่านบรรทัดสุดท้ายของคำถาม: "(ฉันกำลังเชื่อมต่อกับ Mac จากระยะไกลไปยังรหัสไม่มีตัวเลือกอื่นในขณะนี้ดังนั้นการปิดใช้งานเครือข่าย OS ไม่ใช่ตัวเลือก)" นอกจากนี้ข้อเสนอแนะของคุณได้รับเมื่อสองปีที่แล้วโดย benpalmer
ToolmakerSteve

0

หากคุณมีเครือข่าย wifi อย่างน้อย 2 แห่งในการเชื่อมต่อเป็นวิธีที่ง่ายมากในการใช้บั๊กในโปรแกรมจำลอง iOS:

  1. ออกจากโปรแกรมจำลอง (cmd-q) หากเปิดอยู่
  2. เชื่อมต่อ Mac ของคุณเข้ากับ wifi หนึ่งเครื่อง (อาจไม่ได้เชื่อมต่อกับอินเทอร์เน็ตไม่สำคัญ)
  3. เรียกใช้งานตัวจำลอง (เมนู: xCode-> Open Developer Tool-> iOs Simulator) และรอในขณะที่โหลด
  4. เปลี่ยนเครือข่าย wifi เป็นอีกอันหนึ่ง
  5. กำไร

ข้อผิดพลาดคือเครื่องมือจำลองนั้นพยายามใช้เครือข่าย (IP?) ซึ่งไม่ได้เชื่อมต่ออยู่แล้ว

จนกว่าคุณจะเปิดตัวจำลองใหม่ - จะไม่มีอินเทอร์เน็ต (แม้ว่าเครือข่าย wifi แรกที่คุณเชื่อมต่อมีการเชื่อมต่ออินเทอร์เน็ต) ดังนั้นคุณสามารถเรียกใช้ (cmd-R) และหยุดโครงการ (cmd-.) เพื่อใช้โปรแกรมจำลองโดยไม่ต้องเชื่อมต่อ แต่ Mac ของคุณจะเชื่อมต่อ

จากนั้นหากคุณจะต้องเรียกใช้โปรแกรมจำลองการเชื่อมต่อ - เพียงแค่ออกและเปิดใช้งาน


0

คุณสามารถใช้ครีมบำรุงรักษาลิงค์เครือข่ายบน Mac ของคุณ คุณสามารถดาวน์โหลดได้จากเว็บไซต์ผู้พัฒนา apple มันควรจะใช้ได้เมื่อเราได้รับ Xcode และ iOS เวอร์ชันเก่า ด้วยเครือข่ายปรับอากาศนี้คุณสามารถเปลี่ยนความแข็งแกร่งของเครือข่ายจาก wifi เป็นไม่มีเครือข่าย

นอกจากนี้เมื่อคุณติดตั้งครีมบำรุงเครือข่ายจะได้รับการติดตั้งในการตั้งค่าระบบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.