iOS SDK (v4) (Beta)

GitHub Tag

알립니다

iOS SDK v4 설치 및 설정에 대한 가이드입니다. 이전 버전은 iOS SDK (v1) 가이드에서 확인해 주세요.

에어브릿지 iOS SDK를 설치하고 필요한 설정을 추가할 수 있습니다.

iOS SDK 설치하기

에어브릿지 iOS SDK는 아래 방법으로 설치할 수 있습니다. 설치한 이후에 iOS SDK 테스트로 SDK가 정상적으로 설치됐는지 확인할 수 있습니다.

1. Xcode에서 [File]에서 [Add Packages...]를 클릭해 주세요.

2. 검색창에 아래 주소를 입력하고 [Add Package]를 클릭합니다.

3. [Add Package]를 계속해서 클릭합니다.

4. Xcode의 [Package Dependencies]에서 에어브릿지 iOS SDK 추가를 확인할 수 있습니다.

디바이스 ID를 수집하지 않는 SDK

알립니다

일반 SDK와 제한된 SDK 중에서 1가지 버전만 설치해 주세요.

정책, 환경 등에 따라 GAID, IDFA 같은 디바이스 ID 수집에 제한이 필요할 수 있습니다. 제한된 SDK(Restricted SDK)를 설치하면 에어브릿지 SDK가 GAID, IDFA 같은 디바이스ID를 수집하지 않습니다.

아래 방법에 따라 제한된 SDK를 설치해 주세요.

1. Xcode에서 [File]>[Add Packages...]를 클릭합니다.

2. 검색창에 아래 주소를 입력하고 [Add Package]를 클릭합니다.

3. [Add Package]를 계속해서 클릭합니다.

4. Xcode의 [Package Dependencies]에서 Airbridge가 추가된 것을 확인할 수 있습니다.

SDK 초기화하기

시스템 방식에 따라 SDK 초기화 방법이 다릅니다. SceneDelegate Lifecycle 또는 AppDelegate Lifecycle은 AppDelegate를 참고해 주세요. SwiftUI Lifecycle는 SwiftUI를 참고해 주세요.

YOUR_APP_NAME과 YOUR_APP_SDK_TOKEN은 에어브릿지 대시보드의 [설정]>[토큰 관리]에서 확인할 수 있습니다.

AppDelegateapplication(_:didFinishLaunchingWithOptions:)가장 위에서 Airbridge.initializeSDK 함수를 호출합니다.

123456789101112131415
import UIKit
import Airbridge

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        let option = AirbridgeOptionBuilder(name: "YOUR_APP_NAME", token: "YOUR_APP_SDK_TOKEN")
            .build()
        Airbridge.initializeSDK(option: option)
        return true
    }
}

ATT 프롬프트 제공하기

알립니다

개인정보보호 정책 준수를 위해 필요한 기능은 법률 자문사와 함께 검토해야 합니다.

iOS 환경에서는 식별자로 앱 추적 투명성(AppTrackingTransparency, ATT) 프롬프트에서 정보 수집에 동의한 유저의 IDFA만 수집할 수 있습니다.

유저가 추적에 동의하기 전에는 이벤트 수집을 지연해야 합니다. 유저가 ATT 프롬프트에서 정보 수집에 동의하기 전에 앱 설치 이벤트를 수집하면 이벤트에 식별자가 없어 성과 측정이 어렵습니다. 식별자를 수집하기 위한 충분한 이벤트 수집 지연 시간을 설정하는 것을 권장합니다.

1. ATT 프롬프트에 사용하는 문구를 준비합니다.

2. 준비한 문구를 Info.plist 파일의 NSUserTrackingUsageDescription 키에 입력합니다.

  1. Xcode > YOUR_PROJECT > Info > Custom iOS Target Properties로 이동해주세요.

  2. Key의 항목들에 마우스를 가져가면 표시되는 + 버튼을 누르고 Privacy - Tracking Usage Description 를 입력해 주세요.

  3. Value에 표시할 문구를 입력해 주세요.

3. ATT 프롬프트를 제공하는 시점을 결정합니다.

4. 에어브릿지 iOS SDK는 설치 이벤트가 수집되지 않으면 앱이 실행될 때마다 유저가 추적에 동의하기 전까지 30초 동안 설치 이벤트 수집을 지연합니다. 유저가 추적 동의 여부를 결정하기 전에 앱을 종료하면 설치 이벤트를 수집하지 않고 다음 앱 실행에 다시 시도합니다.

setAutoDetermineTrackingAuthorizationTimeout 함수로 설치 이벤트 수집 지연 시간을 더 길게 설정할 수 있습니다. setAutoDetermineTrackingAuthorizationTimeout 함수의 기본 설정은 300초입니다. 최대 3600초(1시간)까지 설정할 수 있습니다.

123456
import Airbridge
...
let option = AirbridgeOptionBuilder(name: "YOUR_APP_NAME", token: "YOUR_APP_SDK_TOKEN")
    .setAutoDetermineTrackingAuthorizationTimeout(second: 300)
    .build()
Airbridge.initializeSDK(option: option)

주의하세요

앱 설치 이벤트의 수집을 지연하는 시간을 충분히 설정해야 합니다. 유저가 ATT 프롬프트에서 정보 수집에 동의하기 전에 앱 설치 이벤트를 수집하면 IDFA가 함께 수집되지 않습니다.

옵트인(Opt-In) 설정하기

알립니다

필수 설정 기능이 아닙니다. 필요한 기능인지 확인한 후에 설정해 주세요.

옵트인(Opt-In)은 유저가 동의하기 전에 유저 정보를 사용하지 않는 정책입니다.

setAutoStartTrackingEnabled 함수를 false로 설정한 후에 이벤트를 수집할 수 있는 시점에 startTracking 함수를 호출합니다. startTracking 함수가 호출된 시점부터 이벤트를 수집합니다.

12345678
import Airbridge
...
let option = AirbridgeOptionBuilder(name: "YOUR_APP_NAME", token: "YOUR_APP_SDK_TOKEN")
    .setAutoStartTrackingEnabled(false)
    .build()
Airbridge.initializeSDK(option: option)
...
Airbridge.startTracking()

옵트아웃(Opt-Out) 설정하기

알립니다

필수 설정 기능이 아닙니다. 필요한 기능인지 확인한 후에 설정해 주세요.

옵트아웃(Opt-Out)은 유저가 거부하기 전에 유저 정보를 사용하는 정책입니다.

setAutoStartTrackingEnabled 설정을 true로 설정한 후에 이벤트를 수집할 수 없는 시점에 stopTracking 함수를 호출합니다. stopTracking 함수가 호출된 시점부터 이벤트를 수집하지 않습니다.

12345678
import Airbridge
...
let option = AirbridgeOptionBuilder(name: "YOUR_APP_NAME", token: "YOUR_APP_SDK_TOKEN")
    .setAutoStartTrackingEnabled(true)
    .build()
Airbridge.initializeSDK(option: option)
...
Airbridge.stopTracking()

SDK 시그니처 설정하기

알립니다

필수 설정 기능이 아닙니다. 필요한 기능인지 확인한 후에 설정해 주세요.

SDK 시그니처(SDK Signature)로 SDK 스푸핑(SDK Spoofing)을 방지해 정확성과 안전성이 검증된 이벤트만 광고 성과 측정에 사용할 수 있습니다.

SDK 시그니처 설정에 SDK 시그니처 보안 정보가 필요합니다. SDK 시그니처 보안 정보에는 시크릿 ID와 시크릿이 있습니다. 필요한 SDK 시그니처 보안 정보는 에어브릿지 대시보드에서 확인할 수 있습니다. SDK 시그니처 보안 정보에 대한 자세한 내용은 에어브릿지 가이드를 참고해 주세요.

SDK 초기화 코드 위에서 setSDKSignature 함수를 호출해 SDK 시그니처를 설정할 수 있습니다.

123456789
import Airbridge
...
let option = AirbridgeOptionBuilder(name: "YOUR_APP_NAME", token: "YOUR_APP_SDK_TOKEN")
    .setSDKSignature(
        id: "YOUR_SDK_SIGNATURE_SECRET_ID",
        secret: "YOUR_SDK_SIGNATURE_SECRET"
    )
    .build()
Airbridge.initializeSDK(option: option)

SDK 설정에 필요한 정보는 아래와 같습니다.

  • YOUR_APP_NAME: 에어브릿지 앱 이름. 에어브릿지 대시보드의 [설정]>[토큰 관리]에서 확인할 수 있습니다.

  • YOUR_APP_SDK_TOKEN: 안드로이드 SDK 토큰. 에어브릿지 대시보드의 [설정]>[토큰 관리]에서 확인할 수 있습니다.

  • YOUR_SDK_SIGNATURE_SECRET_ID: 시크릿 ID. 에어브릿지 대시보드 [규칙 관리]>[광고사기 검증 규칙]>[SDK 시그니처]에서 확인할 수 있습니다.

  • YOUR_SDK_SIGNATURE_SECRET: 시크릿. 에어브릿지 대시보드 [규칙 관리]>[광고사기 검증 규칙]>[SDK 시그니처]에서 확인할 수 있습니다.

딥링크

딥링크를 설정하면 트래킹 링크가 있는 광고를 클릭한 유저를 원하는 앱의 특정 페이지로 이동시킬 수 있습니다. 또한 트래킹 링크로 수집된 정보를 바탕으로 딥링크를 통해서 발생한 성과를 에어브릿지에서 확인할 수 있습니다.

에어브릿지의 딥링크 작동 방식

에어브릿지는 트래킹 링크를 생성하면서 유저의 이동에 사용하는 스킴 딥링크(Scheme Deeplink)를 환경에 따라 최적의 에어브릿지 딥링크(Airbridge Deeplink)를 자동으로 선택해 활용합니다.

예시)

  • 에어브릿지 딥링크: https://YOUR_APP_NAME.airbridge.io/~~~

  • 스킴 딥링크: YOUR_SCHEME://product/12345

앱이 설치된 상태에서는 유저가 트래킹 링크를 열면 에어브릿지 딥링크로 앱이 열립니다. 에어브릿지 SDK가 해당 에어브릿지 딥링크를 트래킹링크에 설정된 스킴 딥링크로 변환합니다. 변환된 스킴 딥링크는 앱에 전달됩니다.

앱이 설치되어 있지 않은 상태에서는 유저가 트래킹 링크를 열면 에어브릿지 딥링크를 저장합니다. 앱스토어 또는 웹 사이트로 이동한 후에 앱이 설치된 이후 실행되면 에어브릿지 SDK가 저장된 에어브릿지 딥링크를 스킴 딥링크로 변환합니다. 변환된 스킴 딥링크는 앱에 전달됩니다.

딥링크 설정하기

딥링크를 설정합니다. 에어브릿지 대시보드에서 설정한 정보와 유저가 이동하는 목적지로 사용되는 앱 페이지 주소가 필요합니다.

먼저 에어브릿지에 딥링크 정보를 등록합니다.

에어브릿지에 딥링크 정보를 등록한 후에 앱에 딥링크를 설정해야 합니다. 앱의 시스템 방식에 따라 딥링크 설정에 필요한 과정을 확인해 주세요.

디퍼드 딥링크 설정하기

앱이 설치되지 않은 상태에서 디퍼드 딥링크를 설정한 트래킹 링크를 클릭하면 에어브릿지 딥링크를 저장합니다. 디퍼드 딥링크를 설정하면 에어브릿지 SDK는 아래와 같은 방식으로 딥링크를 획득합니다.

Airbridge.handleDeferredDeeplink 함수는 저장된 에어브릿지 딥링크를 획득한 후에 스킴 딥링크로 변환해 앱에 전달합니다. 변환된 스킴 딥링크를 활용해 유저를 설정한 목적지로 보냅니다.

1234567891011
import Airbridge
...
let option = AirbridgeOptionBuilder(name: "YOUR_APP_NAME", token: "YOUR_APP_SDK_TOKEN")
    .build()
Airbridge.initializeSDK(option: option)
...
let isHandled = Airbridge.handleDeferredDeeplink() { url in
    if let url {
        // show proper content using url (YOUR_SCHEME://...)
    }
}

Airbridge.handleDeferredDeeplink 함수는 앱이 설치되고 처음으로 호출되었으면 true를 반환하고, 에어브릿지 딥링크 획득을 기다려 스킴 딥링크로 변환해 onSuccess로 전달합니다. 해당 스킴 딥링크를 활용해 유저를 설정한 목적지로 보낼 수 있습니다.

또는 저장된 에어브릿지 딥링크가 없으면 nil을 onSuccess 전달합니다. SDK가 초기화되지 않았거나 Airbridge.handleDeferredDeeplink 함수를 처음으로 호출하지 않았다면 false를 전달합니다.

전달되는 스킴 딥링크는 일반적으로 YOUR_SCHEME://... 형태의 URL입니다. 메타 디퍼드 앱 링크(Meta Deferred App Links) 같은 서비스를 이용하면 다른 형태의 URL이 전달될 수 있습니다.

인앱 이벤트

에어브릿지 SDK가 서비스에서 발생한 유저의 특정 행동을 설정에 따라 수집한 후에 인앱 이벤트로 전송합니다.

인앱 이벤트 전송하기

하이브리드 앱 설정하기

하이브리드 앱에서 웹 사이트 코드를 변경하지 않아도 인앱 웹 사이트에서 발생하는 에어브릿지 관련 작업을 iOS SDK가 처리하도록 설정할 수 있습니다.

이벤트를 전송하기 위해서는 Airbridge.trackEvent 함수를 호출해야 합니다. Airbridge.trackEvent 함수 구성요소의 필수 여부와 타입은 아래와 같습니다.

1234567891011121314
static func trackEvent(
    category: String
)

static func trackEvent(
    category: String,
    semanticAttributes: [String : Any]
)

static func trackEvent(
    category: String,
    semanticAttributes: [String : Any],
    customAttributes: [String : Any]
)

구성요소

필수 여부

타입

설명

category

필수

String

이벤트의 카테고리

semanticAttributes

선택

[String: Any]

이벤트의 시맨틱 어트리뷰트

customAttributes

선택

[String: Any]

이벤트의 커스텀 어트리뷰트

각 구성요소의 정의와 사용할 수 있는 문자열을 아래에서 확인해 주세요.

SDK가 제공하는 스탠다드 이벤트 카테고리와 시맨틱 어트리뷰트는 아래와 같습니다.

아래 데이터 유형별 예시 코드를 참고해 주세요.

123456789101112131415
import Airbridge
...
Airbridge.trackEvent(
    category: "event",
    semanticAttributes: [
        AirbridgeAttribute.VALUE: 10,
    ],
    customAttributes: [
        "string": "string",
        "number": 1000,
        "boolean": true,
        "object": ["key": "value"],
        "array": ["value"],
    ]
)

인앱 이벤트 추가 설정하기

알립니다

설정하지 않아도 기본 설정이 적용되어 있습니다. 추가 설정 필요한지 검토한 후에 진행해 주세요.

전송하는 인앱 이벤트에 필요한 설정을 추가할 수 있습니다.

인앱 이벤트 예시 코드

에어브릿지가 수집하는 주요 인앱 이벤트는 스탠다드 이벤트와 커스텀 이벤트입니다. 스탠다드 이벤트는 에어브릿지가 정의한 이벤트입니다. 아래 예시 코드를 참고해 주세요.