SDK 설치


패키지 설치

npm 을 사용하여 airbridge-expo-sdkairbridge-react-native-sdk를 설치해주세요.

npm install --save [email protected]
npm install --save [email protected]

❗️

Airbridge Expo SDK는 expo go 환경을 지원하지 않습니다. expo prebuild 또는 eas build 를 사용해주세요.


프로젝트 설정

app.json

app.json 에 아래 설정을 추가해주세요.

{
  "expo": {
    ...
    "plugins": [
      ...
      [
        "airbridge-expo-sdk",
        {
          "appName": "APP_NAME",
          "appToken": "APP_TOKEN"
        }
      ]
    ]
  }
}

📘

APP_NAME은 Airbridge 대시보드 내 [ Settings → Tokens → App Name ] 에서 확인할 수 있습니다.
APP_TOKEN은 Airbridge 대시보드 내 [ Settings → Tokens → App SDK Token ] 에서 확인할 수 있습니다.

airbridge.json

  1. 프로젝트 폴더에 airbridge.json 파일을 생성해주세요.
  2. JSON 형식으로 설정값을 넣어주세요.

Example

{
    "sessionTimeoutSeconds": 300,
    "autoStartTrackingEnabled": true,
    "userInfoHashEnabled": true,
    "trackAirbridgeLinkOnly": false,
    "facebookDeferredAppLinkEnabled": false,
    "locationCollectionEnabled": false,
    "trackingAuthorizeTimeoutSeconds": 0,
    "sdkSignatureSecretID": "YOUR_SDK_SIGNATURE_SECRET_ID",
    "sdkSignatureSecret": "YOUR_SDK_SIGNATURE_SECRET",
    "logLevel": "warning"
}

Description

이름타입기본값설명
sessionTimeoutSecondsNumber300설정한 세션기간 내에 유저가 앱을 재실행하는 경우에는, 같은 세션으로 판단하여 앱 실행 이벤트를 전송하지 않습니다.
autoStartTrackingEnabledBooleantruefalse 로 설정하면, Airbridge.state.startTracking() 을 호출하기 전까지 이벤트를 전송하지 않습니다.
userInfoHashEnabledBooleantruefalse 로 설정하면, User Email 및 User Phone 정보를 Hash 하지않고 이벤트를 전송합니다.
trackAirbridgeLinkOnlyBooleanfalsetrue 로 설정하면, Airbridge 딥링크로 앱이 열린 경우에만 딥링크 이벤트를 전송합니다.
facebookDeferredAppLinkEnabledBooleanfalsetrue 로 설정하고 Facebook SDK 가 설치되어 있으면, Facebook Deferred AppLink 를 수집합니다.
locationCollectionEnabledBooleanfalsetrue 로 설정하면, 해당 기기의 위치 정보를 수집합니다. (Android 전용)

사용하기 위해서는 AndroidManifest.xml 에 아래 2개 권한이 필요합니다.
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION
trackingAuthorizeTimeoutSecondsNumber30timeout 을 설정하면, 설치 이벤트를 전송하기 전에 timeout 만큼 추적 허용 선택창 이 선택될 때 까지 기다립니다. (iOS 전용)
sdkSignatureSecretIDStringnullSDK spoofing 방지 기능을 동작 합니다. 발급 받은 SDK Signature Secret ID, Secret key 가 동시에 적용 되어야 합니다.
sdkSignatureSecretStringnullSDK spoofing 방지 기능을 동작 합니다. 발급 받은 SDK Signature Secret ID, Secret key 가 동시에 적용 되어야 합니다.
logLevelStringwarningAirbridge log 출력 level 을 설정 합니다.
logLevel: "debug" | "info" | "warning" | "error" | "fault"

SDK 설치 확인

앱을 설치하고 실행했을 때 Install 이벤트가 전송되는지 확인해주세요.

대시보드에서 확인

SDK 에서 발생한 Event 들은 에어브릿지 대시보드 내 [ Raw Data > App Real-time Logs ] 에 출력됩니다.

  1. 에어브릿지 대시보드 내 [ Raw Data > App Real-time Logs ] 항목을 클릭해 주세요.
  2. 검색어 입력에 디바이스의 ADID를 입력해주세요. (IDFA, IDFV, GAID)

🚧

로그가 노출되기까지 최대 5분정도 소요될 수 있습니다.



딥링크 설정


대시보드 설정

딥링크 설정을 위해 에어브릿지 대시보드에서 아래 가이드에 따라 진행해주세요.


프로젝트 설정

app.json

app.json 에 아래 설정을 추가해주세요.

{
  "expo": {
    ...
    "scheme": "YOUR_SCHEME",
    "android": {
      ...
      "intentFilters": [{
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "https", "host": "APP_NAME.airbridge.io" },
        "category": ["BROWSABLE", "DEFAULT"]
      }, {
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "https", "host": "APP_NAME.deeplink.page" },
        "category": ["BROWSABLE", "DEFAULT"]
      }, {
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "http", "host": "APP_NAME.airbridge.io" },
        "category": ["BROWSABLE", "DEFAULT"]
      }, {
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "http", "host": "APP_NAME.deeplink.page" },
        "category": ["BROWSABLE", "DEFAULT"]
      }]
    },
    "ios": {
      ...
      "associatedDomains": [
        "applinks:APP_NAME.airbridge.io",
        "applinks:APP_NAME.deeplink.page"
      ]
    }
  }
}

📘

YOUR_SCHEME은 Airbridge 대시보드 내 [ Tracking Link → Deep Link → URI Scheme ] 에서 확인할 수 있습니다.

setDeeplinkListener

딥링크 또는 지연된 딥링크가 발생할 때 마다 호출되는 함수를 등록합니다.

import Airbridge from 'airbridge-react-native-sdk'

Airbridge.deeplink.setDeeplinkListener((deeplink) => {
    // code that will run when app is opened with deep-link or deferred-deep-link
    // deeplink = YOUR_SCHEME://...
    console.log(deeplink)
})

🚧

만약 setDeeplinkListener를 여러번 호출 시, 마지막 Listener만 deeplink 데이터를 받게 됩니다.


커스텀 도메인 설정 (옵션)

app.json

app.json 에 아래 설정을 추가해주세요.

{
  "expo": {
    ...
    "android": {
      ...
      "intentFilters": [{
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "https", "host": "YOUR_DOMAIN.YOUR_DOMAIN.example" },
        "category": ["BROWSABLE", "DEFAULT"]
      }, {
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "http", "host": "YOUR_DOMAIN.YOUR_DOMAIN.example" },
        "category": ["BROWSABLE", "DEFAULT"]
      }]
    },
    "ios": {
      ...
      "associatedDomains": [
        "applinks:YOUR_DOMAIN.YOUR_DOMAIN.example"
      ]
    },
    "plugins": [
      ...
      [
        "airbridge-expo-sdk",
        {
          ...
          "customDomains": [
            "YOUR_DOMAIN.YOUR_DOMAIN.example"
          ]
        }
      ]
    ]
  }
}

📘

YOUR_DOMAIN.YOUR_DOMAIN.example은 에어브릿지 대시보드 내 [ Tracking Link → Domain Setting → Custom Domain ] 에서 확인할 수 있습니다.


딥링크 설정 확인

URI scheme을 클릭하여 Airbridge SDK 내의 딥링크가 정상적으로 설정되었는지 확인해주세요.

  • YOUR_SCHEME://

딥링크가 정상적으로 설정되었다면 딥링크 이벤트가 에어브릿지 대시보드 내 [ Raw Data → App Real-time Logs ] 에 출력됩니다.



사용자 설정


사용자 설정을 위해 아래 가이드를 참고 부탁드립니다.



디바이스 설정


디바이스 설정을 위해 아래 가이드를 참고 부탁드립니다.



이벤트 설정


이벤트 설정을 위해 아래 가이드를 참고 부탁드립니다.



고급 설정


SDK Signature 설정

SDK Signature 를 설정하는 것으로 SDK 를 SDK Spoofing 으로 부터 보호할 수 있습니다.

SDK signature 기능을 사용하기 위해서는 [email protected], [email protected] 이상 버전 부터 적용 가능합니다.

  • 프로젝트 폴더의 airbridge.json 파일에 아래 사항을 JSON 형식으로 설정값을 넣어주세요.
{
    "sdkSignatureSecretID": "YOUR_SDK_SIGNATURE_SECRET_ID",
    "sdkSignatureSecret": "YOUR_SDK_SIGNATURE_SECRET"
}

📘

SDK Signature 를 설정하기 위해서는 SDK Signature Secret, SDK Signature Secret ID 2가지가 필요합니다.

해당 2가지 값을 발급받기 위해서는 담당 에어브릿지 CSM 에게 지원을 요청해주세요.


기타 설정

다른 기타 고급 설정을 위해 아래 가이드를 참고 부탁드립니다.

Troubleshooting

Update 1.x.x → 2.0.0

기존에 1 버전 에 있던 있던 이벤트 전송 API 가 삭제 되고 아래의 API 로 대체 되었습니다.

/**
 * Send event to server.
 * @param {string} category event name
 * @param {EventOption} [option={}] event options
 */
trackEvent(category: string, option?: EventOption): void;

아래 가이드를 참고 부탁드립니다.
마이그레이션 가이드

Update 1.0.0 → 1.1.0

아래 가이드를 참고 부탁드립니다.