iOS Agent
iOS
이 문서는 iOS 환경에서의 Surffy NetFUNNEL Agent 적용 및 연동 가이드를 제공합니다.
설치
- SurffyAgent 프레임워크를 적용합니다. Xcode에서 Surffy NetFUNNEL을 적용할 프로젝트의 세부 정보 탭으로 이동 후 Build Phases를 클릭합니다. Link Binary With Libraries에서 Framework의 위치를 찾아 등록합니다. Framework 등록 후 정상적으로 import되었는지 확인합니다.




2. NetFUNNEL을 적용할 프로젝트의 ViewController 상단에 SurffyAgent를 import합니다.

3. viewDidLoad() 함수의 override에 아래의 코드를 추가합니다.
아래 예시와 같이 동작을 정의할 수 있습니다.
속성
사용자가 입력해야 하는 속성은 다음과 같습니다.
- TenantURL: 테넌트 API 서버 주소
- ProjectDetailURL: Surffy console로 등록한 projectDetail URL
- eumURL: Surffy console에서 출력된 eum URL
TenantURL, ProjectDetailURL, eumURL 속성은 콘솔의 iOS 설치 가이드의 데이터를 입력하면 됩니다.
요구 사양
최소 요구 사양은 다음과 같습니다.
- iOS 13 이상
- v.1.0.0 기준으로 NetFUNNEL 적용이 필요한 링크는 URLSession을 사용해야 합니다. 현재 다른 네트워크 프레임워크는 사용 불가능합니다(e.g. Aloamofire 등).
- agent 코드 블럭은 view controller의 viewDidLoad() 최상단에 적으면 됩니다.
- 유량제어 명령은 URLSession.shared의 data, datatask 등 파일 전송이 없는 요청에 생성 가능합니다(upload, uploadTask, download, downloadTask에는 생성 불가능).
기능
- VWR (Virtual Waiting Room) 기능
- EUM 기능
부록
비정상 행위 방어
인터넷 미연결 및 비행기 모드
간혹 대기창 화면에서 비행기 모드를 통한 인터넷 미연결 결과 코드를 통해 우회 접속(비인가 접속)을 시도하는 경우가 있습니다. 이에 대한 방어는 다음과 같습니다.
- 비정상 행위: 우회 시도자가 대기창 화면에서 비행기 모드 작동 혹은 인터넷 접속 차단
- 방어: 결과 코드 500을 받았을 때, 기기의 네트워크 환경 확인 후 경로 없음을 확인하면 원래 요청을 cancel.
상태 코드
코드 | 설명 | 비고 |
200(SUCCESS) | 성공 시 발생하는 코드 |
|
201(CONTINUE) | 대기 시 발생하는 코드 |
|
300(BYPASS) | 서버 내 200코드에 관계 없이 보내줌 |
|
301(SERVERSIDE_BLOCK) | 서버에서 BLOCK당함 |
|
302(SERVERSIDE_IP_BLOCK) | 서버에서 해당 IP가 BLOCK당함 |
|
303(EXPRESS_NUMBER) | 대기열에 상관 없이 바로 성공으로 간주 |
|
499(USER_CANCEL) | 사용자가 취소했을 경우 | 넷퍼넬 웹뷰 UI 취소 버튼 |
500 | 서비스가 없음 | 우회 행동(비행기 모드 및 네트워크 차단) 감지 시 요청 취소 |
502 | 만료된 key | 요청 취소 |
505 | 존재하지 않는 Key | 요청 취소 |
507 | 잘못된 key 사용 | 요청 취소 |
🏄♂️ 기술 문서에 질문이나 피드백이 있으신가요? support@stclab.com로 문의주시면 답변드리겠습니다.