Cordova Ionic PhoneGap SDK

Cordova Ionic PhoneGap SDK

설치link

설치 - JSlink

추가link

cordova plugin add airbridge-cordova-sdk

requirelink

Ionic 프로젝트의 경우,
프로젝트의 필요한 부분의 .ts 파일에 다음 코드를 추가해주세요.

import ...
...
declare let Airbridge: any;
...

설치 - Androidlink

  • 아래 모듈들이 자동으로 설치됩니다.
    • io.airbridge:sdk-android
    • com.android.installreferrer:installreferrer
    • com.google.code.findbugs:jsr305
  • 아래 권한들이 자동으로 추가됩니다.
    • android.permission.INTERNET
    • android.permission.ACCESS_NETWORK_STATE

Proguardlink

Proguard를 사용중이시라면, 다음 내용을 참고해 주세요.
android/app/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.** { *; }
-keepclassmembers class io.airbridge.** { public *; }
-keep public class io.airbridge.**

MainApplication.javalink

  1. platforms/android/app/src/main/java/.../MainApplication.java 파일을 추가해주세요.

  2. 다음 코드를 추가해주세요.

package ...;
import android.app.Application;
import co.ab180.airbridge.cordova.AirbridgeCO;
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
AirbridgeCO.init(this, "YOUR_APP_NAME", "YOUR_APP_TOKEN");
}
}

'앱 이름' 은 대시보드의 'App Setting > 앱 기본정보' 에서 확인할 수 있습니다.
'앱 토큰' 은 대시보드의 'App Setting > 토큰 관리' 에서 확인할 수 있습니다.

AndroidManifest.xmllink

platforms/android/app/src/main/AndroidManifest.xml 에서 application tag 에 다음 attribute 를 추가해주세요.

<application ...
+ android:name=".MainApplication"
...>
...
</application>

설치 - iOSlink

AppDelegate.mlink

  1. ios/[프로젝트 이름]/Classes/AppDelegate.m 파일의 import 부분에 아래와 같은 코드를 추가해주세요.
#import "AirbridgeCO.h"
  1. ios/[프로젝트 이름]/Classes/AppDelegate.m 파일의 application:didFinishLaunchingWithOptions: 함수에 아래와 같은 코드를 추가해주세요.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[AirbridgeCO getInstance:@"YOUR_APP_TOKEN(앱 토큰)" appName:@"YOUR_APP_NAME(앱 이름)" withLaunchOptions:launchOptions];
...
}

'앱 이름' 은 대시보드의 'App Setting > 앱 기본정보' 에서 확인할 수 있습니다.
'앱 토큰' 은 대시보드의 'App Setting > 토큰 관리' 에서 확인할 수 있습니다.

설치 - 딥링크 등록link

딥링크 기능을 사용하기 위해 앱의 정보들을 에어브릿지 대시보드에 등록합니다.
대시보드에 접속하시고 사이드바의 Deeplinks 메뉴를 클릭하면 아래와 같은 화면이 나옵니다.

deeplinks

설치 - 딥링크 등록 - Androidlink

Schemelink

  1. 사용하기 원하는 scheme 를 딥링크 등록 부분 사진의 Android URL scheme 영역에 "://" 을 붙여 입력해주세요.

예) scheme://

  1. Google Play Store 에 등록할 때 사용한 signing key 를 준비해주세요.

  2. 다음 명령을 실행해주세요.

keytool -list -v -keystore my-release-key.keystore
  1. Certificate fingerprints 의 SHA256 란을 복사해, 딥링크 등록 부분 사진의 Android sha256_cert_fingerprints 영역에 입력해주세요.

예) 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

설치 - 딥링크 등록 - iOSlink

Schemelink

  1. 사용하기 원하는 scheme 를 딥링크 등록 부분 사진의 iOS URI scheme 영역에 "://" 을 붙여 입력해주세요.

예) scheme://

  1. 아래 링크에 접속합니다.

  2. 프로젝트의 앱 이름을 누릅니다.

  3. 아래 사진의 Prefix 와 ID 영역의 문자열을 복사하여 Prefix + "." + ID 인 문자열을 딥링크 등록 부분 사진의 iOS App ID 영역에 입력합니다.

예) 9JA89QQLNQ.com.apple.wwdc

ios app id

설치 - 딥링크 설정link

딥링크를 사용하기 위해 앱을 설정합니다.

설치 - 딥링크 설정 - JSlink

setDeeplinkListenerlink

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

// www/js/index.js
var app = {
...
onDeviceReady: function() {
...
Airbridge.deeplink.setDeeplinkListener((deeplink) => {
// `딥링크` 또는 `지연된 딥링크` 가 발생했을 때, 작동할 코드
// deeplink = https://appname.airbridge.io/...
console.log(deeplink);
});
...
}
...
}

setDeferredDeeplinkListener (옵션)link

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

// www/js/index.js
var app = {
...
onDeviceReady: function() {
...
Airbridge.deeplink.setDeferredDeeplinkListener((deeplink) => {
// `지연된 딥링크` 가 발생했을 때, 작동할 코드
// deeplink = https://appname.airbridge.io/...
console.log(deeplink);
});
...
}
...
}

설치 - 딥링크 설정 - Androidlink

AndroidManifest.xmllink

platforms/android/app/src/main/AndroidManifest.xml 파일의 MainActivity 영역에 아래와 같은 intent-filter 문장을 삽입해주세요.

<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="http" android:host="YOUR_APP_NAME.deeplink.page" />
<data android:scheme="https" android:host="YOUR_APP_NAME.deeplink.page" />
</intent-filter>
<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="http" android:host="YOUR_APP_NAME.airbridge.io" />
<data android:scheme="https" android:host="YOUR_APP_NAME.airbridge.io" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="EXAMPLE_SCHEME" />
</intent-filter>

YOUR_APP_NAME 에 앱 이름을 입력해주세요.
EXAMPLE_SCHEME 부분에 대시보드에서 설정한 scheme 값을 입력해주세요.

MainActivity.javalink

platforms/android/app/src/main/java/.../MainActivity.java 파일에 다음 코드를 삽입해주세요.

@Override
protected void onResume() {
super.onResume();
AirbridgeCO.getDeeplink().fetch(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}

설치 - 딥링크 설정 - iOSlink

Xcodelink

Schemelink

  1. Xcode > Project 파일 > Info > URL Types 로 이동해주세요.
  2. identifier 와 URL Schemes 에 대시보드에서 설정한 scheme 값 을 넣어주세요.

ios url scheme

:// 값을 없애고 넣어주세요.

  1. Xcode > Project 파일 > Signing & Capabilities > Associated Domains 로 이동해주세요.
  2. + 버튼을 눌러 applinks:YOUR_APP_NAME.airbridge.io 를 추가해주세요.
  3. + 버튼을 눌러 applinks:YOUR_APP_NAME.deeplink.page 를 추가해주세요.

YOUR_APP_NAME 은 대시보드의 'App Setting > 앱 기본정보' 에서 확인할 수 있습니다.

AppDelegate.mlink

Schemelink

  1. ios/[프로젝트 이름]/AppDelegate.m 파일을 열어주세요.
  2. 아래 코드를 추가해주세요.
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey, id>*)options
{
NSLog(@"openURL : %@", url);
[AirbridgeCO.deeplink handleURLSchemeDeeplink:url
withSourceBundle:options[UIApplicationOpenURLOptionsSourceApplicationKey]];
return YES;
}
  1. iOS 8.x 또는 그 이전 버전을 target 한다면 아래와 같은 코드를 추가로 적어주세요.
- (BOOL)application:(UIApplication*)application
openURL:(NSURL*)url
sourceApplication:(NSString*)sourceApplication
annotation:(id)annotation
{
NSLog(@"openURL : %@", url);
[AirbridgeCO.deeplink handleURLSchemeDeeplink:url
withSourceBundle:sourceApplication];
return YES;
}
  1. ios/[프로젝트 이름]/AppDelegate.m 파일을 열어주세요.
  2. 아래 코드를 추가해주세요.
- (BOOL)application:(UIApplication*)application
continueUserActivity:(NSUserActivity*)userActivity
restorationHandler:(void (^)(NSArray* _Nullable))restorationHandler
{
NSLog(@"continueUserActivity : %@", userActivity.webpageURL);
[AirbridgeCO.deeplink handleUniversalLink:userActivity.webpageURL];
return YES;
}

설치 확인link

  1. 테스트 디바이스에서 앱을 삭제해주세요.
  2. 앱을 빌드하여 해당 테스트 디바이스에서 앱을 설치 및 실행을 해주세요.
  3. 에어브릿지 대시보드 → 앱 선택 → 'Log Data' 아래의 'Realtime Log' 항목을 클릭해 주세요.
  4. 'Mobile SDK 로그' 를 클릭하시고 'Device UUID 입력' 에 Android GAID 또는 iOS IDFA 를 입력해 주세요.
  • 디바이스 UUID (Android GAID 또는 iOS IDFA) 노출이 확인되지 않는다면 설치 에 안내된 대로 설치되었는지 다시 확인해 주세요.
  • 로그 노출은 최대 5분 가량 지연될 수 있습니다.
  • Android GAID 확인: Android 디바이스에서 '설정' → Google 설정 → 광고 → '내 광고 ID 확인' 항목의 값이 Android GAID 입니다.

인앱 이벤트link

사용자의 중요한 행동들이 발생할 때, 인앱 이벤트를 전송해 유입 경로별 성과를 측정할 수 있습니다.

회원, 커머스 관련 9가지의 기본이벤트가 제공되고, 커스텀 이벤트를 정의하여 사용하실 수 있습니다.

모든 이벤트에 첨부되는 모든 정보는 선택적으로 추가할 수 있습니다.
그러나 이벤트에 대한 많은 정보는 정확한 통계 제공에 도움이 됨으로 추가하는 것을 권장합니다.

EventOption 객체link

Airbridge 의 모든 이벤트는 EventOption 을 통해 추가 정보를 지정할 수 있습니다.

이름타입Optional설명
actionstringOptional이벤트 분류 1
labelstringOptional이벤트 분류 2
valuestringOptional이벤트 커스텀 값
attributesObjectOptional이벤트 커스텀 정보

action, label 에 대해서는 인앱 이벤트 구분 항목을 참고해주세요.

인앱 이벤트 - 회원link

회원 인앱 이벤트는 크로스 플랫폼 사용자 매칭 의 구성요소입니다.
가능하면 하나이상의 유저 정보를 포함하여 전송해 주시기 바랍니다.

회원가입 및 로그인 이벤트가 발생한 경우,
다음 로그아웃 이벤트 발생까지 모든 이벤트가 해당 유저에서 발생한 것으로 기록됩니다.

로그아웃 이벤트가 발생한 경우,
다음 회원가입 및 로그인 이벤트 발생까지 모든 이벤트가 유저 없이 발생한 것으로 기록됩니다.

사용자 정보는 모두 Hash (SHA256) 되어 전송됩니다.

User 객체link

상품 정보를 가지는 객체입니다.

이름타입Optional설명
IDstringOptional유저 아이디
emailstringOptional유저 이메일
phonestringOptional유저 전화번호

회원가입link

사용자가 회원가입을 하는 경우, signUp 을 호출해 주세요.

signUplink

  1. 회원가입 이벤트 전송
  2. 다음 이벤트들에 적용될 유저를 설정
파라미터 :
이름타입Optional설명
userUserOptional유저 정보
optionEventOptionOptional이벤트 추가 정보

코드 예시link

Airbridge.event.signUp({
ID: 'test',
email: 'test@ab180.co',
phone: '000-0000-0000',
});

로그인link

사용자가 로그인을 하는 경우, signIn 을 호출해 주세요.

signInlink

  1. 로그인 이벤트 전송
  2. 다음 이벤트들에 적용될 유저를 설정
파라미터 :
이름타입Optional설명
userUserOptional유저 정보
optionEventOptionOptional이벤트 추가 정보

코드 예시link

Airbridge.event.signIn({
ID: 'test',
email: 'test@ab180.co',
phone: '000-0000-0000',
});

로그아웃link

사용자가 로그아웃을 하는 경우, signOut 을 호출해 주세요.

signOutlink

  1. 로그아웃 이벤트 전송
  2. 다음 이벤트들에 적용될 유저를 제거

코드 예시link

Airbridge.event.signOut();

인앱 이벤트 - 커머스link

사용자의 커머스 관련 행동을 추적합니다.

Product 객체link

상품 정보를 가지는 객체입니다.

이름타입Optional설명
IDstringOptional상품 고유 아이디
namestringOptional상품 이름
currencystringOptional상품 통화
ISO 4217 standard에 따름
pricenumberOptional상품 가격
quantitynumberOptional상품 수량
positionnumberOptional리스트 중 상품 위치

홈 화면 조회link

사용자가 앱의 홈 화면으로 이동하는 경우, viewHome 을 호출해 주세요.

viewHomelink

홈 화면 조회 이벤트 전송

코드 예시link

Airbridge.event.viewHome();

상품 리스트 조회link

사용자가 상품 리스트를 조회할 경우, viewProductList 를 호출해 주세요.

viewProductListlink

상품 리스트 조회 이벤트 전송

파라미터 :link

이름타입Optional설명
listIDstringOptional상품 리스트 아이디
productsArray.<Product>Optional상품 리스트
optionEventOptionOptional이벤트 추가 정보

코드 예시link

Airbridge.event.viewProductList({
listID: 'ID-1234567890',
products: [
{
name: 'product A',
},
{
name: 'product B',
},
]
});
  • 사용자가 리스트를 스크롤하여 새로운 정보를 로드할 경우
    추가적으로 로드된 상품 정보로 해당 이벤트를 별도로 생성하여 전송하시는 것을 권장합니다.

검색결과 조회link

사용자가 상품을 검색하는 경우, viewSearchResult 를 호출해 주세요.

viewSearchResultlink

상품 검색 이벤트 전송

파라미터 :link

이름타입Optional설명
querystringOptional검색어
productsArray.<Product>Optional검색 결과 상품 리스트
optionEventOptionOptional이벤트 추가 정보

코드 예시link

Airbridge.event.viewSearchResult({
query: 'product A',
products: [
{
name: 'product A AAA',
},
{
name: 'product A BBB',
},
],
});

상품 상세페이지 조회link

사용자가 상품의 상세정보를 조회하는 경우, viewProductDetail 을 호출해 주세요.

viewProductDetaillink

상품 상세정보 조회 이벤트 전송

파라미터 :link

이름타입Optional설명
productsArray.<Product>Optional조회 상품 리스트
optionEventOptionOptional이벤트 추가 정보

코드 예시link

Airbridge.event.viewProductDetail({
products: [
{
name: 'product A',
},
],
});

장바구니 담기link

사용자가 장바구니에 상품을 담는 경우, addToCart 를 호출해 주세요.

addToCartlink

장바구니 담기 이벤트 전송

파라미터 :link

이름타입Optional설명
cartIDstringOptional장바구니 아이디
productsArray.<Product>Optional장바구니 상품 리스트
currencystringOptional상품 통화
ISO 4217 standard에 따름
totalnumberOptional상품 총 가격
optionEventOptionOptional이벤트 추가 정보

코드 예시link

Airbridge.event.addToCart({
cartID: 'ID-1234567890',
products: [
{
name: 'product A',
},
],
currency: 'KRW',
total: 50000,
});

결제link

사용자가 결제하는 경우, purchase 를 호출해 주세요.

purchaselink

결제 이벤트 전송

파라미터 :link

이름타입Optional설명
transactionIDstringOptional결제 아이디
productsArray.<Product>Optional장바구니 상품 리스트
isInAppPurchasebooleanOptional인앱결제 여부
currencystringOptional상품 통화
ISO 4217 standard에 따름
totalnumberOptional상품 총 가격
optionEventOptionOptional이벤트 추가 정보

코드 예시link

Airbridge.event.purchase({
transactionID: 'transactionID-purchase',
products: [
{
name: 'product purchase A name',
ID: 'product purchase A ID',
price: 100,
quantity: 10,
},
],
isInAppPurchase: true,
currency: 'KRW',
total: 50000,
});

인앱 이벤트 - 커스텀link

인앱 이벤트를 커스텀 정의해서 사용할 수 있습니다.

customlink

커스텀 이벤트 전송

파라미터 :link

이름타입Optional설명
categorystringRequired이벤트 이름
optionEventOptionOptional이벤트 추가 정보

코드 예시link

Airbridge.event.custom('Custom', {
action: 'Action custom',
label: 'Label custom',
value: 9999,
attributes: {
custom: 'value custom',
},
});

설정link

에어브릿지 SDK 의 동작을 개발자의 의도에 따라 설정합니다.

인앱 이벤트 구분link

에어브릿지 대시보드는 Category, Action, Label 을 통해 이벤트들을 분리하여 통계를 표시합니다.

Category 는 이벤트의 이름 입니다.
Action 은 이벤트의 하위 분류 1 입니다.
Label 은 이벤트의 하위 분류 2 입니다.

커스텀 인앱 이벤트는 Category, Action, Label 을 지정할 수 있습니다.

코드 예시link

for(var i=0; i<10; i++) {
Airbridge.event.signUp({
ID: 'test'
}, {
action: '서울',
label: '10대',
});
}
for(var i=0; i<20; i++) {
Airbridge.event.signUp({
ID: 'test'
}, {
action: '서울',
label: '20대',
});
}
for(var i=0; i<15; i++) {
Airbridge.event.signUp({
ID: 'test'
}, {
action: '부산',
label: '10대',
});
}
for(var i=0; i<8; i++) {
Airbridge.event.purchase({
transactionID: 'ID-1234567890',
}, {
action: '간편결제 사용',
label: '카카오페이 사용',
});
}
for(var i=0; i<7; i++) {
Airbridge.event.purchase({
transactionID: 'ID-1234567890',
}, {
action: '간편결제 사용',
label: '토스 사용',
});
}
for(var i=0; i<10; i++) {
Airbridge.event.custom('구독', {
action: '일반',
});
}
for(var i=0; i<5; i++) {
Airbridge.event.custom('구독', {
action: '프리미엄',
});
}

에어브릿지 대시보드에서 Category 를 기준으로 각 이벤트의 개수 통계를 볼 수 있습니다.
Action 으로 같은 Category 의 이벤트들을 분리하고
Label 을 통해 분리된 것을 또 분리하여 통계를 볼 수 있습니다.

결과적으로 대시에보드에 아래와 같은 결과물을 얻을 수 있습니다.

CategoryActionLabelCount
커스텀 회원가입서울10대10
커스텀 회원가입서울20대20
커스텀 회원가입부산10대15
커스텀 결제간편결제 사용카카오페이 사용8
커스텀 결제간편결제 사용토스 사용7
구독일반10
구독프리미엄5

세션 기간link

에어브릿지의 앱 세션 기간의 기본값은 5분 입니다.

아래의 코드를 호출하여 세션기간을 설정 할 수 있습니다.

    ...
    [AirbridgeCO setSessionTimeout:(1000 * 60 * 5)];
    [AirbridgeCO getInstance:@"YOUR_APP_TOKEN(앱 토큰)" appName:@"YOUR_APP_NAME(앱 이름)" withLaunchOptions:launchOptions];
    ...

    세션기간은 밀리초 단위 입니다. 최대값은 604800000 (7일) 입니다.

    위 코드를 Android, iOS 모두 초기화 이전에 호출해야 합니다.

    유저 정보 암호화 해제link

    유저는 정보 모두 Hash (SHA256) 되어 전송합니다.

    만일 Hash 화를 원하지 않을 경우 아래 메서드를 활용하여 설정을 변경하실 수 있습니다.

      ...
      // User 정보 Hash 화 적용
      [AirbridgeCO setIsUserInfoHashed:YES];
      [AirbridgeCO getInstance:@"YOUR_APP_TOKEN(앱 토큰)" appName:@"YOUR_APP_NAME(앱 이름)" withLaunchOptions:launchOptions];
      ...

      위 코드를 Android, iOS 모두 초기화 이전에 호출해야 합니다.

      추적 중지 (Opt-out)link

      SDK 에서 이벤트를 전송하는 기능을 중지할 수 있습니다.

      ...
      // 추적 중지
      [AirbridgeCO setIsTrackingEnabled:NO];
      [AirbridgeCO getInstance:@"YOUR_APP_TOKEN(앱 토큰)" appName:@"YOUR_APP_NAME(앱 이름)" withLaunchOptions:launchOptions];
      ...

      true : 추적
      false : 추적 중지

      위 코드를 Android, iOS 모두 초기화 이전에 호출해야 합니다.

      추가 수집link

      선택적으로 더 많은 정보를 수집할 수 있습니다.

      유저 통신사 이름 수집 (Android)link

      Android 사용자의 통신사 이름을 추가적으로 수집할 수 있습니다.

      android/app/src/main/AndroidManifest.xml 파일에 아래와 같은 권한을 추가해 주세요.

      ...
      <uses-permission android:name="android.permission.READ_PHONE_STATE" />
      ...

      이 설정은 크로스 플랫폼 사용자 매칭 의 정확도를 높여 줍니다.

      App 에서 딥링크 실행 및 추적link

      아래와 같은 코드를 사용해서 App 에서 딥링크 동작을 수행하고, 그 동작을 추적할 수 있습니다.

      Airbridge.placement.click('https://abr.ge/~~~', 'ablog://main', 'https://airbridge.io');
      Airbridge.placement.impression('https://abr.ge/~~~');

      clicklink

      click 함수는 해당 트래킹링크 의 click 통계를 1개 추가하고 설정된 App, Web 또는 Fallback 으로 이동합니다.
      해당 트래킹링크 가 클릭되었을 때, 호출해 주세요.

      click 함수에서 deeplink, fallback 은 인터넷 연결이 없을 때 사용하는 백업 링크 입니다.
      deeplink 파라미터는 Custom URL Scheme 형식의 딥링크만 사용가능 합니다. (모두 optional 파라미터 입니다.)

      impressionlink

      impression 함수는 해당 트래킹링크 의 impression 통계를 1개 추가합니다.
      해당 트래킹링크 가 UI 에 표시되었을 때, 호출해 주세요.

      커스텀 도메인 을 사용하는 중 이라면, 커스텀 Short ID 를 사용한 트래킹링크 는 사용할 수 없습니다.
      example: http://deeplink.ab180.co/custom -> 사용불가
      example: http://deeplink.ab180.co/a3b1c2 -> 사용가능
      example: https://abr.ge/a3b1c2 -> 사용가능

      고급link

      유저 정보 수동 설정link

      회원가입, 로그인, 로그아웃 이벤트 외에도 유저 정보를 수동으로 설정할 수 있습니다.

      설정하면 다음 설정이나 signIn, signUp, signOut 함수 호출까지
      모든 이벤트가 설정된 유저에서 발생한 것으로 기록됩니다.

      setUserlink

      현재 유저를 변경합니다.

      파라미터 :link

      이름타입Optional설명
      userUserOptional유저 정보

      현재 user 를 입력한 user 로 교체합니다.

      updateUserlink

      현재 유저 정보를 수정합니다.

      파라미터 :link

      이름타입Optional설명
      userUserOptional유저 정보

      입력한 user 에 ID 값이 없으면 현재 user 의 ID 를 수정하지 않습니다. 입력한 user 에 ID 값이 있으면 현재 user 의 ID 를 수정합니다.

      코드 예시link

      Airbridge.state.setUser({
      ID: 'test1',
      email: 'test1@ab180.co',
      });
      Airbridge.state.setUser({
      email: 'test2@ab180.co',
      phone: '222-2222-2222',
      });
      Airbridge.state.updateUser({
      ID: 'test3',
      });

      위 코드는 다음과 같이 작동합니다.

      User = { ID: 'test1', email: 'test1@ab180.co' }
      -> User = { email: 'test1@ab180.co', phone: '222-2222-2222' }
      -> User = { ID: 'test3', email: 'test2@ab180.co', phone: '222-2222-2222' }

      레퍼런스link

      문서 바로가기

      업데이트link

      이전 버전에서 SDK 를 업데이트 하시는 경우, 아래를 확인해주세요.

      1.0.X -> 1.1.Xlink

      Installlink

      구버전 SDK 를 uninstall 해주세요.

      cordova plugin remove airbridge-cordova-sdk

      신버전 SDK 를 install 해주세요.

      cordova plugin add airbridge-cordova-sdk

      Javascriptlink

      DeeplinkListener

      getInitialDeeplink 함수를 제거하고 setDeeplinkListener 함수만 사용해주세요.

      - Airbridge.deeplink.getInitialDeeplink().then((deeplink) => {
      -
      - });
      .
      . Airbridge.deeplink.setDeeplinkListner((deeplink) => {
      .
      . });

      Androidlink

      AndroidManifest.xml

      android/app/src/main/AndroidManifest.xml 파일의 MainActivity 영역에 아래와 같은 intent-filter 문장을 삽입해주세요.

      + <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="http" android:host="YOUR_APP_NAME.deeplink.page" />
      + <data android:scheme="https" android:host="YOUR_APP_NAME.deeplink.page" />
      + </intent-filter>
      . <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="http" android:host="YOUR_APP_NAME.airbridge.io" />
      . <data android:scheme="https" android:host="YOUR_APP_NAME.airbridge.io" />
      . </intent-filter>
      . <intent-filter>
      . <action android:name="android.intent.action.VIEW" />
      .
      . <category android:name="android.intent.category.DEFAULT" />
      . <category android:name="android.intent.category.BROWSABLE" />
      .
      . <data android:scheme="EXAMPLE_SCHEME" />
      . </intent-filter>
      MainActivity.java

      android/app/src/main/java/.../MainActivity.java 을 수정해주세요.

      . import co.ab180.airbridge.cordova.AirbridgeCO;
      .
      . public class MainActivity extends ReactActivity {
      + @Override
      + protected void onResume() {
      + super.onResume();
      +
      + AirbridgeCO.getDeeplink().fetch(getIntent());
      + }
      +
      . @Override
      . public void onNewIntent(Intent intent) {
      . super.onNewIntent(intent);
      . setIntent(intent);
      . }
      . }

      iOSlink

      Xcode

      Universal Link

      1. Xcode > Project 파일 > Signing & Capabilities > Associated Domains 로 이동해주세요.
      2. + 버튼을 눌러 applinks:YOUR_APP_NAME.deeplink.page 를 추가해주세요.

      YOUR_APP_NAME 은 대시보드의 'App Setting > 앱 기본정보' 에서 확인할 수 있습니다.

      AppDelegate.m

      ios/.../AppDelegate.m 을 수정해주세요.

      . - (BOOL)application:(UIApplication *)application
      . openURL:(NSURL *)url
      . options:(NSDictionary<UIApplicationOpenURLOptionsKey, id>*)options
      . {
      - [AirbridgeCO.instance handleURLSchemeDeeplink:url
      - withSourceBundle:options[UIApplicationOpenURLOptionsSourceApplicationKey]];
      + [AirbridgeCO.deeplink handleURLSchemeDeeplink:url
      + withSourceBundle:options[UIApplicationOpenURLOptionsSourceApplicationKey]];
      .
      . return YES;
      . }
      .
      . - (BOOL)application:(UIApplication*)application
      . openURL:(NSURL*)url
      . sourceApplication:(NSString*)sourceApplication
      . annotation:(id)annotation
      . {
      - [AirbridgeCO.instance handleURLSchemeDeeplink:url
      - withSourceBundle:sourceApplication];
      + [AirbridgeCO.deeplink handleURLSchemeDeeplink:url
      + withSourceBundle:sourceApplication];
      .
      . return YES;
      . }

      iOS 8.x 또는 그 이전 버전을 target 한다면 아래와 같은 코드를 추가로 수정해주세요.

      . - (BOOL)application:(UIApplication*)application
      . continueUserActivity:(NSUserActivity*)userActivity
      . restorationHandler:(void (^)(NSArray* _Nullable))restorationHandler
      . {
      - [AirbridgeCO.instance handleUniversalDeeplink:userActivity.webpageURL];
      + [AirbridgeCO.deeplink handleUniversalLink:userActivity.webpageURL];
      .
      . return YES;
      . }