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.