• 개발자 가이드
  • SDK Integration
  • Web SDK

Web SDK

Web SDK 설치하기

에어브릿지 Web SDK는 아래 방법으로 패키지를 설치할 수 있습니다.

지원 브라우저

에어브릿지 Web SDK는 ES5를 지원하는 모든 브라우저에서 동작합니다.

브라우저

지원 여부

Chrome

✔️

Firefox

✔️

Safari

✔️

Internet Explorer

IE 9 이상

SDK 초기화하기

에어브릿지 Web SDK는 airbridge.init() 함수를 사용하여 초기화할 수 있습니다. 초기화 시 필수로 입력해야 하는 appwebToken은 에어브릿지 대시보드의 설정 → 토큰 관리에서 확인할 수 있습니다. 필요에 따라 다양한 초기화 옵션을 추가로 설정할 수 있습니다.

아래 코드는 초기화 예시 코드입니다.

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

알립니다

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

옵트인(Opt-In)은 유저가 동의할 때에만 유저 정보를 사용하는 정책입니다.

autoStartTrackingEnabled 옵션을 false로 설정한 후에, 이벤트를 수집할 수 있는 시점에 startTracking 함수를 호출하세요. startTracking 함수가 호출된 시점부터 이벤트 수집을 시작합니다.
기본 설정은 true입니다.

  1. autoStartTrackingEnabled 설정으로, 초기화를 마친 후에 자동으로 이벤트 추적이 시작되지 않도록 설정하세요.

    123456
    airbridge.init({
        app: 'YOUR_APP_NAME',
        webToken: 'YOUR_WEB_TOKEN',
        // ...
        autoStartTrackingEnabled: false,
    })
  2. 개인정보 수집 및 활용에 대한 유저 응답을 수집하세요. 유저가 개인정보 수집 및 활용에 동의하면 이벤트 추적을 시작합니다.

    1
    airbridge.startTracking()

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

알립니다

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

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

autoStartTrackingEnabled 옵션을 true로 설정한 후에, 이벤트를 수집할 수 없는 시점에 stopTracking 함수를 호출하세요. stopTracking 함수가 호출된 시점부터 이벤트 수집을 시작합니다.

  1. autoStartTrackingEnabled 설정으로, 초기화를 마친 후에 자동으로 이벤트 추적이 시작되도록 설정하세요. autoStartTrackingEnabled 옵션의 기본값이 true이기 때문에 입력하지 않아도 자동으로 이벤트를 추적합니다.

    123456
    airbridge.init({
    	app: 'YOUR_APP_NAME',
    	webToken: 'YOUR_WEB_TOKEN',
    	// ...
    	autoStartTrackingEnabled: true,
    })
  2. 개인정보 수집 및 활용에 대한 유저 응답을 수집하세요. 유저가 개인정보 수집 및 활용을 거부하면 이벤트 추적을 중단합니다.

    1
    airbridge.stopTracking()

웹 이벤트

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

웹 이벤트 전송하기

웹 이벤트를 전송하기 위해 airbridge.events.send 함수를 사용합니다.
아래 예시를 참고하세요.

123456789101112131415161718
airbridge.events.send('category', {
    label: 'Tool',
    action: 'Hammer',
    value: 10,
    semanticAttributes: {
        currency: 'USD',
        transactionID: 'transaction_123',
        products: [
            {
                productID: 'coke_zero',
                name: 'PlasticHammer',
            },
        ],
    },
    customAttributes: {
        promotion: 'FirstPurchasePromotion',
    },
})

옵션

필수여부

타입

설명

category

필수

string

이벤트의 이름

action

선택

string

이벤트 하위 분류

label

선택

string

이벤트 하위 분류

value

선택

number

이벤트 하위 분류

semanticAttributes

선택

object

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

customAttributes

선택

object

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

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

웹 이벤트 추가 설정하기

알립니다

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

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

이벤트 예시 코드

에어브릿지가 수집하는 주요 인앱 이벤트는 스탠다드 이벤트와 커스텀 이벤트입니다.

스탠다드 이벤트는 에어브릿지가 정의한 이벤트입니다.
아래 예시 코드를 참고하세요.

커스텀 이벤트는 앱 서비스에 맞는 광고 성과를 추적하기 위해 스탠다드 이벤트에 해당하지 않는 유저의 행동을 새로 정의한 이벤트입니다.
아래 예시 코드를 참고하세요.

1234567891011
airbridge.events.send('category', {
    label: 'label',
    action: 'action',
    value: 10,
    semanticAttributes: {
        transactionID: 'transaction_123',
    },
    customAttributes: {
        key: 'value',
    }
})

유저 정보

유저 ID 설정하기

유저 ID는 서비스에서 활용하는 유저 식별자입니다. 유저 ID는 유저를 웹과 앱에서 하나의 유저로 특정할 수 있는 고유한 ID이어야 합니다.
설정한 유저 정보는 브라우저의 Local Storage에 남아 유저 정보를 초기화하기 전까지 모든 이벤트에 함께 전송됩니다.

함수

설명

airbridge.setUserID

유저 ID를 입력합니다.

airbridge.clearUserID

유저 ID를 삭제합니다.

airbridge.setUserAlias

유저 식별자를 추가로 입력합니다.

airbridge.removeUserAlias

추가로 입력한 유저 식별자 중에서 지정한 식별자를 삭제합니다.

Airbridge.clearUserAlias

추가로 입력한 모든 유저 식별자를 삭제합니다.

아래 예시를 참고하세요.

12345678
// ID
airbridge.setUserID('testID')
airbridge.clearUserID()

// alias
airbridge.setUserAlias('ADD_YOUR_KEY', 'value')
airbridge.removeUserAlias('DELETE_THIS_KEY')
airbridge.clearUserAlias()

유저 속성 설정하기

주의하세요

민감한 유저 정보가 포함될 수 있습니다. 법률 자문사와 충분히 검토한 후에 전송하세요.

유저 속성을 설정하면 추가 유저 정보를 전송할 수 있습니다.

함수

설명

airbridge.setUserEmail

유저 이메일을 입력합니다. SHA-256으로 해시(Hash)화되어 있습니다.

airbridge.clearUserEmail

유저 이메일을 삭제합니다.

airbridge.setUserPhone

유저 전화 번호를 입력합니다. SHA-256으로 해시화되어 있습니다.

airbridge.clearUserPhone

유저 전화 번호를 삭제합니다.

airbridge.setUserAttribute

유저 속성을 추가로 입력합니다.

airbridge.removeUserAttribute

추가로 입력한 유저 속성 중에서 지정한 속성을 삭제합니다.

airbridge.clearUserAttributes

추가로 입력한 모든 유저 속성을 삭제합니다.

123456789101112
// Automatically hashed on client side using SHA256
// Can turn off hashing feature with special flag
airbridge.setUserEmail('testID@ab180.co')
airbridge.setUserPhone('821012341234')

// attributes
airbridge.setUserAttribute('ADD_YOUR_KEY', 1)
airbridge.setUserAttribute('ADD_YOUR_KEY', 1.0)
airbridge.setUserAttribute('ADD_YOUR_KEY', '1')
airbridge.setUserAttribute('ADD_YOUR_KEY', true)
airbridge.removeUserAttribute('DELETE_THIS_KEY')
airbridge.clearUserAttributes()

유저 이메일과 전화번호를 해시화하여 전송할 수 있습니다.
기본 설정은 true입니다.

유저 ID는 해시 옵션 적용을 받지 않으므로, 해시화가 필요한 경우에는 직접 유저 ID를 해시화하여 값을 넣어주세요.

123456
airbridge.init({
    app: '<YOUR_APP_NAME>',
    webToken: '<YOUR_WEB_TOKEN?',
    // ...
    userHash: false, // Default true
})

유저 정보 초기화하기

clearUser 함수로 유저 정보를 초기화할 수 있습니다.

1
airbridge.clearUser()

웹 투 앱 연동 설정

에어브릿지 Web SDK는 웹에서의 기여 정보를 앱으로 전달할 수 있는 딥링크 기능을 지원합니다.
또한, 앱이 아니더라도 웹에서 웹으로 기여 정보를 전달할 수 있습니다.

스마트 앱 배너 만들기

openBanner 함수를 통해 웹 유저들에게 앱 설치를 유도하는 스마트 배너를 만들 수 있습니다. 다양한 옵션을 통해 배너의 제목, 설명, 버튼의 색깔과 텍스트 등을 변경할 수 있고, 웹 투 앱 또는 웹 투 스토어웹 투 웹 기능을 구현할 수 있습니다.

공통 옵션

옵션

필수여부

타입

설명

title

필수

string

배너 제목입니다.

description

필수

string

배너 설명입니다.

buttonText

필수

string

배너의 앱 다운로드 유도 버튼에 입력할 텍스트입니다.

color

선택

string

배너의 앱 다운로드 유도 버튼에 설정할 색상입니다. CSS 색상 형식으로 설정할 수 있습니다.

position

선택

'top' | 'bottom'

배너의 위치입니다.
- top을 선택하면 배너가 화면 위에 위치합니다.
- bottom을 선택하면 배너가 화면 아래에 위치합니다.

destination

필수

object

배너의 앱 다운로드 유도 버튼이 동작하는 방식입니다. type에 따라 동작 방식이 다릅니다.

styles

선택

object

배너의 설정할 커스텀 스타일입니다.

웹 투 앱 설정

destination 옵션의 typedeeplink로 설정하면, 배너 버튼 클릭 시 앱을 열 수 있습니다.

옵션

필수여부

타입

설명

destination.type

필수

'deeplink'

deeplink입니다. 변경할 수 없습니다.

destination.deeplinks

선택

object

딥링크 설정입니다.
자세한 내용은 딥링크 설정 가이드를 참고하세요.

destination.fallbacks

선택

object

딥링크 폴백 설정입니다.
자세한 내용은 딥링크 설정 가이드를 참고하세요.

destination.defaultParams

선택

object

캠페인 파라미터입니다.

destination.ctaParams

선택

object

CTA 캠페인 파라미터입니다.

123456789101112131415161718192021222324252627282930
airbridge.openBanner({
    title: '<BANNER_TITLE>',
    description: '<BANNER_DESCRIPTION>',
    buttonText: '<BANNER_BUTTON_TEXT>',
    color: '<BANNER_BUTTON_COLOR>',
    position: '<BANNER_POSITION>', // 'top' or 'bottom'
    destination: {
        type: 'deeplink',
        deeplinks: {
            android: '<YOUR_SCHEME>://...',
            ios: '<YOUR_SCHEME>://...',
            desktop: 'https://www.example.com/'
        },
        fallbacks: {
            android: 'google-play',
            ios: 'itunes-appstore',
        },
    },
    defaultParams: {
        campaign: '<EXAMPLE_CAMPAIGN>',
        medium: '<EXAMPLE_MEDIUM>',
        term: '<EXAMPLE_TERM>',
        content: '<EXAMPLE_CONTENT>',
    },
    ctaParams: {
        cta_param_1: '<EXAMPLE_CTA_PARAM_1>',
        cta_param_2: '<EXAMPLE_CTA_PARAM_2>',
        cta_param_3: '<EXAMPLE_CTA_PARAM_3>',
    },
})

웹 투 스토어 설정

destination 옵션의 typedownload로 설정하면, 배너 버튼 클릭 시 스토어를 열 수 있습니다.

옵션

필수여부

타입

설명

destination.type

필수

'download'

download입니다. 변경할 수 없습니다.

destination.defaultParams

선택

object

캠페인 파라미터입니다.

destination.ctaParams

선택

object

CTA 캠페인 파라미터입니다.

123456789101112131415161718192021
airbridge.openBanner({
    title: '<BANNER_TITLE>',
    description: '<BANNER_DESCRIPTION>',
    buttonText: '<BANNER_BUTTON_TEXT>',
    color: '<BANNER_BUTTON_COLOR>',
    position: '<BANNER_POSITION>', // 'top' or 'bottom'
    destination: {
        type: 'download',
    },
    defaultParams: {
        campaign: '<EXAMPLE_CAMPAIGN>',
        medium: '<EXAMPLE_MEDIUM>',
        term: '<EXAMPLE_TERM>',
        content: '<EXAMPLE_CONTENT>',
    },
    ctaParams: {
        cta_param_1: '<EXAMPLE_CTA_PARAM_1>',
        cta_param_2: '<EXAMPLE_CTA_PARAM_2>',
        cta_param_3: '<EXAMPLE_CTA_PARAM_3>',
    },
})

웹 투 웹 설정

destination 옵션의 typeweb으로 설정하면, 배너 버튼 클릭시 웹 사이트로 이동할 수 있습니다.

옵션

필수여부

타입

설명

destination.type

필수

'web'

web입니다. 변경할 수 없습니다.

destination.url

필수

string

유저를 이동시킬 URL을 입력합니다.

12345678910111213141516171819202122
airbridge.openBanner({
    title: '<BANNER_TITLE>',
    description: '<BANNER_DESCRIPTION>',
    buttonText: '<BANNER_BUTTON_TEXT>',
    color: '<BANNER_BUTTON_COLOR>',
    position: '<BANNER_POSITION>', // 'top' or 'bottom'
    destination: {
        type: 'web',
        url: 'https://www.example.com',
    },
    defaultParams: {
        campaign: '<EXAMPLE_CAMPAIGN>',
        medium: '<EXAMPLE_MEDIUM>',
        term: '<EXAMPLE_TERM>',
        content: '<EXAMPLE_CONTENT>',
    },
    ctaParams: {
        cta_param_1: '<EXAMPLE_CTA_PARAM_1>',
        cta_param_2: '<EXAMPLE_CTA_PARAM_2>',
        cta_param_3: '<EXAMPLE_CTA_PARAM_3>',
    },
})

커스텀 스타일

옵션에 styles 필드를 추가하여 커스텀 스타일을 지정할 수 있습니다.

Key 에는 CSS Selector 형식으로 지정합니다. Value 에는 CSSStyleDeclaration (TypeScript) 형식으로 지정합니다.

아래 예시를 참고하세요. 아이콘 영역의 border-radius 스타일을 변경합니다.

12345678
airbridge.openBanner({
    ...
    styles: {
        '#airbridge-banner-icon': {
            borderRadius: '4px'
        }
    }
})

CSS 스타일을 지정할 수 있는 id 를 제공합니다. #airbridge-banner-icon 와 같이 CSS Selector 형식으로 지정할 수 있습니다.

ID

설명

airbridge-banner

배너 전체 영역

airbridge-banner-icon

배너 아이콘

airbridge-banner-title

배너 제목

airbridge-banner-description

배너 설명

airbridge-banner-open

앱 다운로드 유도 버튼

airbridge-banner-close

배너 닫기 버튼

커스텀 배너 직접 구현하기

이미 관리하고 있는 배너에 딥링크 기능을 추가하거나, 더 복잡한 구성으로 커스텀 배너를 직접 구현하려는 경우, 에어브릿지 Web SDK에서 제공하는 기능을 활용하여 구현할 수 있습니다.

웹 투 앱 설정

openDeeplink 함수를 통해 딥링크로 앱을 열 수 있습니다.

옵션

필수여부

타입

설명

deeplinks.android

필수

string

Android에서 딥링크로 실행할 앱의 Scheme URL입니다.

deeplinks.ios

필수

string

iOS에서 딥링크로 실행할 앱의 Scheme URL입니다.

deeplinks.desktop

필수

string

Desktop에서 이동할 웹 사이트 URL입니다.

fallbacks.android

필수

'google-play' | string

Android에서 앱 미설치로 인한 딥링크 실패 시 이동할 스토어 혹은 웹 사이트 URL입니다.
- google-play: 에어브릿지 대시보드에 등록한 앱의 Google Play Store로 이동합니다.
- URL: 이동할 웹 사이트 URL입니다.

fallbacks.ios

필수

'itunes-appstore' | string

iOS에서 앱 미설치로 인한 딥링크 실패 시 이동할 스토어 혹은 웹 사이트 URL입니다.
- itune-appstore: 에어브릿지 대시보드에 등록한 앱의 App Store로 이동합니다.
- URL: 이동할 웹 사이트 URL 입니다.

type

선택

'redirect' | 'click'

유저의 상호작용 여부에 따라 아래 옵션 중 하나를 선택하세요.
- redirect: 유저의 상호작용이 없는 상황에서 사용합니다.
- click: 버튼 클릭 등 유저의 상호작용을 보장할 수 있는 상황에서 사용합니다.

defaultParams

선택

object

캠페인 파리미터입니다.

ctaParams

선택

object

CTA 캠페인 파라미터입니다.

아래 예시를 참고하세요.

123456789101112131415161718192021222324252627282930
airbridge.openDeeplink({
    deeplinks: {
        // Please use the custom scheme URL like `<YOUR_SCHEME>://...`
        // Don't use the `intent://...`, `market://...` or `https://...`
        android: '<YOUR_SCHEME>://path?key=value',
        // Please use the custom scheme URL like `<YOUR_SCHEME>://...`
        // Don't use the `intent://...`, `market://...` or `https://...`
        ios: '<YOUR_SCHEME>://path?key=value',
        desktop: 'https://www.example.com/path?key=value',
    },
    fallbacks: {
        // Please use `google-play` or website URL like `https://www.example.com/...`.
        // Don't use the store URL like `https://play.google.com/...`
        android: 'google-play',
        // Please use `itunes-appstore` or website URL like `https://www.example.com/...`.
        // Don't use the store URL like `https://apps.apple.com/...`
        ios: 'itunes-appstore',
    },
    defaultParams: {
        campaign: '<EXAMPLE_CAMPAIGN>',
        medium: '<EXAMPLE_MEDIUM>',
        term: '<EXAMPLE_TERM>',
        content: '<EXAMPLE_CONTENT>',
    },
    ctaParams: {
        cta_param_1: '<EXAMPLE_CTA_PARAM_1>',
        cta_param_2: '<EXAMPLE_CTA_PARAM_2>',
        cta_param_3: '<EXAMPLE_CTA_PARAM_3>',
    },
})

주의하세요

반드시 deeplinks.androiddeeplinks.ios 에 에어브릿지 대시보드에서 설정한 딥링크 Scheme URL을 사용하세요.

  • 예) <YOUR_SCHEME>://...

다음과 같은 Intent Scheme URL 혹은 HTTP/HTTPS URL 을 사용하지 마세요.

  • 예) intent://...

  • 예) market://...

  • 예) https://www.example.com

다음과 같이 버튼 이벤트에 사용할 수 있습니다.

123456
<button id="<BUTTON_ID>">앱으로 보기</button>
<script>
    document.querySelector('#<BUTTON_ID>').addEventListener('click', () => {
        airbridge.openDeeplink({ ... })
    })
</script>

주의하세요

반드시 예시에 적혀있는 <BUTTON_ID> 를 실제로 유저 클릭 시 딥링크 기능이 동작해야 할 버튼의 ID 를 입력해 주세요.

웹 투 스토어 설정

openDeeplink 함수에 deeplinks 옵션을 입력하지 않고, fallbacks 옵션을 스토어로 설정하면, 앱 설치 여부와 상관 없이 스토어를 열 수 있습니다.

옵션

필수 여부

타입

설명

fallbacks.android

필수

'google-play'

Android에서 이동할 스토어입니다. google-play이며, 변경할 수 없습니다.
- google-play: 에어브릿지 대시보드에 등록한 앱의 Google Play Store로 이동합니다.

fallbacks.ios

필수

'itunes-appstore'

iOS에서 이동할 스토어입니다. itune-appstore이며, 변경할 수 없습니다.
- itune-appstore: 에어브릿지 대시보드에 등록한 앱의 App Store로 이동합니다.

defaultParams

선택

object

캠페인 파리미터입니다.

ctaParams

선택

object

CTA 캠페인 파라미터입니다.

아래 예시를 참고하세요.

1234567891011121314151617
airbridge.openDeeplink({
    fallbacks: {
        android: 'google-play',
        ios: 'itunes-appstore',
    },
    defaultParams: {
        campaign: '<EXAMPLE_CAMPAIGN>',
        medium: '<EXAMPLE_MEDIUM>',
        term: '<EXAMPLE_TERM>',
        content: '<EXAMPLE_CONTENT>',
    },
    ctaParams: {
        cta_param_1: '<EXAMPLE_CTA_PARAM_1>',
        cta_param_2: '<EXAMPLE_CTA_PARAM_2>',
        cta_param_3: '<EXAMPLE_CTA_PARAM_3>',
    },
})

다음과 같이 버튼 이벤트에 사용할 수 있습니다.

123456
<button id="<BUTTON_ID>">앱 다운로드하기</button>
<script>
    document.querySelector('#<BUTTON_ID>').addEventListener('click', () => {
        airbridge.openDeeplink({ ... })
    })
</script>

주의하세요

반드시 예시에 적혀있는 <BUTTON_ID> 를 실제로 유저 클릭 시 딥링크 기능이 동작해야 할 버튼의 ID 를 입력해 주세요.

웹 투 웹 설정

openDeeplink 함수에 deeplinks 옵션을 입력하지 않고, fallbacks 옵션을 웹 URL로 설정하면, 앱 설치 여부와 상관 없이 웹 사이트로 이동할 수 있습니다.

옵션

필수 여부

타입

설명

fallbacks.android

필수

string

Android에서 이동할 웹 사이트 URL입니다.
- URL: 이동할 웹 사이트 URL입니다.

fallbacks.ios

필수

string

iOS에서 이동할 웹 사이트 URL입니다.
- URL: 이동할 웹 사이트 URL입니다.

defaultParams

선택

object

캠페인 파리미터입니다.

ctaParams

선택

object

CTA 캠페인 파라미터입니다.

아래 예시를 참고하세요.

1234567891011121314151617
airbridge.openDeeplink({
    fallbacks: {
        android: 'https://www.example.com',
        ios: 'https://www.example.com',
    },
    defaultParams: {
        campaign: '<EXAMPLE_CAMPAIGN>',
        medium: '<EXAMPLE_MEDIUM>',
        term: '<EXAMPLE_TERM>',
        content: '<EXAMPLE_CONTENT>',
    },
    ctaParams: {
        cta_param_1: '<EXAMPLE_CTA_PARAM_1>',
        cta_param_2: '<EXAMPLE_CTA_PARAM_2>',
        cta_param_3: '<EXAMPLE_CTA_PARAM_3>',
    },
})

다음과 같이 버튼 이벤트에 사용할 수 있습니다.

123456
<button id="<BUTTON_ID>">웹으로 이동하기</button>
<script>
    document.querySelector('#<BUTTON_ID>').addEventListener('click', () => {
        airbridge.openDeeplink({ ... })
    })
</script>

주의하세요

반드시 예시에 적혀있는 <BUTTON_ID> 를 실제로 유저 클릭 시 딥링크 기능이 동작해야 할 버튼의 ID 를 입력해 주세요.

딥링크를 통한 앱 열기 버튼 만들기

openDeeplink 함수는 기존의 setDeeplinks, setDownloads, sendWeb 함수를 대체하는 통합 함수로, 버튼과 같은 DOM 요소와의 연결 없이 독립적으로 사용할 수 있는 순수 함수입니다.

setDeeplinks함수는 향후 업데이트 없이 유지보수만 제공될 예정입니다. openDeeplink 함수를 사용하여 구현해 주세요.

setDeeplinks 함수를 통해 버튼에 딥링크 기능을 설정할 수 있습니다.

옵션

필수 여부

타입

설명

buttonID

필수

string | string[]

딥링크 기능을 설정할 <button> 태그의 id 속성 값입니다.
Array 로 여러 값을 입력할 수도 있습니다.

deeplinks.android

필수

string

Android에서 딥링크로 실행할 앱의 Scheme URL입니다.

deeplinks.ios

필수

string

iOS에서 딥링크로 실행할 앱의 Scheme URL입니다.

deeplinks.desktop

필수

string

Desktop에서 이동할 웹 사이트 URL입니다.

fallbacks.android

필수

'google-play' | string

Android에서 앱 미설치로 인한 딥링크 실패 시 이동할 스토어 혹은 웹 사이트 URL입니다.
- google-play: 에어브릿지 대시보드에 등록한 앱의 Google Play Store로 이동합니다.
- URL: 이동할 웹 사이트 URL입니다.

fallbacks.ios

필수

'itunes-appstore' | string

iOS에서 앱 미설치로 인한 딥링크 실패 시 이동할 스토어 혹은 웹 사이트 URL입니다.
- itune-appstore: 에어브릿지 대시보드에 등록한 앱의 App Store로 이동합니다.
- URL: 이동할 웹 사이트 URL 입니다.

desktopPopUp

선택

boolean

Desktop에서 새 창으로 동작합니다.

redirect

선택

boolean

주석
- true: 사용자의 상호작용이 없는 상황에서 사용합니다.
- false: 버튼 클릭 등 사용자의 상호작용을 보장할 수 있는 상황에서 사용합니다.

defaultParams

선택

object

캠페인 파리미터입니다.

ctaParams

선택

object

CTA 캠페인 파라미터입니다.

아래 예시를 참고하세요.

1234567891011121314151617181920212223242526
<button id="<BUTTON_ID>">앱으로 보기</button>
<script>
    airbridge.setDeeplinks({
        buttonID: '<BUTTON_ID>', // or ['<BUTTON_ID_1>', '<BUTTON_ID_2>', ...]
        deeplinks: {
            android: '<YOUR_SCHEME>://path?key=value',
            ios: '<YOUR_SCHEME>://path?key=value',
            desktop: 'https://www.example.com/path?key=value',
        },
        fallbacks: {
            android: 'google-play',
            ios: 'itunes-appstore',
        },
        defaultParams: {
            campaign: '<EXAMPLE_CAMPAIGN>',
            medium: '<EXAMPLE_MEDIUM>',
            term: '<EXAMPLE_TERM>',
            content: '<EXAMPLE_CONTENT>',
        },
        ctaParams: {
            cta_param_1: '<EXAMPLE_CTA_PARAM_1>',
            cta_param_2: '<EXAMPLE_CTA_PARAM_2>',
            cta_param_3: '<EXAMPLE_CTA_PARAM_3>',
        },
    })
</script>

주의하세요

setDeeplinks 함수를 사용하면, Web SDK에서 버튼을 관리하기 때문에 절대로 버튼의 onclick 함수를 설정하지 마세요. 또한 <a> 태그의 id 를 사용하지 마세요.

딥링크를 통한 스토어 열기 버튼 만들기

openDeeplink 함수는 기존의 setDeeplinks, setDownloads, sendWeb 함수를 대체하는 통합 함수로, 버튼과 같은 DOM 요소와의 연결 없이 독립적으로 사용할 수 있는 순수 함수입니다.

setDownloads 함수는 향후 업데이트 없이 유지보수만 제공될 예정입니다. openDeeplink 함수를 사용하여 구현해 주세요.

setDownloads 함수를 통해 버튼에 스토어 열기 기능을 설정할 수 있습니다.

옵션

필수 여부

타입

설명

buttonID

필수

string | string[]

딥링크 기능을 설정할 <button> 태그의 id 속성 값입니다.
Array 로 여러 값을 입력할 수도 있습니다.

defaultParams

선택

object

캠페인 파리미터입니다.

ctaParams

선택

object

CTA 캠페인 파라미터입니다.

JavaScript
1234567891011121314151617
<button id="<BUTTON_ID>">앱 다운로드하기</button>
<script>
    airbridge.setDownloads({
        buttonID: '<BUTTON_ID>', // or ['<BUTTON_ID_1>', '<BUTTON_ID_2>', ...]
        defaultParams: {
            campaign: '<EXAMPLE_CAMPAIGN>',
            medium: '<EXAMPLE_MEDIUM>',
            term: '<EXAMPLE_TERM>',
            content: '<EXAMPLE_CONTENT>',
        },
        ctaParams: {
            cta_param_1: '<EXAMPLE_CTA_PARAM_1>',
            cta_param_2: '<EXAMPLE_CTA_PARAM_2>',
            cta_param_3: '<EXAMPLE_CTA_PARAM_3>',
        },
    })
</script>

주의하세요

setDownloads 함수를 사용하면, Web SDK에서 버튼을 관리하기 때문에 절대로 버튼의 onclick 함수를 설정하지 마세요. 또한 <a> 태그의 id 를 사용하지 마세요.

다른 웹 사이트로 기여 정보 전달하여 이동하기

openDeeplink 함수는 기존의 setDeeplinks, setDownloads, sendWeb 함수를 대체하는 통합 함수로, 버튼과 같은 DOM 요소와의 연결 없이 독립적으로 사용할 수 있는 순수 함수입니다.

sendWeb 함수는 향후 업데이트 없이 유지보수만 제공될 예정입니다. openDeeplink 함수를 사용하여 구현해 주세요.

sendWeb 함수를 통해 다른 도메인의 웹 사이트로 이동할 수 있습니다. 이 때 웹 사이트 간의 기여 정보가 전달됩니다.

1
airbridge.sendWeb('https://other.example.com')

콜백 함수를 입력하면 즉시 웹 사이트로 이동하지 않고, 콜백 함수로 전달되는 URL을 자유롭게 사용 가능합니다. 다음과 같이 버튼 이벤트에 사용할 수 있습니다.

123456789
<button id="<BUTTON_ID>">웹으로 이동하기</button>
<script>
    document.querySelector('#<BUTTON_ID>').addEventListener('click', () => {
        airbridge.sendWeb('https://other.example.com', (error, { targetUrl }) => {
            // Open the link with new window or tab.
            window.open(targetUrl)
        })
    })
</script>

추가 설정하기

초기화 시 유저 정보 설정하기

초기화 시 유저 정보를 전달하여, 발생하는 모든 이벤트에 유저 정보를 담을 수 있습니다.
설정한 유저 정보는 브라우저의 Local Storage에 남아 유저 정보를 초기화하기 전까지 모든 이벤트에 함께 전송됩니다.

1234567891011121314151617
airbridge.init({
    app: '<YOUR_APP_NAME>',
    webToken: '<YOUR_WEB_TOKEN>',
    // ...
    user: {
        externalUserID: 'personID',
        externalUserEmail: 'persondoe@airbridge.io',
        externalUserPhone: '1(123)123-1234',
        attributes: {
            age_group: 30,
            gender: 'Female'
        },
        alias: {
            custom_id: '83587901-2726-4E29-ACEB-A90B0F7E75F6',
        },
    },
})

옵션

타입

설명

user.externalUserID

string

유저 ID

user.externalUserEmail

string

유저 이메일

user.externalUserPhone

string

유저 전화 번호

user.attributes

object

유저 속성 (커스텀 Key Value Pair)

user.alias

object

유저 식별자

캠페인 파라미터 설정하기

광고를 통해 웹 사이트에 랜딩한 경우, 웹 사이트 주소에 관련 정보를 파라미터로 붙이면, 그 정보를 토대로 웹 사이트 유입에 대한 트래킹이 가능합니다.

이벤트 전송 완료 대기하기

events.wait 함수를 통해 모든 이벤트 전송이 끝난 후의 동작을 보장할 수 있습니다.

이벤트 전송을 완료하기 전에 페이지를 이동하면 (예를 들어, 페이지를 빠르게 전환하는 중계 페이지에서 이벤트를 전송하는 경우 등) 이벤트가 유실될 수 있습니다. 이런 경우 events.wait 함수로 이벤트 전송을 완료할 때까지 대기한 후에 페이지를 이동하면 이벤트 유실을 최소화할 수 있습니다.

옵션

타입

설명

timeout

number

최대 대기시간 (milliseconds)

callback

function

이벤트 전송완료 Callback

12345
airbridge.events.send('category')

airbridge.events.wait(3000, () => {
    location.href = '<TARGET_URL>'
})

어트리뷰션 윈도우 수정하기

cookieWindow 옵션을 통해 일 단위로 어트리뷰션 윈도우를 설정할 수 있습니다.
기본 설정은 3일입니다.

123456
airbridge.init({
    app: '<YOUR_APP_NAME>',
    webToken: '<YOUR_WEB_TOKEN>',
    // ...
    cookieWindowInMinutes: <MINUTES>,
})

cookieWindowInMinutes 옵션을 통해 분 단위로 어트리뷰션 윈도우를 설정할 수도 있습니다. cookieWindow 옵션과 중복 설정하면 cookieWindowInMinutes 옵션을 우선합니다.

123456
airbridge.init({
    app: '<YOUR_APP_NAME>',
    webToken: '<YOUR_WEB_TOKEN>',
    // ...
    cookieWindow: <DAYS>,
})

웹 투 앱 어트리뷰션의 기여 기간 설정하기

useProtectedAttributionWindow 옵션을 통해 기여의 프로텍티드 어트리뷰션 윈도우(Protected Attribution Window, PAW)를 설정할 수 있습니다.
기본 설정은 true입니다.

  • useProtectedAttribution 옵션을 true로 설정하면, PAW를 적용합니다. 자세한 내용은 유저가이드를 참고하세요.

  • useProtectedAttribution 옵션을 false로 설정하면, PAW를 적용하지 않습니다. 자세한 내용은 유저가이드를 참고하세요.

123456
airbridge.init({
    app: 'YOUR_APP_NAME',
    webToken: 'YOUR_WEB_TOKEN',
    // ...
    useProtectedAttributionWindow: true,
})

protectedAttributionWindowInMinutes 옵션을 통해 분 단위로 PAW를 설정할 수 있습니다.
기본 설정은 30분입니다. 최대 3일(4320분) 까지 설정할 수 있습니다.

protectedAttributionWindowInMinutes 옵션은 useProtectedAttributionWindow 옵션을 true 로 설정했을 경우에만 작동합니다.

1234567
airbridge.init({
    app: '<YOUR_APP_NAME>',
    webToken: '<YOUR_WEB_TOKEN>',
    // ...
    useProtectedAttributionWindow: true,
    protectedAttributionWindowInMinutes: 60,
});

서브 도메인 간에 기여 정보 공유하기

에어브릿지 Web SDK는 기본적으로 기여 정보를 쿠키에 저장하고 있으며, 루트 도메인의 쿠키를 저장 공간으로 사용하고 있기 때문에, 서브 도메인 간에 기여 정보를 공유할 수 있습니다.
여러 서브 도메인을 사용한다면 shareCookieSubdomain 옵션을 통해 쿠키를 공유할 지 설정할 수 있습니다.

shareCookieSubdomain 옵션은 false로 설정하면, 서브 도메인 사이에 데이터를 공유하지 않습니다.
기본 설정은 true입니다.

1234567
// initialize 
airbridge.init({ 
    app: '<YOUR_APP_NAME>',
    webToken: '<YOUR_WEB_TOKEN>',
    // ...
    shareCookieSubdomain: false,
})

알립니다

다음과 같은 상황을 고려하여 설정하세요.

  • 여러 서브 도메인에서 하나의 같은 서비스를 운영하는 경우에는 true로 설정하세요.

  • 여러 서브 도메인에서 각각 다른 서비스를 운영하는 경우에는 false로 설정하세요.

앱 데이터 저장 공간 분리하기

에어브릿지 Web SDK는 기본적으로 도메인 1개당 앱 1개의 어트리뷰션 데이터만 저장할 수 있도록 설계되었습니다. useStoragePerApp 옵션을 true 로 설정하면, 저장 공간을 분리하여 같은 루트 도메인을 공유하는 서브 도메인에서 사용 중인 여러 앱의 어트리뷰션 데이터를 각 앱 별로 확인할 수 있습니다.
기본 설정은 false 입니다.

example.com의 루트 도메인을 공유하는 서브 도메인 a.example.comb.example.com에서 여러 앱을 사용할 경우, 아래 예시와 같이 useStoragePerApp 옵션을 사용하여 데이터 저장 공간을 분리할 수 있습니다.

123456789101112131415
// Subdomain #1: a.example.com
airbridge.init({
    app: '<YOUR_APP_NAME>',
    webToken: '<YOUR_WEB_TOKEN>',
    // ...
    useStoragePerApp: true,
})

// Subdomain #2: b.example.com
airbridge.init({
    app: '<YOUR_ANOTHER_APP_NAME>',
    webToken: '<YOUR_ANOTHER_WEB_TOKEN>',
    // ...
    useStoragePerApp: true,
})

주의하세요

useStoragePerApp 옵션을 변경하면 변경 직후에 유저가 사용하는 각 브라우저에서 발생한 첫 번째 이벤트가 미기여(unattributed)로 처리될 수 있습니다.

웹에서 트래킹 링크 생성하기

createTrackingLink 함수를 통해 트래킹 링크를 생성할 수 있습니다. 트래킹 링크란 유저가 발생시킨 터치포인트 데이터를 에어브릿지에 전달하기 위해 만드는 링크입니다.

트래킹 링크를 활용하여, 광고를 보거나 광고를 클릭한 유저를 원하는 목적지로 이동시킬 수 있습니다. 에어브릿지 대시보드에서는 트래킹 링크로 수집한 터치포인트 데이터를 활용하여, 전환에 기여한 채널을 분석할 수 있습니다.

12345678910111213
interface Airbridge {
    createTrackingLink(
        channel: string,
        options: Record<string, boolean | number | string>,
        onSuccess: (trackingLink: TrackingLink) => void
    ): void
    createTrackingLink(
        channel: string,
        options: Record<string, boolean | number | string>,
        onSuccess: (trackingLink: TrackingLink) => void,
        onError: (error: Error) => void
    ): void
}

옵션

필수여부

타입

설명

channel

필수

string

트래킹 링크를 사용할 광고 채널

options

필수

string

트래킹 링크 생성 옵션

onSuccess

필수

function

성공 콜백

onError

선택

function

실패 콜백

createTrackingLink 함수로 생성된 트래킹 링크는 onSuccess 콜백을 통해 전달됩니다.

1234
interface TrackingLink {
    shortURL: string
    qrcodeURL: string
}

Option

Type

Description

shortURL

string

Short URL of the tracking link

qrcodeURL

string

QR code URL of the tracking link

몰로코 쿠키 ID 수집하기

collectMolocoCookieID를 true로 설정하면, 몰로코 웹 캠페인을 통해 발생한 이벤트의 쿠키 ID를 자동으로 수집하여 캠페인을 최적화합니다.

123456
airbridge.init({
    app: '<YOUR_APP_NAME>',
    webToken: '<YOUR_WEB_TOKEN>',
    // ...
    collectMolocoCookieID: true,
})

도움이 되었나요?

더 필요한 내용이 있나요?