iOS


iOS 가이드 문서는 Swift UIKit 기준으로 작성되었습니다.

  • 사용언어 : Swift UI

    • Objective-C 형태의 가이드는 제공되지 않습니다.

  • 세로모드 고정

    • 게임은 세로모드 해상도에 최적화 되어 세로모드 잠금 기능을 추가해야 합니다.


1단계: 최상위 ContentView 파일 생성

최상위 ContentView 파일 내 NavigationStack 으로 화면 단위 View를 컨트롤 합니다.

홈화면을 HomeContentView 로 선언 하였으며, navigationDestination 메서드를 통해 런처를 실행할 LauncherContentView 로 이동할 케이스를 선언합니다.

Navigation 전환을 위해 NavigationModel 클래스 파일을 선언합니다.


2단계: 런처 WebView 파일 생성

런처 호출 URL을 로드할 WebView 구조체가 필요합니다.

  • Coordinator 클래스 내 userContentController 에서 script 메세지를 핸들링 하는 로직을 추가합니다.


3단계: 런처 ContentView 파일 생성

런처를 실행할 LauncherContentView 파일을 생성합니다.

  • LauncherContentView 구조체를 선언합니다.

  • body 변수에는 런처가 로드될 WebView 를 선언합니다.

    • 2단계에서 선언된 LauncherWebView 구조체를 사용합니다.

    • 런처 호출 URL 을 로드합니다.

  • 런처 이벤트 처리를 위한 핸들러를 구현합니다.


4단계: 화면 전환 설정

1. WebView 구조체에서 Script Message 핸들링 추가

  • WKWebView 를 사용하며 userContentController 에서 javascript를 전달 받는 이벤트를 등록합니다.

  • 런처에서 딥링크 호출 시 makeUIView 함수 내에서 추가로 스크립트를 주입합니다.

  • 해당 가이드에서는 deepLinkHandler 라는 이름으로 메시지 핸들러 네이밍을 정의하였습니다.

  • Coordinator 클래스 내 userContentController 함수에서 부모의 onDeepLink 콜백을 호출합니다.

2. WebView가 포함된 ContentView 내에서 화면 이동 처리 추가

WebView 내에서 딥링크 이벤트가 발생하면 상위 ContentView에서 해당 이벤트를 전달 받아 네비게이션 이동을 수행합니다.

queryParameters 로 넘어오는 데이터는 화면 전환 시 NavigationModel 에 추가로 정의하여 전달합니다.

개발에 대한 추가 설명이 더 필요하신가요?

"[Client Admin] 로그인 → 오른쪽 하단 채널톡 위젯" 클릭 후 개발 카테고리에 문의 남겨주시면 기술 개발팀에서 확인 후 연락드리겠습니다.

Last updated