웹뷰 연동 및 통합
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 런타임을 로드하기 위해 아래 절차를 따릅니다.
SwiftRuntimeLoader.swift파일을 생성합니다.- "브리징 헤더를 생성하겠습니까?" 창이 나타나면 "Don't create" 를 선택합니다.
- 생성한 파일에 아래 내용을 추가합니다.
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()
}
}권장 사항
AppDelegate의didFinishLaunchingWithOptions에서 SDK를 초기화합니다.- 개발 환경과 운영 환경에 각각 적합한 Collector URL을 분리하여 사용합니다.
- 의미 있는 사용자 ID를 설정하여 세션 추적의 정확도를 높입니다.
- SDK 초기화 오류 발생 여부를 별도로 모니터링합니다.
지원
추가 문의 사항은 Sophonz 고객 지원팀으로 연락해 주시기 바랍니다.