본문으로 건너뛰기

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)

자세한 내용은 SDK 적용 절차전환 이벤트 전송을 참고하세요.