iOS용 빠른 시작 가이드
이 문서는 iOS에서 네이버 앱 전환 추적 SDK를 적용하는 데 필요한 필수 구현 항목을 설명합니다. 자세한 내용은 SDK 적용 절차를 참고하세요.
사전 준비 사항
네이버 앱 전환 추적 SDK를 사용하기 전에 다음 사항을 확인합니다.
- 네이버 앱 전환 추적 SDK는 iOS 10.0 이상을 지원합니다.
- SDK를 사용하려면 '네이버 공통키(Site ID)'가 필요합니다. 자세한 내용은 네이버 공통키 발급을 참고하세요.
SDK 설치
네이버 앱 전환 추적 SDK는 CocoaPods를 이용해 설치합니다.
pod 'NTrackerSDKExt'
설정 및 초기화
다음과 같이 SDK를 설정하고 초기화합니다.
application(_:didFinishLaunchingWithOptions:)
에서configure
API로 SDK를 초기화합니다.enableDebugLog
API로 XCode 콘솔에 디버그 로그 출력 여부를 설정할 수 있습니다.phase
로 수집 서버 환경을 설정합니다.- 앱스토어 배포 시 phase는
Release
, 로그 출력 여부는false
여야 합니다.
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
NTrackerExt.enableDebugLog(true)
NTrackerExt.configure(serviceID: serviceID, phase: .debug)
return true
}
}
자세한 내용은 SDK 설정 및 초기화를 참고하세요.
유입 경로 설정
Universal Link나 Custom URL Scheme을 통해 앱으로 전환이 발생한 경우 유입 경로를 수집하여 전환 측정의 정확도를 높일 수 있습니다. 다음과 같이 유입 경로를 설정합니다.
- 유입 경로는
setInflow
API로 수집합니다. - 네이버 광고를 통한 전환 추적 데이터를 측정하려면
setInflow
API로 URL 정보를 수집해야 합니다. 타사 트래커에서 제공하는 딥 링크를 사용한다면 해당 트래커에서 URL 정보를 가공하기 전에 앱으로 유입되는 최초 정보를 그대로setInflow
에 전달해야 합니다.
AppDelegate를 사용하는 경우와 SceneDelegate를 사용하는 경우 구현에 일부 차이가 있습니다. 자세한 내용은 SDK 적용 절차의 유입 경로 설정을 참고하세요.
AppDelegate를 사용하는 경우
AppDelegate를 사용하는 경우 다음과 같이 구현할 수 있습니다.
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
// Universal Link URL
if userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let urlUniversalLink = userActivity.webpageURL {
NTrackerExt.setInflow(url: urlUniversalLink)
}
// Your Codes.
}
func application(_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
// Custom URL Scheme
NTrackerExt.setInflow(url: url)
// Your Codes.
}
}
SceneDelegate를 사용하는 경우
SceneDelegate를 사용하는 경우 다음과 같이 구현할 수 있습니다.
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
func scene(_ scene: UIScene,
willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions) {
// Universal Link URL. App is not running
if let urlUniversalLink = connectionOptions.userActivities.first?.webpageURL {
NTrackerExt.setInflow(url: urlUniversalLink)
}
// Custom URL Scheme. App is not running
if let urlCustomScheme = connectionOptions.urlContexts.first?.url {
NTrackerExt.setInflow(url: urlCustomScheme)
}
// Your Codes.
}
func scene(_ scene: UIScene,
continue userActivity: NSUserActivity) {
// Universal Link URL. App is running or suspended in memory
if userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let urlUniversalLink = userActivity.webpageURL {
NTrackerExt.setInflow(url: urlUniversalLink)
}
// Your Codes.
}
func scene(_ scene: UIScene,
openURLContexts URLContexts: Set<UIOpenURLContext>) {
// Custom URL Scheme. App is running or suspended in memory
if let urlCustomScheme = URLContexts.first?.url {
NTrackerExt.setInflow(url: urlCustomScheme)
}
// Your Codes.
}
}
SwiftUI 앱인 경우
SwiftUI 앱인 경우 다음과 같이 구현할 수 있습니다.
@main
struct SampleApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.onOpenURL { url in
NTrackerExt.setInflow(url: url)
}
}
}
}
전환 이벤트 전송
네이버 앱 전환 추적 SDK에서는 다양한 전환 이벤트를 수집합니다.
- '앱 설치', '앱 실행' 이벤트는 SDK에서 자동으로 수집합니다.
- '구매 완료' 이벤트는
trackPurchaseEvent
, '앱 내 구매 완료' 이벤트는trackInAppPurchaseEvent
로 수집합니다. - 그 외 일반 이벤트는
trackConversionEvent
로 수집합니다.
// 환율 정보는 'ext1'에 입력합니다. 'KRW'인 경우 생략할 수 있습니다.
let items = [
NTrackerConversionItem(quantity: 1, payAmount: 100, id: "id1", ext1: "KRW"),
NTrackerConversionItem(quantity: 2, payAmount: 400, id: "id2", ext1: "KRW"),
NTrackerConversionItem(quantity: 3, payAmount: 900, id: "id3", ext1: "KRW")
]
// 전환 가치와 구매 아이템을 전송하는 경우
NTrackerExt.trackPurchaseEvent(value: 1_400, items: items)
일반 이벤트 전송 시 이벤트 이름은 NTrackerConversionEvent
에 정의되어 있습니다.
NTrackerExt.trackConversionEvent(NTrackerConversionEvent.Subscribe, value: 1_000)