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

Expo SDK

NPM Version NPM Version

SDK 설치


패키지 설치

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

12
npm install --save airbridge-expo-sdk
npm install --save airbridge-react-native-sdk

주의하세요

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

프로젝트 설정

app.json

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

123456789101112131415
{
  "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

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

Description

이름

타입

기본값

설명

sessionTimeoutSeconds

Number

300

설정한 세션기간 내에 유저가 앱을 재실행하는 경우에는, 같은 세션으로 판단하여 앱 실행 이벤트를 전송하지 않습니다.

autoStartTrackingEnabled

Boolean

true

false 로 설정하면, Airbridge.state.startTracking() 을 호출하기 전까지 이벤트를 전송하지 않습니다.

userInfoHashEnabled

Boolean

true

false 로 설정하면, User Email 및 User Phone 정보를 Hash 하지않고 이벤트를 전송합니다.

trackAirbridgeLinkOnly

Boolean

false

true 로 설정하면, Airbridge 딥링크로 앱이 열린 경우에만 딥링크 이벤트를 전송합니다.

facebookDeferredAppLinkEnabled

Boolean

false

true 로 설정하고 Facebook SDK 가 설치되어 있으면, Facebook Deferred AppLink 를 수집합니다.

locationCollectionEnabled

Boolean

false

true 로 설정하면, 해당 기기의 위치 정보를 수집합니다. (Android 전용)
사용하기 위해서는 AndroidManifest.xml 에 아래 2개 권한이 필요합니다.
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION

trackingAuthorizeTimeoutSeconds

Number

30

timeout 을 설정하면, 설치 이벤트를 전송하기 전에 timeout 만큼 추적 허용 선택창이 선택될 때 까지 기다립니다. (iOS 전용)

sdkSignatureSecretID

String

null

SDK spoofing 방지 기능을 동작 합니다. 발급 받은 SDK Signature Secret ID, Secret key 가 동시에 적용 되어야 합니다.

sdkSignatureSecret

String

null

SDK spoofing 방지 기능을 동작 합니다. 발급 받은 SDK Signature Secret ID, Secret key 가 동시에 적용 되어야 합니다.

logLevel

String

warning

Airbridge 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 에 아래 설정을 추가해주세요.

12345678910111213141516171819202122232425262728293031323334353637
{
  "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

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

1234567
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 에 아래 설정을 추가해주세요.

12345678910111213141516171819202122232425262728293031323334353637
{
  "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 ] 에 출력됩니다.

사용자 설정


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

디바이스 설정


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

이벤트 설정


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

고급 설정


Restricted SDK

개인정보보호법 등으로 인해 ADID 수집이 불가능 한 경우 기존 SDK 대신 ADID 수집 기능이 제거된 restricted SDK 를 사용 할 수 있습니다. airbridge-expo-sdk-restricted 는 v2.5.2 부터 지원됩니다.

SDK Signature 설정

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

SDK signature 기능을 사용하기 위해서는 airbridge_expo_sdk@2.2.0airbridge-react-native-sdk@2.3.0 이상 버전 부터 적용 가능합니다.

  • 프로젝트 폴더의 airbridge.json파일에 아래 사항을 JSON 형식으로 설정값을 넣어주세요.

1234
{
    "sdkSignatureSecretID": "YOUR_SDK_SIGNATURE_SECRET_ID",
    "sdkSignatureSecret": "YOUR_SDK_SIGNATURE_SECRET"
}

SDK Signature를 설정하기 위해서는 SDK Signature 보안 정보가 필요합니다. SDK Signature 보안 정보를 생성하기 위한 자세한 내용은 에어브릿지 가이드를 참고해 주세요.

기타 설정

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

Troubleshooting

Webcredentials

App 에서 Autofill 기능을 사용해 비밀번호를 저장하는 경우 webcredentials:... 설정이 되어 있지 않으면 비밀번호가 applinks:YOUR_APP_NAME.airbridge.io 또는 applinks:YOUR_APP_NAME.abr.ge 의 도메인에 저장됩니다.

비밀번호가 저장되는 도메인을 변경하고 싶다면, example.com 을 설정할 도메인 으로 변경해서 아래와 같이 설정해주세요.

  1. https://example.com/.well-known/apple-app-site-association주소에서 아래 내용을 호스팅 합니다.

    12345
    {
        "webcredentials": {
            "apps": ["TEAM_ID.APP_BUNDLE_ID"]
        }
    }

    예) 9JA89QQLNQ.com.apple.wwdc

  2. app.jsonwebcredentials:example.com을 추가해주세요.

    123456789
    {
      "expo": {
        "ios": {
          "associatedDomains": [
            "webcredentials:example.com"
          ]
        }
      }
    }

마이그레이션 가이드


SDK 업데이트 시, `이전버전` ~ `이후버전` 사이에 해당하는 버전들에 해당하는 내용들을 고려해주세요.

2.6.0

2023년 9월 4일 이후에 생성된 에어브릿지 앱의 경우, 딥링크 콜백에서 제공하는 딥링크 URL 이 에어브릿지 대시보드에 입력된 내용을 2번 디코딩하여 제공하는 문제가 v2.5.0 ~ v2.5.2 에 있었던 것이 해결되었습니다.

2.5.1

2023년 9월 4일 이후에 생성된 에어브릿지 앱의 경우, 딥링크 콜백에서 제공하는 딥링크 URL 에 더이상 airbridge_referrer 가 추가되지 않게 됩니다.

ios app 업데이트 하시는 경우, 마지막으로 계산된 SKAdNetwork Conversion Value 로 확정되고, 추가적으로 계산하지 않습니다.

  • 2.5.1 미만 버전에서는 SKAdNetwork Conversion Value 를 최대 24시간 동안만 계산합니다.

  • 새로 설치하시는 유저에 대해서는 문제되지 않습니다.

deeplink.page 가 deprecated 되었습니다. 2.5.1 부터는 abr.ge 로 딥링크 도메인을 사용 하여 코드를 작성 하도록 권장 드립니다

  • deeplink.page 는 하위 호환을 위해 여전히 지원 및 동작은 되고 있습니다.

2.5.0

trackingAuthorizeTimeout 의 기본값이 30초로 변경됩니다.

Update 1.x.x → 2.0.0

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

123456
/**
 * 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

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

도움이 되었나요?

더 필요한 내용이 있나요?