website logo
Surffy Docs
Surffy Docs (Korean)
Surffy-FFFLOW
Surffy-FFFLOW (Korean)
Navigate through spaces
⌘K
Surffy
Surffy 개요
Surffy 메인
Surffy 사용자 관리
NetFUNNEL
NetFUNNEL 개요
NetFUNNEL 시작하기
NetFUNNEL 설정
NetFUNNEL 메인
모니터링
용어 사전
릴리즈 노트 (v23.05.2)
Changelogs
For Developers
Web Agent
Android Agent
iOS Agent
Docs powered by archbee 

iOS Agent

14min



iOS

이 문서는 iOS 환경에서의 Surffy NetFUNNEL Agent 적용 및 연동 가이드를 제공합니다.

설치

  1. SurffyAgent 프레임워크를 적용합니다. Xcode에서 Surffy NetFUNNEL을 적용할 프로젝트의 세부 정보 탭으로 이동 후 Build Phases를 클릭합니다. Link Binary With Libraries에서 Framework의 위치를 찾아 등록합니다. Framework 등록 후 정상적으로 import되었는지 확인합니다.
Document image

Document image

Document image

Document image


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

Document image


3. viewDidLoad() 함수의 override에 아래의 코드를 추가합니다.

Swift
|
let agent = SurffyAgent.shared 
agent.setConfig(tenantURL: "surffy console 에서 출력된  tenant url",
                projectDetailURL: "surffy console 에서 출력된 projectDetail url"
                eumURL : "surffy console 에서 출력된 eum url")
                
URLProtocol.registerClass(STCNFProtocol.self)


아래 예시와 같이 동작을 정의할 수 있습니다.

Swift
|
@IBAction func Action_connect(_ sender: Any) {

        if let url = URL(string: "example url string")
        {
            // Below codes can be differ by users' setting
            var request = URLRequest.init(url: url)
            request.httpMethod = "GET"
            request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
            
            let task = URLSession.shared.dataTask(with: request)
            { (data, response, error) in
                if let e = error
                {
                    NSLog("An error has occured: \(e.localizedDescription)")
                    return
                }
                /*
                Action intened to perfrom goes here
                */
            }
            task.resume()
        }
}




속성

사용자가 입력해야 하는 속성은 다음과 같습니다.

  • 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로 문의주시면 답변드리겠습니다.

PREVIOUS
Android Agent
Docs powered by archbee 
TABLE OF CONTENTS
iOS
설치
속성
요구 사양
기능
부록
비정상 행위 방어
인터넷 미연결 및 비행기 모드
상태 코드