iOS 시뮬레이터에서 네트워크를 비활성화 할 수 있습니까?


430

인터넷에서 기본 데이터를 가져 오는 응용 프로그램에서 일관되지 않은 동작을 디버깅하려고합니다. 시뮬레이터의 문제는 장치에서만 볼 수 없으므로 시뮬레이터에서 네트워크 및 연결 환경을 재현하고 싶습니다.

시뮬레이터에서 네트워크를 비활성화하는 방법이 있습니까?

(저는 Mac에 원격으로 코딩하여 코드를 작성하고 있습니다. 지금은 다른 선택이 없으므로 OS 네트워크를 비활성화하는 것은 옵션이 아닙니다).


CharlesProxy를 사용하여 유사한 테스트를 실행할 수 있다고 생각합니다.
— Honey

답변:


273

시뮬레이터가 OS가 사용하는 네트워크 연결을 공유합니다. 네트워크 상태 시뮬레이션에 관한 레이더 버그 보고서를 제출했습니다 . 같은 일을 고려할 수도 있습니다.


52
이 레이더 버그에 대한 응답인지 확실하지 않지만 개발자 도구에는 이제 네트워크 링크 컨디셔너 도구가 포함되어 있습니다.
— samvermette

7
네트워크 링크 컨디셔너를 사용하면 삭제 될 패킷의 비율을 지정할 수 있지만, 아시다시피 모든 연결을 비활성화 할 수있는 방법은 없습니다.
— modocache

11
현재 네트워크 링크 컨디셔너는 100 % 패킷 손실을 설정할 수 있으며 작동하는 것 같습니다.
— Gabriele Petronella

4
Simulator는 호스트 시스템의 네트워크 연결을 공유하므로 호스트 시스템의 인터넷을 꺼서 "네트워크 비활성화"를 시뮬레이션 할 수 있습니다. 이상적이지는 않지만 작동합니다.
— Adil Hussain

5
네트워크 링크 컨디셔너는 시뮬레이터뿐만 아니라 전체 호스트 컴퓨터에 적용됩니다. 이것이 어떻게 유용합니까? 원하는 경우 이더넷을 뽑을 수 있습니다.
— sudo

1734

간단한 패러데이 케이지 를 사용 하여 외부 RF 신호 레벨을 차단하거나 제한하십시오.

알루미늄 호일로 직접 만들 수 있습니다. 차단하려는 경우 개구부가 데이터 서비스 의 파장 보다 작아야합니다 .

800MHz는 37cm (14 ") 파장, 1900MHz는 16cm (6") 파장을 갖습니다.

패러데이 케이지 내부에서 Mac이 작동하기 어렵 기 때문에 시뮬레이터보다 실제 장치에서 더 잘 작동합니다. ;-)

여기에 이미지 설명을 입력하십시오


179
빠른 제안, 내부에 책상이있는 대형 패러데이 케이지를 만들면 Mac을 사용하기가 훨씬 쉬워집니다.
— Kevin Laity

86
당신의 대답은 그가 시뮬레이터를 요청했지만 흥미 롭습니다
— vignesh kumar

76
질문은 시뮬레이터에 관한 것이기 때문에 Photoshop에서 이들 중 하나를 바탕 화면 배경으로 설정하겠습니다. 아마도 효과가 있을까요?
— Timothy Lee Russell

8
이 '트릭'은 전문가들에 의해 실제적으로 사용되었습니다. 모든 브랜드가 효과가있는 것은 아니지만 완벽했습니다.
— 윌

11
정답으로 받아 들여 져야합니다! (나는 오히려 iKryptonite를 위해 매화 상자를 사용하고 싶습니다)
— gaussblurinc

309

예. Xcode에서는 Xcode메뉴 항목-> Open Developer Tools-> 로 이동할 수 있습니다.More Developer Tools " Xcode 용 추가 도구 "를 다운로드 하면 Network Link Conditioner가 표시됩니다.

이 도구를 사용하면 다양한 네트워크 시나리오 (예 : 100 % 손실, 3G, 대기 시간이 긴 DNS 등)를 시뮬레이션하고 고유 한 사용자 지정 시나리오를 만들 수도 있습니다.


7
개발자 사이트에있는 경우 XCODE 용 하드웨어 IO 도구 패키지에 있습니다.
— 액체

156
어쨌든 나는 장치를 호일로 감싸는 아이디어를 선호합니다.
— Michael Robinson

14
Xcode 8부터 Network Link Conditioner는 " Xcode 용 추가 도구 "패키지에 있습니다.
— ElegyD

6
또한 100 % 손실은 실제 솔루션이 아니라 호스트 연결을 제한합니다. 인터넷없이 개발할 준비가되어 있다면 개발자 시스템의 플러그를 당기는 것이이 솔루션보다 낫습니다.
— Jannie Theunissen

7
모든 Mac에 영향을 미칩니다. Mac을 원격으로 사용하기 때문에 시뮬레이터에 대해서만 인터넷 연결을 종료하고 싶습니다.
— JCarlosR

48

내가 아는 iOS 시뮬레이터에서 네트워크를 비활성화하는 유일한 방법은 Little Snitch 또는 Hands Off 와 같은 도구를 사용하는 것 입니다. 그들과 함께 당신은 나가고 나가는 네트워크 연결을 거부 / 차단할 수 있습니다. 시뮬레이터 앱의 연결 만 차단하도록 설정할 수 있습니다. 방화벽처럼 작동합니다.


11
하지만 시뮬레이터가 오프라인 인 것처럼 동작하지는 않습니다. 서버를 사용할 수 없게 만드는 것과는 매우 다릅니다.
— Blitz

1
실제로 LordT, 그것은 내가 가진 특정 상황에 충분할 수도 있습니다 ...!
— Paul Hammond

phix23-이 두 가지 제안 도구 사이에 선호가 있습니까?
— Paul Hammond

아뇨 더 많은 기능이 있기 때문에 Hands off 만 시도했습니다.
— Felix

2
+1 : Little Snitch를 정확하게 사용하기 위해 네트워크 연결이 끊긴 경우 시뮬레이션 된 앱이 작동하는지 테스트했습니다.
— hotpaw2

18

Mac OSX에서 WiFi를 끄면됩니다.


1
이것이 옵션이 아니라고 구체적으로 언급 한 OP는 도움이되지 않지만 이것은 나를위한 완벽한 간단한 솔루션입니다.
— Johno

14

추가 도구 패키지 다운로드 (Network Link Conditioner)

기술

시에라의 예 : 여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


9
또한 호스트의 연결을 제한하므로 공동 작업이나 인터넷 참조가 아닌 개발자 컴퓨터의 플러그를 뽑는 것보다 낫지 않습니다. 따라서 실용적인 해결책은 아닙니다.
— Jannie Theunissen

11

현재 날짜로 답변을 업데이트하기 만하면됩니다. Xcode 4 (?)부터 /Applications/Utilities라는 환경 설정 창이 Network Link Conditioner있습니다. 기존 프로필 중 하나를 사용하거나 0Kbps Up / Downlink 및 100 % Drop 된 사용자 지정 프로필을 만듭니다.


1
추가로, 대역폭이 0 인 사용자 지정 네트워크 설정을 만들면 자동으로 최대 값으로 가정합니다. 패킷 손실을 100 % 줄이는 것이 중요합니다.
— Denis Kutlubaev

또한이 방법이 시뮬레이터뿐만 아니라 모든 것에서 인터넷을 제거한다고 덧붙이고 싶습니다. 인터넷을 완전히 끄는 것이 더 쉬울 수도 있습니다. 그럼에도 불구하고 다른 품질의 E 및 3G 인터넷을 시뮬레이션 할 수 있기 때문에 매우 편리한 도구입니다.
— Denis Kutlubaev

Network Link Conditioner공식 Apple 도구 이기 때문에 이것이 가장 좋은 대답 이며, Little Snitch또는에 비해 완전히 무료 Hands Off입니다.
— fatuhoku

흠,이 도구는 모든 것을 위해 네트워크를 끄는 것처럼 보입니다. 또한 도달 가능성 알림을 트리거하지 않는다는 것을 알았습니다 ( github.com/stefanomondino/STMReactiveReachability 사용 ).
— fatuhoku

4
경고-NETWORK LINK CONDITIONER 도구는 iPhone Simulator뿐만 아니라 전체 시스템에 영향을줍니다. Xamarin Build Host를 사용하는 것처럼 Mac에서 원격으로 dev를 사용하면 연결이 끊어집니다.
— John Kocktoasten

10

Xcode는 이러한 기능을 제공하지 않으므로 타사 응용 프로그램 / 도구를 사용해야합니다. MAC 네트워크를 끄면 iOS 시뮬레이터 네트워크를 끄는 데 도움이됩니다.

" System Preferences..."> " Network" 에서 MAC 인터넷을 끄고 원하는 네트워크 소스를 끌 수 있습니다.

MAC 이더넷 인터넷 소스를 끄려면 : EtherNet 네트워크 소스

MAC WiFi 인터넷 소스를 끄려면 (MAC가 Wi-Fi 인터넷에있는 경우) : 여기에 이미지 설명을 입력하십시오



6

아마도 하나의 미친 아이디어 또는 패치 :

네트워크 연결성 플래그를 토글하기 만하면됩니다.

이것은 '시뮬레이터 메모리 경고' 와 완전히 안전 을 트리거하여 플래그 런타임을 전환하는 데 사용하는 코드입니다. 코드가 디버그 모드 에만 있어야합니다.

- (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가 Wi-Fi를 끄거나 비행기 모드를 켜면 Siri에 인터넷이 필요하다는 Siri 대화 상자를 해제해야합니다. 홈 버튼을 누르면 대화가 사라지고 앱으로 돌아갑니다.


iOS11GM에서는 작동하지 않을 수 있습니다. 시뮬레이터에서 Wi-Fi 설정을 찾을 수 없습니다.
— Bill Chan

2
Xcode 9에서는 Siri를 사용하는 것이 유일한 옵션은 아닙니다. 이제 여러 앱을 활성화 할 수 있습니다. Wi-Fi를 켜기 위해 iOS 설정 앱을 활성화해도 작동합니다.
— 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 용 비행기 모드를 만드는 것입니다. 이를 수행하는 방법은 다음과 같습니다.

  • 시스템 환경 설정에서 네트워크로 이동
  • 위치 드롭 다운 메뉴를 클릭하십시오
  • 더하기 아이콘을 클릭하여 새 위치를 추가하십시오
  • 새 위치의 이름을 '비행기 모드'또는 이와 유사한 이름으로 지정하고 '완료'를 클릭하십시오.
  • 위치 드롭 다운 메뉴에서 방금 만든 위치를 선택하십시오.
  • 창의 왼쪽에있는 목록에서 사용 가능한 각 네트워크 인터페이스를 차례로 클릭하여 비활성화하십시오.
  • iPv4 구성 메뉴를 클릭하고 끄기를 선택하십시오.
  • Wi-Fi의 경우 Wi-Fi 끄기 버튼을 클릭하십시오.
  • 적용을 클릭하면이 위치에서 모든 네트워크 활동이 차단됩니다

네트워킹을 다시 켜려면 위치 드롭 다운 메뉴에서 자동을 선택하고 적용을 클릭하십시오.


1

Mac에서 Charles Proxy 앱을 사용하는 것이 좋습니다.

Bandwidth Throttle네트워크 연결을 조정하기 위해 만들어진 기능을 사용할 수 있습니다

스타 / 스톱 스로틀 ⌘ command+ T
스로틀 설정 ... ⌘ command+ T+⇧ shift


0

대신 호스트 네트워크를 비활성화 할 수 있습니다!


7
앱의 연결 문제를 디버깅 할 때 StackOverflow를 볼 수없는 것이 불편합니다!
— fatuhoku

질문의 마지막 줄을 읽으십시오. "(현재 Mac에 원격으로 코드를 연결하고 있습니다. 지금은 다른 선택이 없으므로 OS 네트워크를 비활성화 할 수 없습니다.") 게다가, 당신의 제안은 이미 2 년 전에 벤 팔머에 의해 주어졌습니다.
— ToolmakerSteve

0

경우 당신이 연결할 수있는 적어도 2 개 와이파이 네트워크가 매우 간단한 방법은 아이폰 OS 시뮬레이터의 버그를 사용하는 것입니다 :

  1. 시뮬레이터 (cmd-q)가 열려 있으면 종료합니다
  2. Mac을 하나의 Wi-Fi에 연결합니다 (인터넷에 연결되지 않았을 수도 있음)
  3. 시뮬레이터 (메뉴 : xCode-> Open Developer Tool-> iOs Simulator)를 시작하고로드 될 때까지 기다립니다.
  4. 와이파이 네트워크를 다른 것으로 전환
  5. 이익

버그는 시뮬레이터가 아직 연결되지 않은 네트워크 (IP?)를 사용하려고한다는 것입니다.

시뮬레이터를 다시 시작할 때까지 인터넷에 연결되어 있지 않습니다 (연결 한 첫 번째 wifi 네트워크에 인터넷 연결이 있더라도). 따라서 연결없이 시뮬레이터를 사용하기 위해 (cmd-R) 및 중지 (cmd-.) 프로젝트를 실행할 수 있습니다. 그러나 당신의 Mac은 연결될 것입니다.

그런 다음 시뮬레이터 연결을 실행 해야하는 경우 종료하고 시작하십시오.


0

Mac에서 네트워크 링크 컨디셔너를 사용할 수 있습니다. Apple 개발자 웹 사이트에서 다운로드 할 수 있습니다. 이전 버전의 Xcode 및 iOS를 사용할 수 있어야합니다. 이 네트워크 컨디셔너를 사용하면 Wi-Fi에서 네트워크 없음으로 네트워크의 강도를 변경할 수 있습니다.

또한 네트워크 컨디셔너를 설치하면 시스템 환경 설정에 설치됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.