웹뷰 연동 및 통합

Sophonz iOS SDK의 WebView 세션 연결, Objective-C 프로젝트 통합, 권장 사항 및 지원 안내입니다.

웹뷰 페이지 세션 연결

NOTE — 하이브리드 앱(WebView 사용) 안내

Sophonz iOS SDK, Android SDK, Browser SDK는 각 환경에 맞는 데이터를 독립적으로 수집합니다. iOS 앱의 WebView를 통해 웹 페이지를 호출하는 경우, 하나의 사용자 세션으로 통합하고 WebView 데이터를 수집하려면 아래 WKWebViewConfiguration 설정이 필요합니다.

네이티브 세션과 WebView 세션을 통합하려면 세션 공유 여부를 먼저 설정합니다. 기본값은 true(공유)입니다.

Sophonz.setSharedSession(session: Bool)
초기화 방식처리 방법
코드로 WKWebView 초기화SDK가 자동으로 스크립트 주입 → 별도 설정 불필요
xib로 WKWebView 초기화Sophonz.setWebviewConfiguration(userContentController:) 수동 호출
Bridge 사용SophonzSDKBridge(webView:) 초기화, 화면 이탈 시 removeScriptMessageHandler() 호출

방법 1: 코드로 WKWebView를 초기화하는 경우

let config = WKWebViewConfiguration()
let view   = WKWebView(frame: .zero, configuration: config)

방법 2: xib로 WKWebView를 초기화하는 경우

let request = URLRequest(url: URL(string: "https://example.com/")!)
 
Sophonz.setWebviewConfiguration(
    userContentController: wkWebView.configuration.userContentController
)
wkWebView.load(request)

방법 3: Bridge를 통해 WebAgent에 파라미터를 전달하는 경우

// WebViewVC에서 Bridge 초기화 시 WebView 인스턴스를 전달합니다.
self.bridge = SophonzSDKBridge(webView: wkWebView)
 
// WebViewVC가 pop 또는 disappear될 때 반드시 연결을 해제합니다.
SophonzSDKBridge.removeScriptMessageHandler()

Objective-C 전용 프로젝트 통합

프로젝트가 Objective-C로만 구성된 경우, Swift 런타임을 로드하기 위해 아래 절차를 따릅니다.

  1. SwiftRuntimeLoader.swift 파일을 생성합니다.
  2. "브리징 헤더를 생성하겠습니까?" 창이 나타나면 "Don't create" 를 선택합니다.
  3. 생성한 파일에 아래 내용을 추가합니다.
import Foundation
@objc class SwiftRuntimeLoader: NSObject {}

이 클래스는 Objective-C 프로젝트에서 Swift 런타임이 정상적으로 로드되도록 보장합니다.

SwiftUI 렌더 추적 추가

SwiftUI 뷰의 생명주기를 추적하려면 SceneDelegate에 아래 코드를 추가합니다.

import SophonzCore
 
func scene(_ scene: UIScene, willConnectTo session: UISceneSession,
           options connectionOptions: UIScene.ConnectionOptions) {
    if let windowScene = scene as? UIWindowScene {
        let window = UIWindow(windowScene: windowScene)
        window.rootViewController = UIHostingController(
            rootView: LandmarkList()
                .sophonzTrackLifecycle(viewName: nil)
                .environmentObject(UserData()))
        self.window = window
        window.makeKeyAndVisible()
    }
}

권장 사항

  • AppDelegatedidFinishLaunchingWithOptions에서 SDK를 초기화합니다.
  • 개발 환경과 운영 환경에 각각 적합한 Collector URL을 분리하여 사용합니다.
  • 의미 있는 사용자 ID를 설정하여 세션 추적의 정확도를 높입니다.
  • SDK 초기화 오류 발생 여부를 별도로 모니터링합니다.

지원

추가 문의 사항은 Sophonz 고객 지원팀으로 연락해 주시기 바랍니다.