Có thể tắt mạng trong Trình mô phỏng iOS không?


429

Tôi đang cố gắng gỡ lỗi một số hành vi không nhất quán mà tôi đang thấy trong một ứng dụng lấy dữ liệu chính từ internet. Tôi không thấy các vấn đề trong trình giả lập, chỉ trên thiết bị, vì vậy tôi muốn tái tạo mạng và môi trường kết nối trong trình giả lập.

Có cách nào để vô hiệu hóa mạng trong trình giả lập không?

(Tôi đang kết nối với Mac từ xa để mã hóa, không có lựa chọn nào khác ngay bây giờ, vì vậy, vô hiệu hóa mạng OS không phải là một tùy chọn).


Tôi nghĩ bạn cũng có thể sử dụng CharlesProxy để chạy các thử nghiệm tương tự
Mật ong

Câu trả lời:


274

Tôi e rằng không phải Trình giả lập chia sẻ bất kỳ kết nối mạng nào mà HĐH đang sử dụng. Tôi đã nộp báo cáo lỗi Radar về việc mô phỏng các điều kiện mạng một thời gian trước; bạn có thể cân nhắc làm như vậy.


50
Không chắc chắn liệu nó có phản ứng với lỗi radar này hay không, nhưng Công cụ dành cho nhà phát triển hiện bao gồm công cụ Điều hòa liên kết mạng .
samvermette

7
Điều hòa liên kết mạng cho phép bạn chỉ định tỷ lệ phần trăm gói bị bỏ, nhưng theo như tôi thấy thì không có cách nào để vô hiệu hóa tất cả kết nối.
modocache

11
Hiện tại Network Link conditioner cho phép thiết lập mất gói 100% và có vẻ như nó hoạt động.
Gabriele Petronella

4
Vì Trình mô phỏng chia sẻ kết nối mạng của máy chủ, bạn có thể tắt internet trên máy chủ để mô phỏng "mạng bị tắt". Không lý tưởng nhưng nó hoạt động.
Adil Hussain

4
Đợi đã, Network Link conditioner áp dụng cho toàn bộ máy chủ, không chỉ cho trình giả lập. Điều này hữu ích như thế nào? Tôi chỉ có thể rút phích cắm ethernet của tôi nếu tôi muốn điều đó.
sudo

1733

Sử dụng lồng Faraday đơn giản để chặn hoặc giới hạn mức tín hiệu RF bên ngoài.

Bạn có thể làm cho riêng mình với lá nhôm. Các lỗ mở phải nhỏ hơn bước sóng của dịch vụ dữ liệu của bạn nếu đó là thứ bạn muốn chặn.

800 Mhz có bước sóng 37 cm (14 "), 1900 Mhz có bước sóng 16 cm (6").

Điều này hoạt động tốt hơn với một thiết bị thực tế so với trình giả lập vì Mac khó hoạt động khi ở trong lồng Faraday ;-)

nhập mô tả hình ảnh ở đây


179
Chỉ cần một gợi ý nhanh, nếu bạn tạo một chiếc lồng Faraday đi bộ có bàn làm việc bên trong, Mac sẽ dễ dàng làm việc hơn nhiều.
Kevin Laity

86
câu trả lời của bạn rất thú vị mặc dù anh ấy đã yêu cầu giả lập
vignesh kumar

76
Vì câu hỏi là về trình giả lập, tôi nghĩ rằng tôi sẽ chỉ tạo một trong số này trong Photoshop và đặt nó làm nền màn hình của mình. Điều đó có thể sẽ làm việc, phải không?
Timothy Lee Russell

8
'Thủ thuật' này đã được các chuyên gia sử dụng thực sự :) Quay lại khi tôi làm việc trên điện thoại thông minh gen đầu tiên chúng tôi thường sử dụng hộp bánh quy cứng cáp. Không phải tất cả các thương hiệu làm việc, nhưng những thương hiệu đó là hoàn hảo.
Sẽ

11
nên được chấp nhận là câu trả lời đúng! (Tôi muốn sử dụng hộp plumbum cho iKryptonite)
gaussblurinc

309

Đúng. Trong Xcode, bạn có thể đi đếnXcode mục menu -> Open Developer Tools-> More Developer Toolsvà tải xuống " Công cụ bổ sung cho Xcode ", sẽ có Điều hòa liên kết mạng.

Sử dụng công cụ này, bạn có thể mô phỏng các kịch bản mạng khác nhau (chẳng hạn như mất 100%, 3G, DNS có độ trễ cao và hơn thế nữa) và bạn cũng có thể tạo các kịch bản tùy chỉnh của riêng mình.


7
nếu bạn đang ở trên nhà phát triển, nó nằm trong gói HARDWARE IO CÔNG CỤ CHO XCODE.
chất lỏng

155
Bằng cách nào đó tôi thích ý tưởng bọc thiết bị của mình trong giấy bạc.
Michael Robinson

14
Kể từ Xcode 8, Bộ điều hòa liên kết mạng nằm trong gói " Công cụ bổ sung cho Xcode ".
ElegyD

5
Ngoài ra, mất 100% điều tiết kết nối của máy chủ, vì vậy, không phải là một giải pháp thực tế. Nếu bạn chuẩn bị phát triển mà không có internet thì chỉ cần rút phích cắm trên máy phát triển của bạn là tốt hơn giải pháp này.
Jannie Theunissen

6
Nó đang ảnh hưởng đến tất cả các mac. Tôi muốn thoát kết nối internet chỉ cho trình giả lập, vì tôi đang sử dụng mac từ xa ...
JCarlosR

47

Cách duy nhất để vô hiệu hóa mạng trên trình giả lập iOS mà tôi biết là sử dụng các công cụ như Little Snitch hoặc Hands Off . Với chúng, bạn có thể từ chối / chặn mọi kết nối mạng bên ngoài và đang thực hiện. Bạn có thể thiết lập nó để nó chỉ chặn các kết nối từ ứng dụng giả lập. Hoạt động như một tường lửa.


11
nhưng điều đó sẽ không làm cho trình giả lập hoạt động giống như bạn ngoại tuyến. Nó sẽ chỉ làm cho máy chủ của bạn không có sẵn, đó là một điều hoàn toàn khác.
Blitz

1
Thật ra, LordT, điều đó có thể đủ cho những trường hợp cụ thể mà tôi có ...!
Paul Hammond

phix23 - bạn có ưu tiên giữa hai công cụ được đề xuất này không?
Paul Hammond

Không, tôi không có. Tôi chỉ thử dùng tay, vì nó có nhiều tính năng hơn.
Felix

2
+1: Tôi đã sử dụng Little Snitch cho chính xác mục đích này, thử nghiệm để đảm bảo ứng dụng Mô phỏng hoạt động nếu kết nối mạng bị hỏng.
hotpaw2

18

Chỉ cần tắt WiFi trong Mac OSX, điều này có hiệu quả!


1
Không giúp OP tuyên bố cụ thể rằng đây không phải là một lựa chọn, nhưng đây là một giải pháp đơn giản hoàn hảo cho tôi.
Johno

14

Tải xuống gói công cụ bổ sung (Điều hòa liên kết mạng)

Sự miêu tả

Ví dụ ở Sierra: nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây


9
Điều này cũng điều chỉnh kết nối của máy chủ, vì vậy sẽ không tốt hơn việc rút phích cắm trên máy phát triển của bạn - không có tham chiếu cộng tác hoặc internet. Vì vậy, không phải là một giải pháp thực tế.
Jannie Theunissen

11

Chỉ cần cập nhật câu trả lời cho ngày hiện tại. Vì Xcode 4 (?), Có một khung tùy chọn /Applications/Utilitiesđược gọi Network Link Conditioner. Bạn sử dụng một trong các cấu hình hiện có hoặc bạn tạo hồ sơ tùy chỉnh của riêng mình với 0 Kbps Lên / Xuống liên kết và giảm 100%.


1
Chỉ muốn thêm, rằng nếu bạn tạo một cài đặt mạng tùy chỉnh với băng thông 0, nó sẽ tự động giả định nó là tối đa. Điều quan trọng là phải mất 100% các gói.
Denis Kutlubaev

Ngoài ra, tôi muốn nói thêm rằng phương pháp này loại bỏ internet khỏi mọi thứ, không chỉ giả lập. Có thể dễ dàng hơn để tắt internet hoàn toàn. Tuy nhiên, đây là công cụ rất tiện dụng vì bạn có thể mô phỏng internet E và 3G có chất lượng khác nhau.
Denis Kutlubaev

Đây chắc chắn là câu trả lời tốt nhất vì Network Link Conditionerlà một công cụ chính thức của Apple và nó hoàn toàn miễn phí, so với Little Snitchhoặc Hands Off.
fatuhoku

Hmm, có vẻ như công cụ này sẽ tắt mạng cho tất cả mọi thứ. Tôi cũng thấy rằng nó không kích hoạt các thông báo Khả năng tiếp cận (Tôi đã sử dụng github.com/stefanomondino/STMReactiveReachability ).
fatuhoku

4
Được cảnh báo - Công cụ LIÊN KẾT NETWORK LINK tác động đến máy ENTIRE, không chỉ Trình mô phỏng iPhone. Nếu bạn điều khiển máy Mac của mình để phát triển, như tôi đang sử dụng Xamarin Build Host, nó sẽ giết kết nối của bạn.
John Kocktoasten 10/2/2015

10

Vì Xcode không cung cấp tính năng như vậy, bạn chắc chắn sẽ sử dụng một số ứng dụng / công cụ của bên thứ ba. Tắt mạng MAC cũng sẽ giúp tắt mạng Trình mô phỏng iOS.

Bạn có thể tắt internet MAC của bạn từ " System Preferences..."> " Network" và tắt nguồn mạng mong muốn.

Để tắt nguồn internet Ethernet MAC của bạn: Nguồn mạng EtherNet

Để tắt nguồn internet WiFi MAC của bạn (nếu MAC của bạn đang sử dụng Internet Wifi): nhập mô tả hình ảnh ở đây



6

Một ý tưởng điên rồ hoặc bản vá:

Chỉ cần chuyển cờ khả năng truy cập mạng

Đây là mã mà tôi sử dụng để chuyển đổi thời gian chạy cờ của tôi bằng cách kích hoạt 'Simulator Memory Cảnh báo' và hoàn toàn an toàn của nó, chỉ cần chắc chắn rằng mã phải ở trong DEBUG Chế độ chỉ

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

1
Tôi có một lớp toàn cầu với chức năng tĩnh kiểm tra kết nối internet. Quay trở lại falselà một ý tưởng tuyệt vời. Không có cài đặt, và tôi có thể tiếp tục làm việc từ xa! Cảm ơn bạn.
JCarlosR

Cái này isInternetAvailableđược định nghĩa ở đâu?!
CSawy

@CSawy Cờ của nó gửi trạng thái hiện tại của kết nối internet trong lớp khả năng truy cập.
Darshit Shah

4

hai cách để vô hiệu hóa Internet Simulator Simulator:

  • Rút phích cắm kết nối mạng của bạn
  • Tắt Wi-Fi

Đó là cách đơn giản nhất


3

Bạn có thể sử dụng Little Snitch để cắt giảm lưu lượng mạng cho bất kỳ quy trình riêng lẻ nào, bao gồm cả quy trình chạy trên trình giả lập iOS. Bằng cách đó bạn có thể giữ kết nối internet và ngắt kết nối ứng dụng đang chạy của mình.


3

Với Xcode 8.3 và iOS 10.3:

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

Hãy chắc chắn bao gồm @available(iOS 10.3, *)ở đầu tập tin thử nghiệm của bạn.

Bạn cũng có thể "Bật chế độ trên máy bay" nếu muốn.

Khi Siri tắt wifi hoặc bật Chế độ trên máy bay, bạn sẽ cần phải loại bỏ cuộc đối thoại Siri nói rằng Siri cần có internet. Điều này được thực hiện bằng cách nhấn nút home, loại bỏ đoạn hội thoại và quay lại ứng dụng của bạn.


Nó có thể không hoạt động trên iOS11GM. Tôi không thể tìm thấy cài đặt Wifi trong trình giả lập.
Bill Chan

2
Sử dụng Siri không phải là lựa chọn duy nhất với Xcode 9 bây giờ mà nó có thể kích hoạt nhiều ứng dụng. Kích hoạt ứng dụng Cài đặt iOS để bật wifi giờ cũng hoạt động.
brandenbyers

3

Nếu ứng dụng của bạn đang kết nối với một tên miền cụ thể, bạn chỉ cần thêm nó vào /etc/hoststệp của mình và định tuyến nó đến một IP không tồn tại trong mạng cục bộ của bạn ... Đối với ứng dụng, nó sẽ giống như khi không có kết nối internet hoặc máy chủ không thể truy cập.

sudo nano /etc/hosts

thêm dòng sau đây:

192.168.1.123   example.com

hoặc sử dụng 127.0.0.1nếu bạn không chạy máy chủ web trên máy cục bộ của mình.


2

Bạn có thể sử dụng OHHTTPStubs và bỏ các yêu cầu mạng đến các URL cụ thể không thành công.


1

Một giải pháp đơn giản là tạo Chế độ trên máy bay cho máy Mac của bạn. Đây là cách để làm điều này:

  • đi vào Mạng trong Tùy chọn hệ thống
  • nhấp vào menu thả xuống Vị trí
  • nhấp vào biểu tượng dấu cộng để thêm vị trí mới
  • đặt tên cho vị trí mới 'Chế độ trên máy bay' hoặc tương tự và nhấp vào 'Xong'
  • chọn vị trí bạn vừa tạo từ menu thả xuống Vị trí
  • lần lượt nhấp vào từng giao diện mạng có sẵn trong danh sách ở bên trái cửa sổ, vô hiệu hóa từng giao diện
  • nhấp vào menu Cấu hình iPv4 và chọn Tắt
  • đối với Wi-Fi, chỉ cần nhấp vào nút Tắt Wi-Fi
  • nhấp vào Áp dụng và vị trí này sẽ chặn tất cả hoạt động mạng

Khi bạn muốn bật lại mạng, chỉ cần chọn Tự động từ menu thả xuống Vị trí và nhấp vào Áp dụng


1

Tôi sẽ đề nghị bạn sử dụng Charles Proxy ứng dụng trên Mac

Nó cho phép bạn sử dụng Bandwidth Throttletính năng được tạo chỉ để điều chỉnh kết nối mạng

Sao / Ngừng điều chỉnh ⌘ command+ T
Cài đặt bướm ga ... ⌘ command+ T+⇧ shift


0

bạn có thể vô hiệu hóa các mạng lưới các máy chủ thay vì!


6
Thật bất tiện khi không thể thấy StackOverflow khi gỡ lỗi các sự cố kết nối của ứng dụng của bạn!
fatuhoku

Đọc dòng cuối cùng của câu hỏi: "(Tôi đang kết nối với Mac từ xa để mã hóa, không có lựa chọn nào khác ngay bây giờ, vì vậy, vô hiệu hóa mạng OS không phải là một tùy chọn)." Bên cạnh đó, đề nghị của bạn đã được đưa ra hai năm trước, bởi benpalmer.
ToolmakerSteve

0

Nếu bạn có ít nhất 2 mạng wifi để kết nối là một cách rất đơn giản là sử dụng một lỗi trong iOS mô phỏng:

  1. thoát khỏi trình giả lập (cmd-q) nếu nó đang mở
  2. kết nối máy Mac của bạn để một wifi (nó có thể không kết nối với Internet, không có vấn đề)
  3. ra mắt mô phỏng (menu: xCode-> Open Developer Tool-> iOs Simulator) và chờ đợi trong khi nó được nạp
  4. chuyển mạng wifi sang mạng khác
  5. lợi nhuận

Lỗi là cố gắng mô phỏng sử dụng một mạng (IP?) Mà không được kết nối rồi.

Cho đến khi bạn khởi chạy lại trình giả lập - nó sẽ không có internet (ngay cả khi mạng wifi đầu tiên bạn kết nối có kết nối internet), vì vậy bạn có thể chạy (cmd-R) và dừng (cmd-.) Dự án để sử dụng trình giả lập mà không cần kết nối, nhưng máy Mac của bạn sẽ được kết nối.

Sau đó, nếu bạn cần chạy trình giả lập được kết nối - chỉ cần thoát và khởi chạy nó.


0

Bạn có thể sử dụng bộ điều hòa liên kết mạng trên máy Mac của mình. Bạn có thể tải nó từ trang web của nhà phát triển apple. Nó sẽ có sẵn khi chúng tôi nhận được các phiên bản Xcode và iOS cũ hơn. Với bộ điều hòa mạng này, bạn có thể thay đổi cường độ của mạng từ wifi sang không có mạng.

Ngoài ra khi bạn cài đặt bộ điều hòa mạng, nó sẽ được cài đặt trong tùy chọn hệ thống.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.