menu 이용가이드
User Guide for Developer chevron_right SDK Install Guide
Android SDK
에어브릿지 Android SDK는 에어브릿지 서비스를 통해 Android앱에 유입된 설치, 실행, 인앱이벤트, 잔존율 트래킹에 반드시 필요합니다.

빠른 설치 및 설정

빠른 설치

Android Studio로 설치하기

프로젝트의 앱 모듈 폴더 (일반적으로 app/) 안에 있는 build.gradle 파일을 열고, dependencies 블럭 안에 다음 내용을 추가해 주세요.

compile 'io.airbridge:sdk-android:1.3.+'

AndroidManifest.xml 설정

AndroidManifest.xml에 다음 권한을 추가해주세요.

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>

Google Play Install Referrer API 연동 (Fraud 방지 용도)

앱의 build.gradle 파일에 아래와 같이 Google Play Install Referrer API 라이브러리를 추가해 주세요. 한 줄의 추가로 Google Play Install Referrer API 연동이 완료됩니다.

dependencies {
    ...
    compile 'com.android.installreferrer:installreferrer:1.0'
}

proguard 설정

Proguard를 사용중이시라면, 다음 내용을 참고해 주세요.

Android Studio의 경우, ‘lib-proguard-rules.txt’ 파일에 다음 내용을 추가해 주세요.

-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {public *;}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info { public *;}
-keep class com.android.installreferrer.api.InstallReferrerClient {public *;}
-keep class com.android.installreferrer.api.InstallReferrerClient$newBuilder { public *;}
-keep class com.android.installreferrer.api.InstallReferrerClient$Builder { public *;}
-keep class com.android.installreferrer.api.ReferrerDetails {public *;}
-keep class com.android.installreferrer.api.InstallReferrerStateListener {public *;}
-keep class io.airbridge.deviceinfo.** { *; }

Eclipse의 경우, proguard-rules.pro 파일에 다음 내용을 추가해 주세요.

-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {public *;}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info { public *;}
-keep class com.android.installreferrer.api.InstallReferrerClient {public *;}
-keep class com.android.installreferrer.api.InstallReferrerClient$newBuilder { public *;}
-keep class com.android.installreferrer.api.InstallReferrerClient$Builder { public *;}
-keep class com.android.installreferrer.api.ReferrerDetails {public *;}
-keep class com.android.installreferrer.api.InstallReferrerStateListener {public *;}
-keep class io.airbridge.deviceinfo.** { *; }

Maven 이용시 설치법

Maven 프로젝트 pom.xmldependency란에 다음 내용을 추가해 주세요.

<dependency>
    <groupId>io.airbridge</groupId>
    <artifactId>sdk-android</artifactId>
    <version>1.3.0</version>
</dependency>

Eclipse 이용시 설치법

이 링크에서 SDK의 .jar 파일을 다운로드하고, 프로젝트 설정의 Java Build Path > Libraries에서 해당 .jar 파일을 추가해 주세요.

빠른 설정

앱의 Application 클래스의 onCreate메서드에 다음 코드를 추가해주세요.

public void onCreate() {
    super.onCreate();
    ...
    AirBridge.init(this, "[앱 영문명]", "[앱 토큰]");
}

'앱 영문명'과 '앱 토큰'은 대시보드의 '앱정보 관리 > 앱 기본 정보'에서 확인할 수 있습니다.

설치 확인

  1. 테스트 디바이스에서 앱을 삭제해주세요.
  2. 앱을 빌드하여 해당 디바이스에서 실행해주세요.
  3. 에어브릿지 대시보드 → 앱 선택 → 좌측 메뉴의 '관리' 카테고리 항목 중 'SDK 설치 확인' 선택
  4. 'Mobile SDK 설치 확인' 메뉴에서 해당 디바이스의 '디바이스 UUID (Android GAID)' 노출 확인
  • Android GAID 확인: Android 디바이스에서 '설정' → Google 설정 → 광고 → '내 광고 ID 확인' 항목의 값이 Android GAID 입니다.
  • 'Mobile SDK 설치 확인' 메뉴에서 '디바이스 UUID (Android GAID)' 노출이 확인되지 않는다면 빠른 설치에 안내된 대로 설치되었는지 다시 한번 확인해주세요.
  • 로그 노출은 최대 5분 가량 지연될 수 있습니다.

User Identity 통합

에어브릿지는 모바일 앱 영역을 넘어서 앱, 웹, 오프라인의 광고 성과분석을 통합하는 "사람 중심의 분석(People-based Analytics)"을 위한 서비스입니다.

한 명의 유저가 한 건의 구매(전환)를 일으키기까지는 다양한 디바이스, 플랫폼, 브라우저를 거치게 되며, 이러한 과정에서 얻은 정보를 바탕으로 마침내 구매(전환)에 이르게 됩니다.

이러한 흐름에서 하나의 디바이스, 하나의 플랫폼으로부터 수집된 데이터로는 파편화된 분석을 할 수 밖에 없지만 사람 중심의 분석은 웹, 앱, 오프라인까지 다양한 고객의 접촉점을 한 명의 유저 중심으로 이어주기 때문에 전체 유저 전환 경로를 통한 분석을 할 수 있습니다.

UserID 및 UserEmail 설정

User Identity 통합을 위한 여러 방법의 하나로, Android SDK 설치 시 아래와 같이 '사용자 ID' 혹은 '사용자 Email' 중 한 가지를 반드시 설정할 것을 권장합니다.

다음 메서드를 호출 및 설정하여, 사용자의 UserID와 UserEmail을 설정할 수 있습니다. 로그인/회원가입이 이루어지는 액티비티, 혹은 애플리케이션의 가장 기본이 되는 액티비티(인트로)에서의 해당 메서드 호출을 권장합니다.

AirBridge.getTracker().setUserId("test-user-id");
AirBridge.getTracker().setUserEmail("test-email@foo.com");
  • 이 메서드의 호출시, 효과적인 데이터 분석을 위하여 UserId와 UserEmail중 하나의 값은 반드시 설정할 것을 권장합니다.
  • 이 메서드 호출시 사용되는 값인 사용자 정보는 모두 Hash화(SHA256)되어 전송되며, 관리됩니다.
  • 이 메서드를 통해 내부용 사용자 아이디와 사용자 이메일을 설정 할 경우, 해당 value를 S3에서 csv 형식의 데이터(externalUserID, externalUserEmail)로 다시 retrieve하여, 해당 식별자를 가진 사용자가 어떤 유입경로에서 왔는지를 확인하고 데이터를 통합할 수 있으며, 크로스플랫폼 동일 사용자 매칭에도 이용할 수 있습니다.

기본 인앱이벤트 설정

앱 설치 후 사용자의 다양한 행동 중 중요한 행동(전환)들을 인앱이벤트로 등록하고 유입 경로별로 성과를 측정할 수 있습니다.

보편적으로 많이 사용하는 “회원가입”, “로그인”, “홈화면 조회”, “상품리스트 조회”, “검색결과 조회”, “상품상세페이지 조회”, “장바구니 담기”, “결제”는 기본 인앱이벤트로 별도 매서드가 제공되며, 그 외 원하는 커스텀 인앱이벤트는 SDK에서 매서드를 동적으로 호출하면 1회 이상 달성시 대시보드에서 확인할 수 있습니다.

에어브릿지는 총 8개의 기본 인앱이벤트를 지원하며 SDK 설치 시 별도 매소드 호출만으로 트래킹이 가능합니다. 이벤트에 첨부되는 모든 정보는 부가적(Optional)이므로, 정보를 첨부하지 않아도 이용할 수 있습니다. 그러나 이벤트에 대한 많은 정보는 리마케팅 캠페인 및 DSP 연동 등 자세하고 정확한 통계 제공에 도움이 될 수 있으므로 전송하는 것을 권장합니다.

  1. 회원가입
  2. 로그인
  3. 홈화면 조회
  4. 상품리스트 조회
  5. 검색결과 조회
  6. 상품상세페이지 조회
  7. 장바구니 담기
  8. 결제
  9. 로그아웃

회원가입

회원가입 인앱이벤트를 트래킹하기 위해서는 사용자가 회원가입 실행시 SignUpEvent를 전송해 주세요.

생성자 타입 설명
SignUpEvent - 비어있는 회원가입 이벤트
메서드 타입 설명
setAction String 이벤트 액션
setLabel String 이벤트 라벨
setUserId String 사용자 아이디
setUserEmail String 사용자 이메일

코드 예시 :

SignUpEvent event = new SignUpEvent()
        .setUserId("test-user-id")
        .setUserEmail("test-email@foo.com");

AirBridge.getTracker().send(event);
  • 이 메서드의 호출시, 효과적인 데이터 분석을 위하여 UserID와 UserEmail중 하나의 값은 반드시 설정할 것을 권장합니다.
  • 이 메서드의 호출시 사용되는 값인 사용자 정보는 모두 Hash화(SHA256)되어 전송되며, 관리됩니다.
  • 이 메서드를 통해 내부용 사용자 아이디와 사용자 이메일을 넣을 경우, 해당 값을 S3에서 csv 형식의 데이터(externalUserID, externalUserEmail)로 다시 받아 해당 식별자를 가진 사용자가 어떤 유입경로에서 왔는지를 확인하고 데이터를 통합할 수 있습니다. 또한 이 값은 Server-to-Server 인앱 이벤트 전송과 크로스플랫폼 동일 사용자 매칭에도 사용할 수 있습니다.

로그인

로그인 인앱이벤트를 트래킹하기 위해서는 사용자가 로그인 실행시 SignInEvent를 전송해 주세요.

생성자 타입 설명
SignInEvent - 비어있는 로그인 이벤트
메서드 타입 설명
setAction String 이벤트 액션
setLabel String 이벤트 라벨
setUserId String 사용자 아이디
setUserEmail String 사용자 이메일

코드 예시 :

SignInEvent event = new SignInEvent()
        .setUserId("test-user-id")
        .setUserEmail("test-email@foo.com");

AirBridge.getTracker().send(event);
  • 이 메서드의 호출시, 효과적인 데이터 분석을 위하여 UserID와 UserEmail중 하나의 값은 반드시 설정할 것을 권장합니다.
  • 이 메서드의 호출시 사용되는 값인 사용자 정보는 모두 Hash화(SHA256)되어 전송되며, 관리됩니다.
  • 이 메서드를 통해 내부용 사용자 아이디와 사용자 이메일을 넣을 경우, 해당값을 S3에서 csv 형식의 데이터(externalUserID, externalUserEmail)로 다시 받아 해당 식별자를 가진 사용자가 어떤 유입경로에서 왔는지를 확인하고 데이터를 통합할 수 있습니다. 또한 이 값은 Server-to-Server 인앱 이벤트 전송과 크로스플랫폼 동일 사용자 매칭에도 사용할 수 있습니다.

홈 화면 조회

홈 화면 조회 인앱이벤트를 트래킹하기 위해서는 사용자가 앱 내에서의 홈 화면으로 이동시 HomeViewEvent를 전송해 주세요.

생성자 타입 설명
HomeViewEvent - 홈 뷰 이벤트

코드 예시 :

HomeViewEvent event = new HomeViewEvent();
AirBridge.getTracker().send(event);

상품 리스트 조회

상품 리스트 조회 인앱이벤트를 트래킹하기 위해서 사용자가 상품 리스트를 조회할 경우 ProductListViewEvent를 전송해 주세요.

생성자 타입 설명
ProductListViewEvent - 비어있는 상품 리스트 조회 이벤트
ProductListViewEvent String, List<Product> 리스트 아이디와 상품 리스트가 포함되어있는 상품 리스트 조회 이벤트
ProductListViewEvent String, Product 리스트 아이디와 단일 상품이 포함되어있는 상품 리스트 조회 이벤트
메서드 타입 설명
setListId String 상품 리스트 아이디
addProduct Product 상품 리스트에 추가

코드 예시 :

// 상품 정보 추가
Product product1 = new Product();
product1.setProductId("product_id_100600");
product1.setName("Apple MacBook Pro");
product1.setPrice(2160000);
product1.setPositionInList(1);

Product product2 = new Product();
product2.setProductId("product_id_100800");
product2.setName("Samsung Notebook5");
product2.setPrice(1420000);
product2.setPositionInList(2);

// 상품 리스트 추가
List<Product> products = Arrays.asList(product1, product2);
ProductListViewEvent event = new ProductListViewEvent("list_id_200400", products);

AirBridge.getTracker().send(event);
  • 사용자가 리스트를 스크롤해 새로운 정보를 로드할 경우, 해당 이벤트를 별도로 발생시켜서 추가적으로 로드된 상품 정보를 보내주시는 것을 권장합니다.
  • 이벤트로 전송되는 상품 순서가 실제 사용자에게 리스트상에 보여지는 순서와 일치하지 않을 경우, Product 클래스의 setPositionInList 메서드를 통해 각 상품에 실제 순서 정보를 보내주시는 것을 권장합니다. 이는 상품 노출 순위 정보 가공에 사용됩니다.
  • Product 클래스에 대한 상세 내용은 아래 설명을 참고해 주세요.

검색결과 조회

검색결과 조회 인앱이벤트를 트래킹하기 위해서는 사용자가 상품을 검색할 경우 SearchResultViewEvent를 전송해 주세요.

생성자 타입 설명
SearchResultViewEvent - 검색결과 이벤트
SearchResultViewEvent String, List<Product> 검색 쿼리와 상품 검색 결과 리스트가 포함된 검색결과 이벤트
SearchResultViewEvent String, Product 검색 쿼리와 단일 상품 검색 결과가 포함된 검색결과 이벤트
메서드 타입 설명
setQuery String 해당 검색의 검색어 (쿼리) 정보 추가
addProduct Product 검색 결과에 상품 추가

코드 예시 :

SearchResultViewEvent event = new SearchResultViewEvent ("24inch monitor", products);

AirBridge.getTracker().send(event);

Product 클래스에 대한 상세 내용은 아래 설명을 참고해 주세요.

상품 상세페이지 조회

상품 상세페이지 조회 인앱이벤트를 트래킹하기 위해서는 사용자가 상품의 상세정보를 조회할 경우 ProductDetailsViewEvent를 전송해 주세요.

생성자 타입 설명
ProductDetailsViewEvent - 상품 상세페이지 조회 이벤트
ProductDetailsViewEvent List <Product> 여러 상품에 대한 상품 상세페이지 조회 이벤트
ProductDetailsViewEvent Product 단일 상품에 대한 상품 상세페이지 조회 이벤트

코드 예시 :

ProductDetailsViewEvent event = new ProductDetailsViewEvent(product);
AirBridge.getTracker().send(event);

Product 클래스에 대한 상세 내용은 아래 설명을 참고해주세요.

장바구니 담기

장바구니 담기 인앱이벤트를 트래킹하기 위해서는 사용자가 장바구니에 상품을 담았을 때 AddedToCartEvent를 전송해 주세요.

생성자 타입 설명
AddedToCartEvent - 장바구니 담기 이벤트
AddedToCartEvent String, List<Product> 장바구니 아이디와 여러 상품이 포함된 장바구니 담기 이벤트
AddedToCartEvent String, Product 장바구니 아이디와 단일 상품이 포함된 장바구니 이벤트
메서드 타입 설명
setCartId (DSP 연동용) String 장바구니 고유 ID
addProduct (DSP 연동용) Product 장바구니 물품
setCurrency (기여도분석용) String 장바구니에 담긴 금액의 통화 단위. ISO 4217 standard에 따른 통화 정보 (ex. KRW)
setTotalValue (기여도분석용) int 장바구니에 담긴 총 금액

‘기여도분석용’으로 사용 시 코드 예시 (단순한 ROI 계산 용도로 사용할 수 있습니다) :

AddedToCartEvent event = new AddedToCartEvent()
       .setCurrency("KRW")
       .setTotalValue(10000);

AirBridge.getTracker().send(event);

‘DSP 연동용’으로 사용 시 코드 예시 (이커머스 플랫폼이 데이터를 DSP에 연동하고자 할 경우 사용할 수 있습니다) :

AddedToCartEvent event = new AddedToCartEvent()
       .setCartId("cart_id_51243")
       .addProduct(product)

AirBridge.getTracker().send(event);

Product 클래스에 대한 상세 내용은 아래 설명을 참해 주세요.

결제

결제 인앱이벤트를 트래킹하기 위해서는 사용자가 결제를 진행할 경우 PurchaseEvent를 전송해 주세요.

생성자 타입 설명
PurchaseEvent - 결제 이벤트
PurchaseEvent List<Product> 여러 상품에 대한 결제 이벤트
PurchaseEvent Product 단일 상품에 대한 결제 이벤트
메서드 타입 설명
addProduct (DSP 연동용) Product 결제한 상품 정보.
setInAppPurchase (범용) Boolean 인앱결제 여부.
setTotalValue (기여도분석용) int 총 결제 금액.
setTransactionId (기여도분석용) String 거래의 고유 ID.
setCurrency (기여도분석용) String 결제한 금액의 통화 단위. ISO 4217 standard에 따른 통화 정보 (ex. KRW)

‘기여도분석용’으로 사용 시 코드 예시 (단순한 ROI 계산 용도로 사용할 수 있습니다) :

PurchaseEvent event = new PurchaseEvent(product)
       .setInAppPurchased(false)
       .setCurrency("KRW")
       .setTotalValue(10000);


AirBridge.getTracker().send(event);

‘DSP 연동용’으로 사용 시 코드 예시 (이커머스 플랫폼이 데이터를 DSP에 연동하고자 할 경우 사용할 수 있습니다) :

// 상품 정보 추가
Product product1 = new Product();
product1.setProductId("product_id_100600");
product1.setName("Apple MacBook Pro");
product1.setPrice(2160000);
product1.setPositionInList(1);

Product product2 = new Product();
product2.setProductId("product_id_100800");
product2.setName("Samsung Notebook5");
product2.setPrice(1420000);
product2.setPositionInList(2);

// 상품 리스트 추가
List<Product> products = Arrays.asList(product1, product2);
PurchaseEvent event = new PurchaseEvent(products)
        .setTransactionId("transact-purchase-01")
        .setInAppPurchase(true);

AirBridge.getTracker().send(event);

Product 클래스에 대한 상세 내용은 아래 설명을 참고해주세요.

Product 클래스

상품 정보에 대한 모델 클래스입니다. 상품리스트 조회, 검색결과 조회, 상품상세페이지 조회, 장바구니 담기, 결제 인앱이벤트에 상품 정보를 첨부할 때 사용됩니다.

생성자 타입 설명
Product - 비어 있는 상품
메서드 타입 설명
setProductId (권장값) String 상품의 고유 ID. 권장값이므로 DSP 연동 시 넣어주시는 것을 권합니다.
setName String 상품 이름
setCurrency String ISO 4217 standard에 따른 통화 정보 (ex. KRW)
※ 이 값은 향후 서비스 다국가 제공 시 구매금액 합산에 이용됩니다.
setPrice int 상품 금액
setQuantity int 구매한 상품의 수량
setPositionInList int 리스트 중 해당 상품의 실제 위치
※ 검색결과 및 상품 리스트에서 노출된 우선순위 정보를 반영할 때 사용됩니다.
getProductId - -
getName - -
getCurrency - -
getPrice - -
getQuantity - -
getPositionInList - -

코드 예시 :

Product product1 = new Product();
product1.setProductId("product_id_100600");
product1.setName("Apple MacBook Pro");
product1.setPrice(2160000);
product1.setCurrency("KRW");
product1.setQuantity(2);
product1.setPositionInList(0);

// Product는 인앱이벤트에 상품 정보를 첨부할 때 사용됩니다.
AirBridge.getTracker().send(new PurchaseEvent(product1));

로그아웃

로그아웃 인앱이벤트를 트래킹하기 위해서는 사용자가 로그아웃 실행시 SignOutEvent를 전송해 주세요.

생성자 타입 설명
SignOutEvent - 비어있는 로그아웃 이벤트
메서드 타입 설명
expireUser void 이벤트 액션

코드 예시 :

SignOutEvent event = new SignOutEvent()

AirBridge.getTracker().send(event);

커스텀 인앱이벤트 설정

원하는 인앱이벤트에 대해 SDK에서 메서드를 동적으로 호출하면 1회 이상 달성시 대시보드에서 확인할 수 있습니다.

생성자 타입 설명
GoalEvent String category가 포함되어있는 커스텀 이벤트
GoalEvent String,String category와 action가 포함되어있는 커스텀 이벤트
메서드 타입 설명
setLabel String 이벤트 라벨
setCategory String 이벤트 카테고리
setAction String 이벤트 액션
setValue int 이벤트 값

코드 예시 :

GoalEvent event = new GoalEvent("category")
        .setAction("action")
        .setLabel("label");
        .setValue(3412)

AirBridge.getTracker().send(event);

Category, Action, Label에 대한 상세 내용은 다음 설명을 참고해 주세요.

Category / Action / Label을 활용한 인앱이벤트 구분

에어브릿지는 기본적으로 Category, Action, Label의 3가지 구분값의 조합으로 인앱이벤트별 통계를 제공합니다. 기본 인앱이벤트의 경우 Category의 값이 미리 고정되어 있으므로 Action, Label의 2가지 구분값을 자유롭게 활용할 수 있으며, 구분값을 조합할 수 있는 기본 인앱이벤트는 “회원가입”, “로그인”, “장바구니 담기”, “결제”의 4개 이벤트입니다. 커스텀 통계 리포트는 Category, Action, Label의 3개 구분값 모두를 활용할 수 있습니다. 실제 활용 예시는 다음과 같습니다.

  1. (기본) Category : 회원가입 (고정) / Action : “서울” / Label : “남자”
  2. (기본) Category : 회원가입 (고정) / Action : “부산” / Label : “여자”
  3. (기본) Category : 결제 (고정) / Action : “할인쿠폰사용” / Label : “카카오페이사용”
  4. (커스텀) Category : “user-subscription-canceled” / Action : “premium” / Label : 미입력

너무 많은 Action과 Label의 경우의 수 조합은 실시간 통계 리포트의 수합을 느리게 할 수 있으므로 모든 인앱이벤트를 합쳐 최대 10,000개 이하의 경우의 수로 조합하여 사용하기를 권장드립니다.

WebView 내에서 인앱이벤트 전송

WebView를 사용하는 앱의 경우, WebView의 Javascript Interface 기능을 통해 Airbridge SDK를 호출하여 인앱이벤트를 전송할 수 있습니다.

public class MyWebAppInterface {
    Context mContext;

    MyWebAppInterface(Context c) {
        mContext = c;
    }

    /**
     * Sends goal event.
     */
    @JavascriptInterface
    public void goal(int value) {
        // TODO: 원하는 인앱이벤트를 보내주세요.
        GoalEvent event = new GoalEvent("my-category")
                .setAction(my-action);            
                .setValue(value);            
        Airbridge.getTracker().send(event);
    }
}

...
webView.addJavascriptInterface(new MyWebAppInterface(this), "myAndroid");

위와 같이 Javascript Interface를 생성한다면 웹 앱 내에선 다음과 같이 인앱이벤트 메서드를 호출할 수 있습니다.

myAndroid.goal(1234);

딥링크 설정

연동 준비

Custom URI Scheme 방식의 딥링크 연동

연동을 위해서는 기존 앱의 Custom URI Scheme (ex. your-app-name://)를 에어브릿지 대시보드에 등록해야 합니다.

등록이 완료될 경우 JS 분기 방식을 통한 딥링크 사용이 활성화되며, 마케터들이 대시보드에서 트래킹 링크를 생성 시 딥링크에 대한 path와 query string 파라미터를 입력하여 사용할 수 있게 됩니다. (Custom URI Scheme 혹은 SHA256 핑거프린트 중 1개 이상 연동 필수)

에어브릿지는 Android Applinks 방식의 딥링크 연동을 지원합니다.

Android Applinks 연동이 완료될 경우 HTTPS 분기 방식을 통한 딥링크 사용이 활성화되며, 마케터들이 대시보드에서 트래킹 링크를 생성 시 딥링크에 대한 path와 query string 파라미터를 입력하여 사용할 수 있게 됩니다. (Custom URI Scheme 혹은 SHA256 핑거프린트 중 1개 이상 연동 필수) 연동 절차는 아래와 같습니다.

AndroidManifest.xml에 URI 매핑 추가

에어브릿지 딥링크를 통해 연결하고자 하는 Activity에 다음과 같이 인텐트 필터를 등록해 주세요. 반드시 YOUR_APP_NAME 부분을 에어브릿지 대시보드에 등록된 앱 영문명으로 수정해야 합니다.

<activity android:name=".ContentActivity" >
     <intent-filter android:autoVerify="true">
         <action android:name="android.intent.action.VIEW" />
         <category android:name="android.intent.category.DEFAULT" />
         <category android:name="android.intent.category.BROWSABLE" />

         <data android:scheme="YOUR_APP_NAME" />
         <data android:host="airbridge.io.deeplink" />
     </intent-filter>
</activity>

에어브릿지 대시보드에 SHA256 핑거프린트 등록

딥링크 기능을 사용하려면 앱을 서명한 키의 SHA256 핑거프린트를 등록해야 합니다. 이 정보는 Android의 Digital Asset Links Verification 과정에 의해, 신뢰할 수 있는 앱 링크를 판별하는 데 사용됩니다.

플랫폼 받아야 할 정보 해당 값 예시
android
(App Links)
https 14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5

릴리즈 키 등록
앱을 배포할 때는 디버그 키가 아닌 .jks 확장자의 릴리즈 키로 사인을 하게 됩니다. 이 릴리즈 키도 동일한 방법을 통해 등록해야 합니다.

Google Play App Signing 기능을 사용하시는 경우, APK가 스토어에 업로드되는 과정에서 서명이 변경되기 때문에 해당 키도 등록해야 합니다.

다음 명령을 실행하신 후, SHA256 란을 복사해, 에어브릿지 대시보드 > 딥링크 설정 > SHA256 핑거프린트란에 등록해 주세요.

keytool -list -v -keystore my-release-key.keystore

에어브릿지 대시보드에 등록 이후, Digital Asset Links Tester를 통해 등록된 정보가 제대로 반영되었는지 확인할 수 있습니다. (Hosting Site Domain : YOURAPPNAME.airbridge.io)

※ 주의 : 현재 에어브릿지 Android Applinks 지원 시스템은 단 1개의 핑거프린트 등록만을 지원하고 있습니다. 이 기능은 추후 여러 개의 핑거프린트를 등록할 수 있도록 개선될 예정이며, 따라서 현재는 릴리즈 키만을 등록하는 기능을 제공하고 있습니다.

딥링크 핸들링

에어브릿지가 딥링크 실행을 추적하려면 딥링크 핸들러에 코드를 추가해야 합니다.

액티비티에서 핸들링

딥링크를 받는 액티비티에 Intent가 들어왔을 때, Tracker#onNewIntent 메서드를 호출해 주세요.

@Override
public void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    ...
    AirBridge.getTracker().onNewIntent(getIntent());
}

@Override
public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    AirBridge.getTracker().onNewIntent(intent);
}

수동 핸들링

액티비티 이외의 곳에서 딥링크를 받는다면, DeepLinkLaunchEvent 를 직접 전송해 주세요.

AirBridge.getTracker().send(new DeepLinkLaunchEvent(String uri));

Facebook으로부터 딥링크를 받으려면, Facebook에서 제공하는 지연된 딥링크 기능을 사용하지 말아야 합니다.
AppLinkData.fetchDeferredAppLinkData 메서드를 호출하지 말아주세요. 코드 레벨에서의 더욱 자세한 적용은 이 링크에서 확인하실 수 있습니다.

에어브릿지 이외의 외부 딥링크 필터링

에어브릿지는 구글 플레이 스토어와 외부 딥링크에 대해서 에어브릿지 파라미터가 없더라도, UTM 파라미터가 포함되어 있을 경우 해당 링크를 자동 파싱하여 통계처리하는 기능을 제공합니다.

이 중 외부 딥링크에 대한 수집과 통계 처리를 하지 않기 위해서는 DeepLink.isFromAirbridge(Intent) 메서드를 통해 외부 딥링크를 수동으로 필터링해 주시거나 DeepLink.trackAirbridgeOnly() 메서드를 에어브릿지 초기화 이후에 호출해 주세요.

이 방법을 통하여 원하지 않는 외부 딥링크까지 통계에 잡히거나 로그로 쌓이는 것을 방지할 수 있습니다.

// 자동
AirBridge.init(this, );
DeepLink.trackAirbridgeOnly();

// 수동
if (DeepLink.isFromAirbridge(getIntent()) {
    AirBridge.getTracker().send(new DeepLinkLaunchEvent(intent.toDataString()));
}

Android 앱 세션 기간 커스텀 설정

Android 플랫폼에서 앱 세션 기간의 커스텀 설정 방법에 대한 안내입니다.

기본 설정값

에어브릿지 Android 플랫폼에서 앱 세션 기간의 기본값은 300초(5분)입니다.

앱 세션 기간 커스텀 설정

에어브릿지 Android 플랫폼에서는 앱 세션 기간을 사용자의 필요에 따라 설정할 수 있습니다.

AirBridge.init 코드 이전(Airbridge를 initalize하기 전)에 다음 메서드를 호출해 앱의 세션 기간을 설정할 수 있습니다.

AirBridge.setCustomSessionTimeOut(300);
 Airbridge.init()

설정 기간은 integer로 기본 단위는 s(sec)이며, 0 이상이며 최대값이 604,800(7일)인 값이어야 합니다.

Google Play Install Referrer API 연동 (Fraud 방지 용도)

Android 플랫폼에서 Google Play Install Referrer API 연동에 대한 안내입니다.

환경 설정

앱의 build.gradle 파일에 아래와 같이 Google Play Install Referrer API 라이브러리를 추가해 주세요. 한 줄의 추가로 Google Play Install Referrer API 연동이 완료됩니다.

dependencies {
    ...
    compile 'com.android.installreferrer:installreferrer:1.0'
}

설치 앱 리스트 수집 관련 플래그 설정

Android 플랫폼에서 설치된 앱 리스트의 수집과 관련한 플래그를 설정하는 방법에 대한 안내입니다.

기본 설정값

에어브릿지 Android 플랫폼에서 설치된 앱 리스트의 수집과 관련한 플래그의 기본값은 true입니다.

설치 앱 리스트 수집 기능 On/Off 설정

에어브릿지 Android 플랫폼에서는 설치 앱 리스트 수집 기능 관련하여 사용자의 필요에 따라 On/Off를 설정할 수 있습니다.

AirBridge.init 코드 이전(Airbridge를 initalize하기 전)에 다음 메서드를 호출해 설치 앱 리스트 수집 여부를 설정할 수 있습니다.

AirBridge.setInstalledAppEnable(true);        // 설치 앱 리스트 수집 기능 On
 Airbridge.init();
AirBridge.setInstalledAppEnable(false);     // 설치 앱 리스트 수집 기능 Off
 Airbridge.init();

Android WIFI 스캐닝 정보 수집 플래그 설정(오프라인 데이터 분석용)

Android 플랫폼에서 WIFI 스캐닝 정보 수집 플래그 설정 방법에 대한 안내입니다.

기본 설정값

에어브릿지 Android 플랫폼에서 WIFI 스캐닝 정보 수집 플래그 설정의 기본값은 false입니다.

WIFI 스캐닝 정보 수집 플래그 On/Off 설정

에어브릿지 Android 플랫폼에서 WIFI 스캐닝 정보 수집 플래그를 사용자의 필요에 따라 설정할 수 있습니다.

AirBridge.init 코드 이전(Airbridge를 initalize하기 전)에 다음 메서드를 호출해 WIFI 스캐닝 정보 수집 여부를 설정할 수 있습니다.

AirBridge.setWifiInfoEnable(true);              // WIFI 스캐닝 정보 수집 기능 On
 Airbridge.init()
AirBridge.setInstalledAppEnable(false);       // WIFI 스캐닝 정보 수집 기능 Off
 Airbridge.init();

기타 설정

아래 상황에 해당하는 경우 각 상황에 맞는 추가 설정이 필요합니다.

Android SDK 1.0.0 이전 버전을 사용 중인 경우

Android SDK 1.0.0 이전의 버전을 사용하고 있는 상태에서 새 버전으로 업데이트하는 경우 아래 내용을 참고 부탁드립니다.

1.1.0 버전으로 업데이트

Application으로 SDK 초기화 코드 이동

기존에 ActivityonCreate 메서드에서 AirBridge.init을 실행하셨다면, 이를 Application 클래스의 onCreate로 옮겨주세요. 이미 Application에서 초기화하는 앱의 경우 별도의 코드 수정이 필요하지 않습니다.

class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        // 다음 위치로 이동
        AirBridge.init(this, "[앱 영문명]", "[앱 토큰]");
    }
}

앱 실행 트래킹 정책의 변화로 인해, Activity에서 SDK를 초기화할 경우 앱 설치 및 실행을 제대로 트래킹하지 못할 수 있습니다.

기본 인앱이벤트 API 변경사항

SignInGoalBuilder, SignUpGoalBuilder는 Deprecate되었습니다.
인앱이벤트 빌더 대신 SignInEvent, SignUpEvent를 사용해 주세요.

Event event = new SignInEvent()
        .setUserEmail("foo@ab180.co")
        .setAction("auto-signin");

AirBridge.getTracker().send(event);

1.0.0 버전으로 업데이트

SDK 초기화 방법 변경

보안체계를 강화하기 위해 기존 SDK에서 사용하던 UserToken과 숫자형태의 App ID를 더 이상 사용하지 않습니다. 그 대신 새롭게 생성된 App Token을 사용하며, 여기에 사용자가 앱 등록시 입력한 앱 영문명을 사용합니다.

'앱 영문명'과 '앱 토큰'은 대시보드의 '앱정보 관리 > 앱 기본 정보'에서 확인할 수 있습니다.

  • 기존: AirBridge.init("APP_ID", "USER_TOKEN");
  • 변경: AirBridge.init("APP_NAME (앱 영문명)", "APP_TOKEN (앱 토큰)");

변경된 새로운 값들은 대시보드 내 '앱정보 관리 > 앱 기본 정보'에서 확인할 수 있습니다.

이 변경사항을 적용하지 않을 경우 설치 이후 통계 데이터를 받아볼 수 없으며, Exception을 발생시킵니다. 꼭 변경해주세요.

기본 인앱이벤트 API 변경

AirBridge.userSignup 등의 기본 인앱이벤트 API는 더 이상 사용되지 않으며, 신규 API에서는 인앱이벤트를 Tracker를 통해 전송하는 방식으로 변경되었습니다. 자세한 내용은 인앱이벤트 연동 가이드를 참고해 주세요.

SignUpEvent event = new SignUpEvent()
        .setUserEmail("you@gmail.com")
        .setUserId("1234");  

AirBridge.getTracker().send(event);

커스텀 인앱이벤트 API 변경

기존 Airbridge.goal(label, value) 메서드는 더 이상 사용하지 않으므로, GoalEvent 클래스를 사용하여 목표 달성 이벤트를 인앱이벤트 식별자와 함께 다음과 같이 전송해 주세요.

'대시보드 > 인앱이벤트 관리' 메뉴에서 커스텀 인앱이벤트를 등록하고 식별자를 확인할 수 있습니다. 자세한 내용은 인앱이벤트 연동 가이드를 참고해 주세요.

GoalEvent event = new GoalEvent("인앱이벤트 식별자");
AirBridge.getTracker().send(event);

Google Analytics 등의 별도 설치 레퍼러 추적 도구를 사용할 경우

인스톨 레퍼러 리시버(Install Referrer Receiver) 항목에 서드파티 리시버를 원하는 이름으로 등록해 주세요.

<receiver android:name="io.airbridge.DeferredLinkReceiver" android:exported="true">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
    <!-- For GA Campaign Receiver -->
    <meta-data android:name="GAReceiver" android:value="com.google.android.gms.analytics.CampaignTrackingReceiver"/>
    <!-- For Custom Receiver -->
    <meta-data android:name="CustomReceiver1" android:value="io.airbridge.test.TPReceiver"/>
</receiver>

Android 4.0 (API 14) 미만을 지원하는 앱일 경우

에어브릿지 SDK는 설치 및 실행 통계 제공을 위해 자동으로 앱 생명주기를 트래킹합니다. 하지만 Android 4.0 (API Level 14) 미만 버전의 경우 자동 트래킹이 불가능해 통계를 제대로 수집할 수 없습니다. 따라서 통계 수집을 위해 수동 트래킹을 사용하셔야 합니다.

자동 생명주기 트래킹 끄기

AirBridge.init 코드 이전에 다음 메서드를 호출하여 자동 트래킹을 꺼주세요.

PageTracker.disableAutoLifecycleTracking();
AirBridge.init(this, ...);

액티비티 생명주기 핸들러 수동 호출

앱 내 모든 액티비티가 상속받는 Base Activity에서 핸들러를 수동 호출하면, 앱 내 액티비티에 대한 생명주기 트래킹이 이루어 집니다.

class BaseActivity extends Activity {
    @Override
    public void onCreate(Bundle savedState) {
        super.onCreate(savedState);
        AirBridge.getLifecycleTracker().onActivityCreated(this, savedState);
    }

    @Override
    public void onResume() {
        super.onResume();
        AirBridge.getLifecycleTracker().onActivityResumed(this);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        AirBridge.getLifecycleTracker().onActivityDestroyed(this);
    }
}

특정 화면을 트래킹 제외해야 할 경우

일반적으로 에어브릿지는 액티비티를 자동으로 트래킹해 통계를 제공합니다. 하지만 특수한 액티비티로 인해 의도치 않은 통계가 측정될 수 있습니다. 예를 들어, 앱에서 잠금 화면을 제공한다면 에어브릿지는 사용자가 잠금 화면을 열 때마다 실행으로 감지하게 됩니다. 이처럼 의도치 않은 통계가 측정되는 상황을 방지하려면, 해당 액티비티에 @DontTrack 어노테이션을 붙여 예외로 표시해 주세요.

@DontTrack
class LockscreenActivity extends Activity { ... }

에어브릿지는 예외 표시된 액티비티의 경우, 트래킹하지 않습니다.

검색결과
keyboard_return 이전으로