디파이너리(애드브릭스) 연동하기 [React Native]
팔로우
Note
React-Native 0.68.0 버전부터 지원하기 시작하는 New Architecture 에서는 React-Native 용 AdBrix SDK 가 지원되지 않습니다. 현재 이에 대한 지원을 준비 중에 있으며 준비가 완료되는대로 공지 드리도록 하겠습니다.
Quick Start
React Native에 적용된 SDK 버전이 업그레이드 되었습니다. 2021년 8월 7일 이전의 가이드를 확인하고 싶으시다면 아래 메일로 문의를 남겨주시기 바랍니다.
support: support-tracker@adbrixsupport.zendesk.com
SDK 다운로드
React Native 용 AdbrixRM SDK 는 npm 을 통해 다운로드 받습니다.
npm install react-native-adbrix-remaster --save
SDK 업데이트
npm 을 통해 React Native 용 AdBrixRM SDK 를 최신 버전으로 업데이트 할 수 있습니다. (현재 최신 버전 : 2.3.1)
npm update react-native-adbrix-remaster --save
Android 설정
[[인용:안내:보통]] Android 관련 작업은 Android Stuido 에서 진행하는 것을 권장합니다.
1. 아래와 같이 allprojects 항목에 mavenCentral() 을 [build.gradle (Project: ProjectName)] 에 추가합니다.
allprojects {
repositories {
google()
mavenCentral()
}
}
2. app/android/setting.gradle 에 SDK 를 선언합니다.
include(":react-native-adbrix-remaster") project(':react-native-adbrix-remaster').projectDir = file('../node_modules/react-native-adbrix-remaster/android')
3. 다음 dependencies 를 [app:build.gradle] 에 추가합니다.
dependencies { implementation project(':react-native-adbrix-remaster') implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1' implementation 'com.android.installreferrer:installreferrer:2.2' //2.3.1 버전 기준 네이티브 SDK 2.4.0.4버전을 고정적으로 참조합니다. implementation 'io.dfinery:android-sdk:2.4.0.4' }
[[인용:위험:보통]]* Fraud Traffic 방지를 위해서 com.android.installreferrer:installreferrer 를 반드시 추가합니다.
* 구글광고아이디를 얻기 위해 com.google.android.gms:play-service-ads 를 반드시 추가합니다.
4. [AndroidManifest.xml > manifest] 에 다음과 같이 설정합니다.
<manifest> ...
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID" /> ... </manifest>
5. SDK 구동 및 분석이 원할하게 진행될 수 있도록 app / proguard-rule.pro 에 아래 코드를 추가해 주시길 부탁드립니다.
# Add any project specific keep options here: -keep class com.google.android.gms.common.ConnectionResult { int SUCCESS; } -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient { com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context); } -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info { java.lang.String getId(); boolean isLimitAdTrackingEnabled(); } -keep public class com.android.installreferrer.** { *; }
6. 안드로이드 Application 클래스에 SDK initialize 코드를 추가합니다. (Deprecated 2.3.0 ~)
public class MyApplicationClass extends Application { @Override public void onCreate() { super.onCreate(); AbxActivityHelper.initializeSdk(MyApplicationClass.this, "your_adbrix_remastered_app_key", "your_adbrix_remastered_secret_key"); } }
Android (2.3.0 ~)
React-Native AdBrix SDK 2.3.0 버전 이후 부터 안드로이드 부분 의 SDK initialize 방식이 변경되었습니다. 2.3.0 이후 버전을 사용하고 있으실 경우 아래와 같이 적용을 부탁드립니다.
1. AndroidnManfiest.xml 에 AdBrixRmAppkey / AdBrixRmSecretKey 항목을 추가합니다. 각 키는 디파이너리 콘솔에서 확인하실 수 있습니다.
<application>
<meta-data android:name="AdBrixRmAppKey" android:value="your_adbrix_remastered_app_key" />
<meta-data android:name="AdBrixRmSecretKey" android:value="your_adbrix_remastered_secret_key" /> </application>
2. Android프로젝트 내 Application 클래스에서 AbxReactApplication 를 상속받아 사용할 수 있도록 수정 후, React-native 모듈을 사용하기 위한 initReactNativeHost 메소드를 오버라이딩합니다.
public class MainApplication extends AbxReactApplication { @Override public void onCreate() { super.onCreate(); } @Override public ReactNativeHost initReactNativeHost() { return new ReactNativeHost(this) { @Override public boolean getUseDeveloperSupport() { return BuildConfig.DEBUG; } @Override protected List<ReactPackage> getPackages() { List<ReactPackage> packages = new PackageList(this).getPackages(); // 1. Add AdbrixPackage packages.add(new AdbrixPackage(new AdbrixPackage.ReactApplicationContextListener() { @Override public void onReceive(ReactApplicationContext ReactApplicationContext) { // 2. Setting applicationContext setReactApplicationContext(ReactApplicationContext); } })); // Optional : Add Addtional package as you nedded. // example : LottiePackage // package.add (new LottiePackage()); return packages; } @Override protected String getJSMainModuleName() { // Need to add code here as you needed return "index"; } }; } // 3. Add Method for DFINERY SDK Listener @Override public void registerListener() { // Add Listener to use in DFINERY // setLogListener(); // setDeeplinkListener(); // setDeferredDeeplinkListener(); // setInAppMessageClickListener(); // setDfnInAppMessageAutoFetchListener(); // setRemotePushMessageListener(); // setLocalPushMessageListener(); } }
만약 Multidex 를 사용하신다면 아래와 같이 설정을 추가합니다.
public class MainApplication extends AbxReactApplication{ // Add MultiDex Configuration @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } . . . }
iOS 설정
1. React Native 프로젝트에서 iOS 폴더로 넘어가 아래와 같이 터미널에 pod install 명령어를 입력하여 Cocoapods 를 통해 SDK 를 설치합니다.
$ cd ios
$ pod install
※ Cocoapods 가 설치되어 있지 않다면 터미널에서 아래의 명령어를 입력하여 Cocoapods 를 설치합니다.
$ sudo gem install cocoapods
2. Xcode 프로젝트를 열고 [General > Linked Frameworks and Libraries] 에서 iAd.framework(필수)과 AdServuces.framework(애플서치 애즈 트래킹시 필요)를 추가합니다.
iOS 14.2를 타겟으로 하신다면 아래와 같이 [Build Phases > Link Binary With Libraries]에서 status를 반드시 optional로 설정해주시기 바랍니다.
3. [Build Settings > Always Embed Swift Standard Libraries] 에서 Yes 로 설정합니다.
4. Xcode에서 AppDelegate.m를 열어 SDK initialize 코드를 추가해주시기 바랍니다.
#import <AdSupport/AdSupport.h> #import <AdBrixRmKit/AdBrixRmKit-swift.h> @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. // Create AdBrixRM Instance AdBrixRM *adBrix = [AdBrixRM sharedInstance];
[adBrix initAdBrixWithAppKey:@"adbrix_app_key" secretKey:@"adbrix_secret_key"]; return YES; }
4. ATT 팝업을 통해 IDFA 사용 승인이 필요한 경우 아래와 같이 "applicationDidBecomeActive" 항목에 아래 코드를 추가합니다.
#import <AdSupport/AdSupport.h> #import <AdBrixRmKit/AdBrixRmKit-swift.h> #import <AppTrackingTransparency/AppTrackingTransparency.h> @interface AppDelegate () @end @implementation AppDelegate . . . - (void)applicationDidBecomeActive:(UIApplication *)application { // Create AdBrixRM Instance AdBrixRM *adBrix = [AdBrixRM sharedInstance]; if (@available(iOS 14, *)) { [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) { switch (status) { case ATTrackingManagerAuthorizationStatusAuthorized: [adBrix startGettingIDFA]; break; case ATTrackingManagerAuthorizationStatusDenied: [adBrix stopGettingIDFA]; break; case ATTrackingManagerAuthorizationStatusRestricted: [adBrix stopGettingIDFA]; break; case ATTrackingManagerAuthorizationStatusNotDetermined: [adBrix stopGettingIDFA]; break; default: [adBrix stopGettingIDFA]; break; } }]; } }
[[인용:안내:보통]]앱키 & 시크릿키???
애드브릭스 리마스터에서 각 앱을 구분하기 위한 식별 값입니다.
SDK 연동을 위해서 반드시 필요한 값으로, 디파이너리(애드브릭스) 콘솔에서 앱 등록 후 확인할 수 있습니다.
[[인용:안내:보통]] 축하합니다!!!
디파이너리(애드브릭스) 이용을 위한 기본적인 연동이 완료되었습니다.
이용할 수 있는 기능은 다음과 같습니다.
1. DAU, MAU, 일별 리텐션 등의 지표를 확인할 수 있는 리포팅
2. NCPI 와 같은 앱 유입 캠페인
앱 내에서 발생하는 구매와 같은 이벤트를 분석하고자 한다면, 아래의 가이드를 참고하여 계속 연동을 진행하시면 됩니다.
SDK 추가설정
누적 이벤트 개수 기준
누적된 이벤트 건수에 따라 디파이너리(애드브릭스) 서버로, 이벤트 데이터를 전송하도록 설정합니다.
아래 값으로 이벤트 건수를 설정할 수 있습니다.
- AdbrixRm.UPLOAD_COUNT_INTERVAL_MIN : 10건
- AdbrixRm.UPLOAD_COUNT_INTERVAL_NORMAL: 30건
- AdbrixRm.UPLOAD_COUNT_INTERVAL_MAX : 60건
useEffect(() => {
AdbrixRm.setEventUploadCountInterval(AdbrixRm.UPLOAD_COUNT_INTERVAL_NORMAL);
}, []);
시간 기준
설정된 시간에 따라 이벤트 정보를 디파이너리(애드브릭스) 서버로 전송합니다.
아래 값으로 업로드 주기를 설정할 수 있습니다.
- AdbrixRm.UPLOAD_TIME_INTERVAL_MIN: 10 초
- AdbrixRm.UPLOAD_TIME_INTERVAL_NORMAL : 30 초
- AdbrixRm.UPLOAD_TIME_INTERVAL_MAX : 60 초
useEffect(() => {
AdbrixRm.setEventUploadTimeInterval(AdbrixRm.UPLOAD_TIME_INTERVAL_NORMAL);
}, []);
딥링크 / 디퍼드 딥링크 이벤트 분석
React-Native와 Android / iOS 플랫폼에 각각 코드를 추가하여 딥링크 성과를 분석할 수 있습니다.
딥링크 설정
React-Native 에서 딥링크를 사용하기 위해서 Android / iOS 플랫폼 별로 추가 설정이 필요합니다.
Android
안드로이드의 경우 Androidmanifest.xml 에 MAIN/LAUNCHER 로 설정된 액티비티에 아래의 코드를 추가합니다. 액티비티의 launchMode는 singleTask로 설정해야 합니다.
<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!--Add your deeplink scheme and host --> <data android:scheme="your_scheme" android:host="your_host" /> </intent-filter>
해당 Activity 에 아래 내용을 추가합니다.
import android.content.Intent; import android.os.Bundle; import com.igaworks.v2.core.AdBrixRm; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); onNewIntent(MainActivity.this.getIntent()); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); // Do something with Deeplink Intent Data setIntent(intent); AdBrixRm.deeplinkEvent(MainActivity.this); } }
안드로이드 프로젝트 내 Application 클래스에 아래와 같이 딥링크 리스너를 추가합니다.
public class MyApplicationClass extends AbxReactApplication { @Override public void onCreate() { super.onCreate(); registerListener(); } // Listener method @Override public void registerListener() { //Deeplink Listener setDeeplinkListener(); } }
iOS
Xcode 에서 프로젝트를 열고 [General > Target > Info > URL Types] 에 URL Schemes 값을 추가합니다.
DeeplinkDelegate 코드를 AppDelegate.m 에 아래와 같이 추가합니다.
#import <RNAdbrixRmReact.h> #import <React/RCTLinkingManager.h> // AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { RNAdbrixRmReact* rnAdbrixRmReact = [RNAdbrixRmReact new]; [rnAdbrixRmReact setAdBrixDeeplinkDelegate]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary <UIApplicationOpenURLOptionsKey,id > *)options { AdBrixRM *adBrix = [AdBrixRM sharedInstance]; [adBrix deepLinkOpenWithUrl:url]; return [RCTLinkingManager application:application openURL:url options:options]; } // If Universial Link is available - (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray<id> * _Nullable))restorationHandler { if ([userActivity.activityType isEqualToString: NSUserActivityTypeBrowsingWeb]) { NSURL *incomeingurl = userActivity.webpageURL; NSLog(@"DEEPLINK :: UniversialLink was Clicked!! : %@", incomeingurl); AdBrixRM *adBrix = [AdBrixRM sharedInstance]; [adBrix deepLinkOpenWithUrl:incomeingurl]; } return [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; }
React-Native
트래킹 링크에 설정된 딥링크 정보를 가져오기 위해 "setDeeplinkListener" 를 설정합니다.
// App.js import {Linking} from 'react-native'; useEffect(() => { //앱이 오픈 될 때 Linking.getInitialURL() .then(deeplink => { // 딥링크롤 통해 처리할 로직 작성 }) //앱이 이미 오픈 되어있을 때 Linking.addEventListener('url', (event) => { //딥링크롤 통해 처리할 로직 작성 (event.url) }) return () => { Linking.removeAllListeners(); } }, []);
디퍼드 딥링크
디퍼드 딥링크는 앱 설치 후 특정 화면으로 랜딩시킬 수 있도록 서버에서 해당 정보를 전달하여 랜딩시킬 수 있는 역할을 합니다.
[[인용:안내:보통]] 디퍼드 딥링크에서 전달되는 값은 다음과 같이 string 타입으로 전달됩니다.
예; myscheme://host?key=value
Android
안드로이드 프로젝트 내 Application 클래스에 아래와 같이 디퍼드 딥링크 리스너를 추가합니다.
public class MyApplicationClass extends AbxReactApplication { @Override public void onCreate() { super.onCreate(); registerListener(); } // Listener method @Override public void registerListener() { //Deeplink Listener setDeferredDeeplinkListener(); } }
iOS
DeferredDeeplinkDelegate 코드를 AppDelegate.m 에 아래와 같이 추가합니다.
#import <RNAdbrixRmReact.h> // AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { RNAdbrixRmReact* rnAdbrixRmReact = [RNAdbrixRmReact new]; [rnAdbrixRmReact setDeferredDeeplinkListener]; }
React-Native
트래킹 링크에 설정된 딥링크 정보를 가져오기 위해 "setDeferredDeeplinkListener" 를 설정합니다.
useEffect(()=>{ AdbrixRm.setDeferredDeeplinkListener(function (deeplink) { console.log("deeplink msg arrived!"); console.log(deeplink); // you will receive DeferredDeeplink info on "deeplink" }); }, []);
[[인용:경고:보통]] 앱이 두 번 오픈됩니다!!!
딥링크가 설정된 트래킹 링크를 통해 구글 플레이스토어에서 앱을 설치/실행하게 되면,
구글플레이스토어에서 제공하는 디퍼드딥링킹이 동작합니다.
구현하신 리스너를 통해 중복 처리가 되지 않도록 예외 처리를 하는 것을 권장합니다.
이벤트 분석
앱에서 발생하는 이벤트를 분석하여 리포트를 구성하고 포스트백을 전송할 수 있습니다.
이벤트 분석을 위해서는 이벤트가 발생하는 시점에 이벤트 분석 코드를 삽입하고 적절한 이벤트 정보를 전달하여야 합니다.
디파이너리(애드브릭스)는 크게 4가지의 이벤트 분석을 제공합니다.
- 유저 분석
- 로그인/로그아웃 이벤트
- 유저 정보
- 커스텀 이벤트 분석
- 공통(일반) 이벤트 분석
- 회원가입
- 앱 업데이트
- 사용자 초대
- 크레딧 사용
- 구매하기
- 커머스 이벤트 분석
- 홈(메인) 화면 진입
- 카테고리(기획전) 진입
- 상품 상세보기
- 장바구니 담기
- 관심 상품 추가
- 주문 확인하기
- 주문 취소하기
- 상품 검색하기
- 상품 공유하기
- 상품 목록 조회하기
- 장바구니 리스트 보기
- 결제 정보
- 게임 이벤트 분석
- 튜토리얼 완료
- 캐릭터 생성
- 스테이지 완료
- 레벨 달성
유저 분석
로그인/로그아웃 이벤트
앱 유저의 로그인/로그아웃 이벤트를 분석합니다.
로그인이 성공했을 때, 유저를 구분하는 식별 값(user id)를 다음과 같이 전달합니다.
[[인용:경고:보통]] 로그인 유의 사항
로그인에 사용되는 user id는 그로스액션 기능 사용 시 유저-기기간 매칭을 위해 사용됩니다. 로그인 후 로그아웃 없이 다시 로그인이 호출 될 경우 올바른 매칭이 되지 않을 수 있습니다.
user id에 개인정보가 포함되지 않도록 주의해주세요. 만약 user id에 이메일, 전화번호 등의 개인정보가 포함되는 경우에는 암호화처리를 하시는 것을 권장합니다.
onPress={() => { // LogIn AdbrixRm.login("your_user_id"); }}
유저 정보
유저의 나이, 성별, 기타 정보에 대해 분석할 수 있습니다.
onPress={() => { // Age AdbrixRm.setAge(30); // Gender AdbrixRm.setGender(AdBrixRm.GENDER_MALE); // Other user properties var userProperties = new AdbrixRm.UserProperties(); userProperties.setProperty("user_nick", "peterPark"); userProperties.setProperty("place","Seoul"); userProperties.setProperty("height",180); userProperties.setProperty("married",false); AdbrixRm.saveUserProperties(userProperties); }}
[[인용:위험:보통]] UserProperty 및 AttrModel 설정 시 유의 사항
1.100 개 이상의 정보는 처리되지 않습니다.
2. Key 값의 데이터 타입은 string 이며 256자를 넘을 수 없고, 영문 소문자, 숫자를 제외한 나머지 문자는 사용할 수 없습니다.
3. Value 값의 데이터 길이는 byte 기준으로 1024byte를 넘을 수 없습니다.
커스텀 이벤트 분석
앱 내 유저의 일반적인 모든 이벤트를 분석합니다. (구매 관련 이벤트 제외)
앱 내에서의 '버튼 클릭', '캐릭터 생성', '튜토리얼 완료', '레벨 업' 등의 대부분의 액션을 자유롭게 분석할 수 있습니다.
onPress={() => { // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York") eventAttr.setAttrs("age", 27) eventAttr.setAttrs("firsttime",true); // Click a button "Invite a friend" AdbrixRm.event("invite_button_click", eventAttr); // Complete "Character creation" AdbrixRm.event("create_character_complete",eventAttr); // Complete "Tutorial view" AdbrixRm.event("tutorial_complete", eventAttr); // Achieve "Level 10" AdbrixRm.event("level_10", eventAttr); }}
※ 주의사항
아래 예시와 같이, 자연적으로 증가하는 값을 이벤트 명으로 설정하지 마십시오.
너무 많은 이벤트는 오히려 분석을 하는데 방해가 됩니다.
AdbrixRm.event("custom:Lev-37 cleared,clearTime:00:00:39.2343535");
그러므로 이 경우에는 이벤트 추가 정보를 설정(AdbrixRm.AttrModel)하여 커스텀 파라미터를 설정하여 이벤트를 호출해 주시길 부탁드립니다.
// Addtional event parameter api var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("level",37); eventAttr.setAttrs("clear_time_mile", 39238); // set custom event with addtional event parameter AdbrixRm.event("level_clear", eventAttr);
공통(일반)이벤트 분석
앱에서 발생하는 이벤트 중, 공통적으로 발생하는 이벤트(결제)를 분석합니다.
디파이너리(애드브릭스)에서 제공하는 공통 이벤트 종류는 다음과 같습니다.
- 회원가입
- 앱 업데이트
- 사용자 초대
- 크레딧 사용
- 결제하기
* 디파이너리(애드브릭스)에서 광고채널 별 매출을 보고자 할 때에는 '결제하기' 연동을 반드시 진행해야 합니다
회원가입
앱에서 발생한 회원가입 이벤트를 분석합니다.
onPress={() => { // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); AdbrixRm.commonSignUp (AdbrixRm.SIGNUP_CHANNEL_KAKAO,eventAttr); }}
앱 업데이트
앱에서 발생한 앱 업데이트 이벤트를 분석합니다.
onPress={() => { // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); AdbrixRm.commonAppUpdate("1.0.0","1.0.1",eventAttr); }}
사용자 초대
앱에서 발생한 앱 초대 이벤트를 분석합니다.
onPress={() => { // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); AdbrixRm.commonInvite(AdbrixRm.INVITE_CHANNEL_KAKAO,eventAttr); }}
크레딧 사용
앱내 현금성 화폐 사용에 대한 이벤트를 분석 합니다.
onPress={() => { // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); eventAttr.setAttrs("credit", 10000); AdbrixRm.commonUseCredit(eventAttr); }}
Payment
결제하기
앱에서 발생한 결제(구매) 이벤트를 분석합니다.
다음과 같은 상품 및 주문에 대한 정보를 arrayList 형태로 구성하여 전달합니다.
- order id : (필수) 주문 번호
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 구매 화폐 정보
- category : (옵션) 카테고리 정보
- extra attr : (옵션) 상품 상세 옵션
- delivery charge : (옵션) 배송비
- payment method : (옵션) 결제 방법
onPress={() => { // product and category setup var category1 = new AdbrixRm.CategoryModel(); category1.setCategory("cloth"); category1.setCategory("panth"); category1.setCategory("short"); category1.setCategory("summer"); category1.setCategory("Nike"); var product1 = new AdbrixRm.ProductModel(); product1.setProductId("3029102"); product1.setProductName("Gray top"); product1.setPrice(50000); product1.setDiscount(10000); product1.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product1.setCategory(category1); var category2 = new AdbrixRm.CategoryModel(); category2.setCategory("electronic"); category2.setCategory("small"); category2.setCategory("samsung"); category2.setCategory("phone"); category2.setCategory("galaxybrand"); var product2 = new AdbrixRm.ProductModel(); product2.setProductId("12324"); product2.setProductName("Galaxy S10"); product2.setPrice(50000); product2.setDiscount(10000); product2.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product2.setCategory(category2); // productlist setup var productList = new AdbrixRm.ProductModelList(); productList.setProduct(product1); productList.setProduct(product2); // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); //purchase API AdbrixRm.commonPurchase("orderId_12341",productList,0.00,3500.00,AdbrixRm.PAYMENT_METHOD_BANK_TRASNFER,eventAttr); }}
커머스 이벤트 분석
앱에서 발생하는 구매와 관련된 이벤트(상품 상세 보기, 장바구니 담기 등)를 분석합니다.
디파이너리(애드브릭스)에서 제공하는 커머스 이벤트 종류는 다음과 같습니다.
- 홈(메인) 화면 진입
- 카테고리(기획전) 진입
- 상품 상세 보기
- 장바구니 담기
- 위시리스트(관심 상품) 추가
- 주문 확인하기
- 주문 취소하기
- 상품 검색하기
- 상품 공유하기
- 상품 목록 조회하기
- 장바구니 조회하기
- 결제 정보 입력하기
홈(메인) 화면 진입
유저가 앱의 홈(메인) 화면으로 진입한 이벤트를 분석합니다.
onPress={() => { // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true) AdbrixRm.commerceViewHome(eventAttr); }}
카테고리(기획전) 진입
유저가 카테고리(기획전) 화면으로 진입한 이벤트를 분석합니다.
카테고리로 진입했을 때 노출되는 상품 정보를 다음과 같이 전달합니다.
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 화폐 정보
- category : (옵션) 카테고리 정보
- extra attr : (옵션) 상품 상세 옵션
onPress={() => { // product and category setup (can be set maximum 5 categories) var category1 = new AdbrixRm.CategoryModel(); category1.setCategory("cloth"); category1.setCategory("panth"); category1.setCategory("short"); category1.setCategory("summer"); category1.setCategory("Nike"); var product1 = new AdbrixRm.ProductModel(); product1.setProductId("3029102"); product1.setProductName("Gray top"); product1.setPrice(50000); product1.setDiscount(10000); product1.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product1.setCategory(category1); // productlist setup var productList = new AdbrixRm.ProductModelList(); productList.setProduct(product1); // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); //CategoryView API AdbrixRm.commerceCategoryView(category1,productList,eventAttr); }}
상품 상세 보기
유저가 상품을 상세하게 본 이벤트를 분석합니다.
다음과 같은 상품에 대한 정보를 전달합니다.
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 화폐 정보
- category : (옵션) 카테고리 정보
- extra attr : (옵션) 상품 상세 옵션
onPress={() => { // product and category setup (can be set maximum 5 categories) var category1 = new AdbrixRm.CategoryModel(); category1.setCategory("cloth"); category1.setCategory("panth"); category1.setCategory("short"); category1.setCategory("summer"); category1.setCategory("Nike"); var product1 = new AdbrixRm.ProductModel(); product1.setProductId("3029102"); product1.setProductName("Gray top"); product1.setPrice(50000); product1.setDiscount(10000); product1.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product1.setCategory(category1); // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); //ProductView API AdbrixRm.commerceProductView(product1,eventAttr); }}
장바구니 담기
유저가 상품을 장바구니에 담은 이벤트를 분석합니다.
다음과 같은 상품 정보를 전달합니다.
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 구매 화폐 정보
- category : (옵션) 카테고리 단위
- extra attr : (옵션) 상품 상세 옵션
onPress={() => { // product and category setup (can be set maximum 5 categories) var category1 = new AdbrixRm.CategoryModel(); category1.setCategory("cloth"); category1.setCategory("panth"); category1.setCategory("short"); category1.setCategory("summer"); category1.setCategory("Nike"); var product1 = new AdbrixRm.ProductModel(); product1.setProductId("3029102"); product1.setProductName("Gray top"); product1.setPrice(50000); product1.setDiscount(10000); product1.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product1.setCategory(category1); var category2 = new AdbrixRm.CategoryModel(); category2.setCategory("electronic"); category2.setCategory("small"); category2.setCategory("samsung"); category2.setCategory("phone"); category2.setCategory("galaxybrand"); var product2 = new AdbrixRm.ProductModel(); product2.setProductId("12324"); product2.setProductName("Galaxy S10"); product2.setPrice(50000); product2.setDiscount(10000); product2.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product2.setCategory(category2); // productlist setup var productList = new AdbrixRm.ProductModelList(); productList.setProduct(product1); productList.setProduct(product2); // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); //AddToCart API AdbrixRm.commerceAddToCart(productList,eventAttr); }}
관심 상품(위시리스트) 추가
사용자가 상품을 관심 상품(위시리스트)에 추가한 이벤트를 분석합니다.
다음과 같은 상품 정보를 전달합니다.
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 구매 화폐 정보
- category : (옵션) 카테고리 정보
- extra attr : (옵션) 상품 상세 옵션
onPress={() => { // product and category setup (can be set maximum 5 categories) var category1 = new AdbrixRm.CategoryModel(); category1.setCategory("cloth"); category1.setCategory("panth"); category1.setCategory("short"); category1.setCategory("summer"); category1.setCategory("Nike"); var product1 = new AdbrixRm.ProductModel(); product1.setProductId("3029102"); product1.setProductName("Gray top"); product1.setPrice(50000); product1.setDiscount(10000); product1.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product1.setCategory(category1); // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); //AddToWishList API AdbrixRm.commerceAddToWishList(product1,eventAttr); }}
주문 확인하기
사용자가 상품을 결제하기 전 최종 확인하는 이벤트를 분석합니다.
다음과 같은 주문 및 상품 정보를 전달합니다.
- order id : (필수) 주문 번호
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 구매 화폐 정보
- category : (옵션) 카테고리 정보
- extra attr : (옵션) 상품 상세 옵션
- delivery charge : (옵션) 배송비
onPress={() => { // product and category setup var category1 = new AdbrixRm.CategoryModel(); category1.setCategory("cloth"); category1.setCategory("panth"); category1.setCategory("short"); category1.setCategory("summer"); category1.setCategory("Nike"); var product1 = new AdbrixRm.ProductModel(); product1.setProductId("3029102"); product1.setProductName("Gray top"); product1.setPrice(50000); product1.setDiscount(10000); product1.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product1.setCategory(category1); var category2 = new AdbrixRm.CategoryModel(); category2.setCategory("electronic"); category2.setCategory("small"); category2.setCategory("samsung"); category2.setCategory("phone"); category2.setCategory("galaxybrand"); var product2 = new AdbrixRm.ProductModel(); product2.setProductId("12324"); product2.setProductName("Galaxy S10"); product2.setPrice(50000); product2.setDiscount(10000); product2.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product2.setCategory(category2); // productlist setup var productList = new AdbrixRm.ProductModelList(); productList.setProduct(product1); productList.setProduct(product2); // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); //ReviewOrder API AdbrixRm.commerceReviewOrder("orderId_12341",productList,0.00,3500.00,eventAttr); }}
주문 취소하기 (환불하기)
사용자가 주문을 취소하거나 환불 처리한 이벤트를 분석합니다.
다음과 같은 상품 및 주문 정보를 전달합니다.
- order id : (필수) 주문 번호
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 구매 화폐 정보
- category : (옵션) 카테고리 정보
- extra attr : (옵션) 상품 상세 옵션
- penalty charge : (옵션) 취소(환불) 수수료
onPress={() => { // product and category setup (can be set maximum 5 categories) var category1 = new AdbrixRm.CategoryModel(); category1.setCategory("cloth"); category1.setCategory("panth"); category1.setCategory("short"); category1.setCategory("summer"); category1.setCategory("Nike"); var product1 = new AdbrixRm.ProductModel(); product1.setProductId("3029102"); product1.setProductName("Gray top"); product1.setPrice(50000); product1.setDiscount(10000); product1.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product1.setCategory(category1); var category2 = new AdbrixRm.CategoryModel(); category2.setCategory("electronic"); category2.setCategory("small"); category2.setCategory("samsung"); category2.setCategory("phone"); category2.setCategory("galaxybrand"); var product2 = new AdbrixRm.ProductModel(); product2.setProductId("12324"); product2.setProductName("Galaxy S10"); product2.setPrice(50000); product2.setDiscount(10000); product2.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product2.setCategory(category2); // productlist setup var productList = new AdbrixRm.ProductModelList(); productList.setProduct(product1); productList.setProduct(product2); // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); //Refund API AdbrixRm.commerceRefund("orderId_12341",productList,2500.00,eventAttr); }}
상품 검색하기
사용자가 상품을 검색한 이벤트를 분석합니다.
다음과 같은 검색 결과에 포함된 상품 정보를 전달합니다.
- keyword : (필수) 검색에 사용한 단어
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 구매 화폐 정보
- category : (옵션) 카테고리 정보
onPress={() => { // product and category setup (can be set maximum 5 categories) var category1 = new AdbrixRm.CategoryModel(); category1.setCategory("cloth"); category1.setCategory("panth"); category1.setCategory("short"); category1.setCategory("summer"); category1.setCategory("Nike"); var product1 = new AdbrixRm.ProductModel(); product1.setProductId("3029102"); product1.setProductName("Gray top"); product1.setPrice(50000); product1.setDiscount(10000); product1.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product1.setCategory(category1); var category2 = new AdbrixRm.CategoryModel(); category2.setCategory("electronic"); category2.setCategory("small"); category2.setCategory("samsung"); category2.setCategory("phone"); category2.setCategory("galaxybrand"); var product2 = new AdbrixRm.ProductModel(); product2.setProductId("12324"); product2.setProductName("Galaxy S10"); product2.setPrice(50000); product2.setDiscount(10000); product2.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product2.setCategory(category2); // productlist setup var productList = new AdbrixRm.ProductModelList(); productList.setProduct(product1); productList.setProduct(product2); // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); //Search API AdbrixRm.commerceSearch("your_key_word",productList,eventAttr); }}
상품 공유하기
사용자가 상품 정보를 공유한 이벤트를 분석합니다.
다음과 같은 공유된 상품 정보를 전달합니다.
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 구매 화폐 정보
- category : (옵션) 카테고리 정보
- extra attr : (옵션) 상품 상세 옵션
onPress={() => { // product and category setup (can be set maximum 5 categories) var category1 = new AdbrixRm.CategoryModel(); category1.setCategory("cloth"); category1.setCategory("panth"); category1.setCategory("short"); category1.setCategory("summer"); category1.setCategory("Nike"); var product1 = new AdbrixRm.ProductModel(); product1.setProductId("3029102"); product1.setProductName("Gray top"); product1.setPrice(50000); product1.setDiscount(10000); product1.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product1.setCategory(category1); // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); //Share API AdbrixRm.commerceShare(AdbrixRm.SHARING_CHANNEL_KAKAO,product1,eventAttr); }}
상품 목록 조회하기
사용자가 상품 목록을 조회한 이벤트를 분석합니다.
다음과 같은 조회한 상품 정보를 전달합니다.
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 구매 화폐 정보
- category : (옵션) 카테고리 정보
- extra attr : (옵션) 상품 상세 옵션
onPress={() => { // product and category setup (can be set maximum 5 categories) var category1 = new AdbrixRm.CategoryModel(); category1.setCategory("cloth"); category1.setCategory("panth"); category1.setCategory("short"); category1.setCategory("summer"); category1.setCategory("Nike"); var product1 = new AdbrixRm.ProductModel(); product1.setProductId("3029102"); product1.setProductName("Gray top"); product1.setPrice(50000); product1.setDiscount(10000); product1.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product1.setCategory(category1); var category2 = new AdbrixRm.CategoryModel(); category2.setCategory("electronic"); category2.setCategory("small"); category2.setCategory("samsung"); category2.setCategory("phone"); category2.setCategory("galaxybrand"); var product2 = new AdbrixRm.ProductModel(); product2.setProductId("12324"); product2.setProductName("Galaxy S10"); product2.setPrice(50000); product2.setDiscount(10000); product2.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product2.setCategory(category2); // productlist setup var productList = new AdbrixRm.ProductModelList(); productList.setProduct(product1); productList.setProduct(product2); // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); //ListView API AdbrixRm.commerceListView(productList,eventAttr); }}
장바구니 조회하기
사용자가 장바구니를 조회한 이벤트를 분석합니다.
다음과 같은 조회한 상품 정보를 전달합니다.
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 구매 화폐 정보
- category : (옵션) 카테고리 단위
- extra attr : (옵션) 상품 상세 옵션
onPress={() => { // product and category setup (can be set maximum 5 categories) var category1 = new AdbrixRm.CategoryModel(); category1.setCategory("cloth"); category1.setCategory("panth"); category1.setCategory("short"); category1.setCategory("summer"); category1.setCategory("Nike"); var product1 = new AdbrixRm.ProductModel(); product1.setProductId("3029102"); product1.setProductName("Gray top"); product1.setPrice(50000); product1.setDiscount(10000); product1.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product1.setCategory(category1); var category2 = new AdbrixRm.CategoryModel(); category2.setCategory("electronic"); category2.setCategory("small"); category2.setCategory("samsung"); category2.setCategory("phone"); category2.setCategory("galaxybrand"); var product2 = new AdbrixRm.ProductModel(); product2.setProductId("12324"); product2.setProductName("Galaxy S10"); product2.setPrice(50000); product2.setDiscount(10000); product2.setCurreny(AdbrixRm.CURRENCY_KR_KRW); product2.setCategory(category2); // productlist setup var productList = new AdbrixRm.ProductModelList(); productList.setProduct(product1); productList.setProduct(product2); // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); //CartView API AdbrixRm.commerceCartView(productList,eventAttr); }}
결제 정보 입력하기
사용자가 결제 정보를 입력한 이벤트를 분석합니다.
onPress={() => {
var commmerceAttr = new AdbrixRm.AttrModel(); commmerceAttr.setAttrs("grade", "vip"); commmerceAttr.setAttrs("howmany_buy", 36); commmerceAttr.setAttrs("card", "kbcard"); commmerceAttr.setAttrs("discount", true); //Event of filling in payment information AdbrixRm.commercePaymentInfoAdded(commmerceAttr); }}
게임 이벤트 분석
앱에서 발생하는 게임과 관련된 이벤트(튜토리얼, 스테이지 등)를 분석합니다.
디파이너리(애드브릭스)에서 제공하는 게임 이벤트 종류는 다음과 같습니다.
- 튜토리얼 완료
- 캐릭터 생성
- 스테이지 완료
- 레벨 달성
튜토리얼 완료
앱에서 발생한 튜토리얼 완료 이벤트를 분석합니다.
다음과 같은 튜토리얼 완료 정보를 GameProperies.TutorialComplete의 값을 구성하여 전달합니다.
- isSkip : (필수) 건너뛰기(skip)를 통한 완료인지 여부
onPress={() => { // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); eventAttr.setAttrs("credit", 10000); AdbrixRm.gameTutorialCompleted(true,eventAttr); }}
캐릭터 생성
앱에서 발생한 캐릭터 생성 이벤트를 분석합니다.
onPress={() => { // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); eventAttr.setAttrs("credit", 10000); eventAttr.setAttrs("name","AngryNelsson316"); AdbrixRm.gameCharacterCreated(eventAttr); }}
스테이지 완료
앱에서 발생한 스테이지 완료 이벤트를 분석합니다.
- stageName : (필수) 완료한 스테이지 이름
onPress={() => { // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); eventAttr.setAttrs("credit", 10000); AdbrixRm.gameStageCleared("stage1-1",eventAttr); }}
레벨 달성
앱에서 발생한 레벨 달성 이벤트를 분석합니다.
- level : (필수) 달성한 레벨 (1~10000)
onPress={() => { // Addtional event parameter var eventAttr = new AdbrixRm.AttrModel(); eventAttr.setAttrs("address","New York"); eventAttr.setAttrs("age", 27); eventAttr.setAttrs("firsttime",true); eventAttr.setAttrs("credit", 10000); AdbrixRm.gameLevelAchieved(25,eventAttr); }}