디파이너리(애드브릭스) 연동하기 [Android]
팔로우Quick Start
디파이너리(애드브릭스)를 사용하기 위한 최소한의 연동 단계를 안내합니다.
다음의 가이드를 따라서 [Gradle 설정 -> Proguard 설정] 까지 완료하면,
- 디파이너리(애드브릭스) 콘솔에서 DAU와 같은 기본적인 지표들을 확인할 수 있고,
- 트래킹 링크를 통한 앱 인스톨 광고 추적을 할 수 있습니다.
[[인용:경고:보통]] System Requirement
디파이너리(애드브릭스) Android SDK는 다음의 환경에서 동작합니다.
1. 빌드 환경 : 안드로이드 스튜디오
2. Android Min SDK version : 14 이상
Gradle 설정
디파이너리(애드브릭스)는 gradle을 통한 SDK 다운로드 및 설치를 지원합니다.
Gradle 설정을 위해 View를 Android 타입으로 변경하면 더욱 편리합니다.
[build.gradle (Project: ProjectName)] 파일에 다음과 같이 내용을 추가합니다.
[[인용:위험:보통]] 2021.05.03 Bintray 서비스가 종료되었습니다.
mavenCentral을 이용하여 라이브러리를 배포합니다. gradle 설정을 아래와 같이 수정해주길 부탁드립니다. 기존 jcenter() 더이상 사용하지 않으므로 삭제를 부탁드립니다.
allprojects { repositories { google()
jcenter() // delete this. mavenCentral() } }
[build.gradle (Module: app)] 파일에 다음과 같이 dependency 를 추가합니다.
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } dependencies { implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1' implementation 'com.android.installreferrer:installreferrer:2.2' implementation 'io.dfinery:android-sdk:2.5.1.5' } //jetifier 사용이 불가능한 경우 android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } dependencies { implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1' implementation 'com.android.installreferrer:installreferrer:2.2' implementation ('io.dfinery:android-sdk:2.5.1.5') {
exclude group: "com.android.installreferrer"
} }
[[인용:위험:보통]] * Fraud Traffic 방지를 위해서 com.android.installreferrer:installreferrer 를 반드시 추가합니다.
* 구글 광고 아이디 획득 및 매체 광고를 위해서는 com.google.android.gms:play-services-ads-identifier 를 반드시 추가합니다.
# installreferrer 자바 클래스 중복 에러 발생시, 디파이너리 라이브러리를 아래와 같이 설정 부탁드립니다.
implementation ('io.dfinery:android-sdk:2.5.1.5') {
exclude group: "com.android.installreferrer"
}
Gradle 스크립트를 모두 작성한 뒤에 Android Studio의 [File > Sync Project with Gradle Files] 를 통해 SDK 설치를 진행합니다.
필수 퍼미션 설정
디파이너리(애드브릭스) SDK 는 다음의 권한을 필요로 합니다.
[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>
SDK 초기화
디파이너리(애드브릭스) SDK를 사용하기 위한 초기화는 2가지 방법이 있습니다.
개발 환경에 따라 SDK 초기화를 진행합니다.
- 디파이너리(애드브릭스) 어플리케이션 클래스 이용
- 자체 어플리케이션 클래스 이용
1.디파이너리(애드브릭스) 어플리케이션 클래스 이용
자체 구현한 어플리케이션이 없는 경우, 디파이너리(애드브릭스) SDK가 제공하는 어플리케이션 클래스를 이용하여 쉽고 빠르게 SDK를 초기화할 수 있습니다.
[AndroidManifest.xml > application] 에 다음과 같이 설정합니다.
<application android:name="com.igaworks.v2.core.application.AbxApplication" ... >
<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.자체 어플리케이션 클래스 이용
자체 구현한 어플리케이션 클래스가 있는 경우, 해당 클래스의 onCreate() 를 다음과 같이 설정합니다.
<application android:name=".MyApplicationClass" ... > </application>
public class MyApplicationClass extends Application { @Override public void onCreate() { super.onCreate(); AdBrixRm.init(this, "your_adbrix_remastered_app_key", "your_adbrix_remastered_secret_key"); } }
class MyApplicationClass : Application() { override fun onCreate() { super.onCreate() AdBrixRm.init(this , "your_adbrix_remastered_app_key", "your_adbrix_remastered_secret_key"); } }
[[인용:안내:보통]]앱키 & 시크릿키 확인
앱키와 시크릿키는 디파이너리(애드브릭스)가 앱을 구분하기 위한 식별값입니다.
SDK 연동을 위해서 반드시 필요한 값으로, 디파이너리(애드브릭스) 콘솔에서 앱 등록 후 확인할 수 있습니다.
_ 앱키, 시크릿키 확인 방법
_ 애드브릭스 콘솔 바로가기
[[인용:안내:보통]] 축하합니다!!!
디파이너리(애드브릭스) 이용을 위한 기본적인 연동이 완료되었습니다.
이용할 수 있는 기능은 다음과 같습니다.
1. DAU, MAU, 일별 리텐션 등의 지표를 확인할 수 있는 리포팅
2. NCPI 와 같은 앱 유입 캠페인
앱 내에서 발생하는 구매와 같은 이벤트를 분석하고자 한다면, 아래의 가이드를 참고하여 계속 연동을 진행하시면 됩니다.
SDK 난독화 예외처리
SDK 구동 및 분석이 원할하게 진행될 수 있도록 아래와 같이 난독화 예외 처리를 진행합니다.
proguard
app / proguard-rule.pro 에 아래 코드를 추가해 주시길 부탁드립니다.
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {*;} -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$* {*;} -dontwarn com.android.installreferrer.**
-keep class com.igaworks.v2.** { *; }
-keep class abx.** { *; }
-keep class io.adbrix.sdk.** { *; }
기타 난독화 툴
proguard 외 다른 난독화 툴 사용시 아래 패키지에 대한 난독화 처리를 해주시길 부탁드립니다.
com.igaworks.v2.**
abx.**
io.adbrix.sdk.**
SDK 추가설정
이벤트 업로드 주기 설정
디파이너리(애드브릭스)는 SDK를 통해서 이벤트를 디파이너리(애드브릭스) 서버로 업로드하는 시점에 대해 2가지 기준을 제공합니다.
- 누적 이벤트 개수 기준
- 시간 기준
[[인용:안내:위험]] 두 가지 기준 중, 먼저 만족하는 기준에 따라서 업로드가 진행됩니다. 반드시 어플리케이션 클래스의 AdBrixRm.init() 직후에 호출해야합니다.
1. 누적 이벤트 개수 기준
설정된 개수만큼 이벤트가 누적되었을 때에 디파이너리(애드브릭스) 서버로 이벤트 정보를 업로드하도록 설정합니다.
디파이너리(애드브릭스) SDK 에 사전 정의된 아래의 값을 이용하여 설정합니다.
- AdBrixRm.AdBrixEventUploadCountInterval.MIN : 10건
- AdBrixRm.AdBrixEventUploadCountInterval.NORMAL : 30건
- AdBrixRm.AdBrixEventUploadCountInterval.MAX : 60건
public class LauncherActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_launcher); // 이벤트 업로드 주기 설정 : 누적 이벤트가 10건일 때, AdBrix 서버로 이벤트 업로드 AdBrixRm.setEventUploadCountInterval(AdBrixRm.AdBrixEventUploadCountInterval.MIN); } }
class LauncherActivity : Activity() { override fun onCreate() { super.onCreate() // 이벤트 업로드 주기 설정 : 누적 이벤트가 10건일 때, AdBrix 서버로 이벤트 업로드 AdBrixRm.setEventUploadCountInterval(AdBrixRm.AdBrixEventUploadCountInterval.MIN) } }
2. 시간 기준
설정된 시간이 지나면 디파이너리(애드브릭스) 서버로 이벤트 정보를 업로드하도록 설정합니다.
디파이너리(애드브릭스) SDK에 사전 정의된 아래의 값을 이용하여 설정합니다.
- AdBrixRm.AdBrixEventUploadTimeInterval.MIN : 30초
- AdBrixRm.AdBrixEventUploadTimeInterval.NORMAL : 60초
- AdBrixRm.AdBrixEventUploadTimeInterval.MAX : 120초
public class LauncherActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_launcher); // 이벤트 업로드 주기 설정 : 120초마다 AdBrix 서버로 이벤트 업로드 AdBrixRm.setEventUploadTimeInterval(AdBrixRm.AdBrixEventUploadTimeInterval.MAX); } }
class LauncherActivity : Activity() { override fun onCreate() { super.onCreate() // 이벤트 업로드 주기 설정 : 120초마다 AdBrix 서버로 이벤트 업로드 AdBrixRm.setEventUploadTimeInterval(AdBrixRm.AdBrixEventUploadTimeInterval.MAX) } }
GDPR 설정
GDPR 요청 이벤트를 이용하여 사용자 요청에 대해 데이터 주체와 연관된 모든 개인 데이터를 더이상 수집하지 않을 수 있습니다.
본 이벤트 호출시, SDK 동작은 정지되며 모든 이벤트 저장, 전송 등이 불가합니다.
본 기능은 사용자가 앱을 삭제 후, 재설치하기 전에는 되돌릴 수 없습니다.
void gdprForgetMeEvent() { AdBrixRm.gdprForgetMe(getApplicationContext()); }
fun gdprForgetMeEvent() { AdBrixRm.gdprForgetMe(applicationContext); }
[[인용:위험:보통]] 위험!!!
gdprForgetMe api를 호출하면 SDK가 즉시 정지되고 모든 이벤트의 분석이 불가능하게 되며,
이 상태는 사용자가 앱을 다시 설치하기 전까지 유지됩니다.
트랙킹 설정
Android SDK는 기본적으로 Google의 광고 식별자를 추적합니다. 이 값은 광고 ID 정책에 따라 사용되어야 합니다. 필요할 경우 다음의 API를 사용하여 광고 식별자의 추적을 제한 할 수 있습니다.
[[인용:안내:보통]] 경고
해당 API는 반드시 AdBrixRm.init() 메소드를 호출하기 전에 선언 해야합니다.
//해당 메소드는 반드시 AdBrixRm.init() 전에 호출되어야 합니다. AdBrixRm.setEnableAdIdTracking(false);
//해당 메소드는 반드시 AdBrixRm.init() 전에 호출되어야 합니다. AdBrixRm.setEnableAdIdTracking(false);
딥링크 / 디퍼드 딥링크 이벤트 분석
딥링크 분석
트래킹 링크를 통해 딥링크 오픈 이벤트가 발생한 것을 분석합니다.
딥링크로 오픈되는 액티비티의 launchMode 속성에 따라 다음과 같이 연동 방식이 달라집니다.
- singleTask 모드일 때
- singleTask 모드가 아닐 때
[[인용:안내:보통]] launchMode의 확인은 어떻게 하나요???
AndroidManifest.xml 파일에서 딥링크로 오픈되어지는 액티비티를 찾습니다.
액티비티를 정의한 속성 중에서 android:launchMode의 값을 확인합니다.
1. singleTask 모드일 때
android:launchMode 가 singleTask 일 때에는 다음과 같이 설정하여 딥링크를 통한 앱 오픈 이벤트를 분석합니다.
딥링크를 통해서 오픈되는 모든 액티비티에 다음과 같이 설정합니다.
public class DeeplinkOpenedActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); // Do something with Deeplink Intent Data setIntent(intent);
// 1. 딥링크 이벤트를 호출합니다. AdBrixRm.deeplinkEvent(DeeplinkOpenedActivity.this);
// 2. 만약 액티비티 라이프사이클을 핸들링하여 onResume 콜백이 발생하지 않도록 구성하신 경우에는 아래 코드의 주석을 제거합니다.
//AdBrixRm.onResume(DeeplinkOpenedActivity.this); }
@Override
protected void onResume(){
super.onResume();
} }
class DeeplinkOpenedActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.deeplink_activity) } override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) setIntent(intent)
// 1. 딥링크 이벤트를 호출합니다. AdBrixRm.deeplinkEvent(this)
// 2. 만약 액티비티 라이프사이클을 핸들링하여 onResume 콜백이 발생하지 않도록 구성하신 경우에는 아래 코드의 주석을 제거합니다.
//AdBrixRm.onResume(this) }
override fun onResume() {
super.onResume()
} }
[[인용:경고:보통]] * setIntent(), deeplinkEvent() 함수는 모두 위 예시와 같은 순서로 설정해주셔야 합니다.
[[인용:경고]] 안드로이드 액티비티 라이프사이클을 핸들링하시나요?
SDK는 안드로이드 액티비티 라이프사이클의 onResume 콜백을 이용하여 딥링크 오픈 이벤트를 처리합니다.
앱에서 onResume 콜백이 발생하기 전에 액티비티를 종료 처리하고 있다면 반드시 AdBrixRm.onResume 함수를 호출하여 SDK onResume 콜백을 전달해야 합니다.
딥링크를 통한 앱 오픈을 처리하기 위해서는 앱에 딥링크 설정이 되어 있어야 합니다.
[AndroidManifest.xml > manifest > application] 에 등록된 액티비티에 딥링크 설정을 다음과 같이 진행합니다.
<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="your_scheme" android:host="your_host" /> </intent-filter>
Android AppLink 를 사용하실 경우 [AndroidManifest.xml > manifest > application] 에 등록한 액티비티에 다음과 같이 설정합니다. Applink는 optional한 기능으로, Applink를 사용하실 경우에만 연동을 부탁드립니다.
<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="https" android:host="your_appkey.adtouch.adbrix.io" /> </intent-filter>
[[인용:경고:보통]] your_appkey 항목에는 반드시 연동시 사용하시는 Appkey 를 입력하셔야 하며 소문자로 입력을 부탁드립니다.
[[인용:위험:보통]] Applink 연동전에 반드시 확인해주세요!
1.Applink 사용을 위해서는 반드시 트래킹 링크 생성시 딥링크 패스 방식을 "동적 패스"로 설정하시고 이렇게 생성된 트랙킹 링크에 붙는 파라미터인 deeplink_custom_path 값에 이동할 딥링크 경로를 입력하여 Applink로 전달 합니다.
2. Applink로 오픈하는 액티비티의 intent로 전달되는 값에 자동으로 추가되는 "is_used_abx_applink=true"를 임의로 수정하시면, 정확한 광고 성과 측정이 불가합니다.
3. Applink는 optional한 기능입니다. Applink를 사용하지 않는다면 해당 작업은 필수가 아닙니다.
2. singleTask 모드가 아닐 때
android:launchMode 가 singleTask 가 아닌 다른 모드일 때에는 다음과 같이 설정하여 딥링크를 통한 앱 오픈 이벤트를 분석합니다.
AndroidManifest.xml 파일에 AdBrix SDK가 제공하는 딥링크 오픈 액티비티를 다음과 같이 구성합니다.
<activity
android:name="com.igaworks.v2.core.application.AbxDefaultDeeplinkActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:noHistory="true">
<intent-filter android:label="@string/app_name">
<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_scheme" android:host="your_host" />
</intent-filter>
<!-- AbxDefaultDeeplinkActivity가 오픈할 실제 딥링크 액티비티의 path를 android:value에 설정합니다. -->
<meta-data android:name="AbxRedirectActivity" android:value="com.exampleunity.UnityPlayerActivity"/>
</activity>
디퍼드 딥링크
디퍼드 딥링크는 앱 설치 후 특정 화면으로 랜딩시킬 수 있도록 서버에서 해당 정보를 전달하여 랜딩 시킬 수 있는 역할을 합니다.
[[인용:안내:보통]] 디퍼드 딥링크에서 전달되는 값은 다음과 같이 string 타입으로 전달됩니다.
예; myscheme://host?key=value
1. Custom Application Class 를 사용하는 경우
앱에서 Custom Application Class 를 사용할 경우 아래와 같이 연동합니다.
public class MyApplication extends Application { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); AdBrixRm.init(this,"your_appKey","your_secretKey"); AdBrixRm.setOnDeferredDeeplinkListener(new AdBrixRm.onDeferredDeeplinkListener() { @Override public void onReceive(OnDeferredDeeplinkResult result) { // AdbrixRm SDk returns deferred deeplink url as string. // Use this string value and send your user to certin acivity. Log.d("abxrm", "Deferred Deeplink : "+ result.getDeeplink()); } }); } }
class MyApplication : Application(){ override fun onCreate() { super.onCreate() AdBrixRm.init(this, "your_appKey", "your_secretKey"); AdBrixRm.setOnDeferredDeeplinkListener { // AdbrixRm SDk returns deferred deeplink url as string. // Use this string value and send your user to certin acivity. Log.d("abxrm", "Deferred Deeplink : " + it.getDeeplink()) } } }
2. AdbrixRM Application Class 를 사용하는 경우
디파이너리(애드브릭스)에서 제공하는 Application Class 를 사용하는 경우 딥링크로 랜딩되는 액티비티에 연동합니다.
public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // To get deferred deeplink url, set this listener. AdBrixRm.setOnDeferredDeeplinkListener(new AdBrixRm.onDeferredDeeplinkListener() { @Override public void onReceive(OnDeferredDeeplinkResult result) { // AdbrixRm SDk returns deferred deeplink url as string. // Use this string value and send your user to certin acivity. Log.d("abxrm", "Deferred Deeplink : "+ result.getDeeplink()); } }); } }
class MainActivity : Activity(){ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // To get deferred deeplink url, set this listener. AdBrixRm.setOnDeferredDeeplinkListener { // AdbrixRm SDk returns deferred deeplink url as string. // Use this string value and send your user to certin acivity. Log.d("abxrm", "Deferred Deeplink : " + it.getDeeplink()) } } }
[[인용:경고:보통]] 리스너가 호출되지 않습니다!!!
구현하신 리스너로 디퍼드딥링크 정보가 전달되지 않을 때에는 다음의 사항을 확인해주세요.
1. 트래킹링크를 통해서 전환이 발생하지 않았습니다.
2. 트래킹링크에 딥링크가 설정되지 않았습니다.
[[인용:경고:보통]] 앱이 두번 오픈됩니다!!!
딥링크가 설정된 트래킹링크를 통해 구글플레이에서 앱을 설치/실행하게 되면,
구글플레이스토어에서 제공하는 디퍼드딥링킹이 동작합니다.
구현하신 리스너를 통해 중복 처리가 되지 않도록 예외 처리를 하는 것을 권장합니다.
[[인용:위험:작게]] An operation is not implemented: Not yet implemented 오류가 보고되는 경우
SDK와 관계없이 콜백메소드 내에 TODO 주석을 사용했을 때 해당 오류가 발생하는 경우가 있습니다.
콜백메소드 내에 TODO가 있다면 제거 부탁드립니다.
[[인용:위험:작게]] Facebook SDK의 fetchDeferredAppLinkData API 를 사용할 수 없습니다
Facebook 광고시 사용하는 fetchDeferredApplinkData 의 역할을 저희 DeferredDeeplink API 가 대신하므로 이를 중복해서 사용할 수 없습니다. 사용하고 계시다면 삭제를 부탁드립니다.
이벤트 분석
앱에서 발생하는 이벤트를 분석하여 리포트를 구성하고 포스트백을 전송할 수 있습니다.
이벤트 분석을 위해서는 이벤트가 발생하는 시점에 이벤트 분석 코드를 삽입하고 적절한 이벤트 정보를 전달하여야 합니다.
디파이너리(애드브릭스) 는 크게 4가지의 이벤트 분석을 제공합니다.
-
유저 분석
- 로그인/로그아웃 이벤트
- 유저 정보
- 커스텀 이벤트 분석
-
공통(일반) 이벤트 분석
- 회원가입
- 앱 업데이트
- 사용자 초대
- 크레딧 사용
- 구매하기
-
커머스 이벤트 분석
- 홈(메인) 화면 진입
- 카테고리(기획전) 진입
- 상품 상세 보기
- 장바구니 담기
- 관심상품 추가
- 주문 확인하기
- 주문 취소하기
- 상품 검색하기
- 상품 공유하기
- 상품 목록 조회하기
- 장바구니 리스트 보기
- 결제 정보
-
게임 이벤트 분석
- 튜토리얼 완료
- 캐릭터 생성
- 스테이지 완료
- 레벨 달성
유저 분석
로그인/로그아웃 이벤트
앱 유저의 로그인/로그아웃 이벤트를 분석합니다.
로그인이 성공했을 때, 유저를 구분하는 식별 값(user id)를 다음과 같이 전달합니다.
[[인용:경고:보통]] 로그인 유의 사항
로그인에 사용되는 user id는 그로스액션 기능 사용 시 유저-기기간 매칭을 위해 사용됩니다. 로그인 후 로그아웃 없이 다시 로그인이 호출 될 경우 올바른 매칭이 되지 않을 수 있습니다.
user id에 개인정보가 포함되지 않도록 주의해주세요. 만약 user id에 이메일, 전화번호 등의 개인정보가 포함되는 경우에는 암호화처리를 하시는 것을 권장합니다.
API
// When User Login AdBrixRm.login(String user_id); // When user Logout AdBrixRm.logout();
// When User Login AdBrixRm.login(String user_id) // When user Logout AdBrixRm.logout();
Sample Code
void loginAndLogoutEvent() { if(isLogin){ // Login success with user_id "user_1234" AdBrixRm.login("user_1234"); }else{ // When user logout AdBrixRm.logout(); } }
fun loginAndLogoutEvent() { if(isLogin){ // Login success with user_id "user_1234" AdBrixRm.login("user_1234") }else{ // When user logout AdBrixRm.logout() }
}
유저 정보
유저의 나이, 성별, 기타 정보에 대해 분석할 수 있습니다.
[[인용:경고:보통]] 유저 정보 설정 시 유의 사항
유저아이디, 나이, 성별에 대해서는 각각 login, setAge, setGender API를 사용해주세요
API
// Set User Age AdBrixRm.setAge(int age); // Set User Gender AdBrixRm.setGender(AdBrixRm.AbxGender abxgender); // Set other User info // value types are only be allowed with String, Long, Double, Boolean AdBrixRm.UserProperties userProperties = new AdBrixRm.UserProperties(); userProperties.setAttrs(String key1, String value1) .setAttrs(String key2, long value2) .setAttrs(String key3, double value3) setAttrs(String key4, boolean value4); AdBrixRm.saveUserProperties(userProperties);
// Set User Age AdBrixRm.setAge(int age) // Set User Gender AdBrixRm.setGender(AdBrixRm.AbxGender abxgender) // Set other User info // value types are only be allowed with String, long, double, boolean val userProperties = AdBrixRm.UserProperties() .setAttrs(String key1, String value1) .setAttrs(String key2, long value2) .setAttrs(String key3, double value3) setAttrs(String key4, boolean value4) AdBrixRm.saveUserProperties(userProperties)
Sample Code
void userPropertyUpdate() { // set user age AdBrixRm.setAge(30); // set user gender AdBrixRm.setGender(AdBrixRm.AbxGender.MALE); // set other userinfo AdBrixRm.UserProperties userProperties = new AdBrixRm.UserProperties(); userProperties.setAttrs("user_nick", "peterPark") .setAttrs("place","Seoul") .setAttrs("height",180) .setAttrs("married",false); AdBrixRm.saveUserProperties(userProperties); }
fun userPropertyUpdate() { // set user age AdBrixRm.setAge(30); // set user gender AdBrixRm.setGender(AdBrixRm.AbxGender.MALE); // set other userinfo val userProperties = AdBrixRm.UserProperties() .setAttrs("user_nick", "peterPark") .setAttrs("place","Seoul") .setAttrs("height",180) .setAttrs("married",false); AdBrixRm.saveUserProperties(userProperties) }
[[인용:위험:보통]] UserProperty 및 AttrModel 설정 시 유의 사항
1.100개 이상의 정보는 처리되지 않습니다.
2. Key 값의 데이터 타입은 string 이며 50자를 넘을 수 없고, 영문 소문자, 숫자를 제외한 나머지 문자는 사용할 수 없습니다.
3. Value 값의 데이터 길이는 byte 기준으로 1024byte 를 넘을 수 없습니다. 또한 Long, Double, Boolean, String 타입만 사용할 수 있습니다.
4. Value 값으로 null 값은 사용할 수 없습니다.
커스텀 이벤트 분석
앱 내 유저의 일반적인 모든 이벤트를 분석합니다. (구매 관련 이벤트 제외)
앱 내에서의 '버튼 클릭', '캐릭터 생성', '튜토리얼 완료', '레벨 업' 등의 대부분의 액션을 자유롭게 분석할 수 있습니다.
API
// Custom event with AttrModel AdBrixRm.event(String eventName, AdBrixRm.AttrModel attrmodel); // Custom event without AttrModel AdBrixRm.event(String eventName);
// Custom event with AttrModel AdBrixRm.event(String eventName, AdBrixRm.AttrModel attrmodel) // Custom event without AttrModel AdBrixRm.event(String eventName)
Sample Code
void userCustomEvent() { // 이벤트 추가 정보 설정 AdBrixRm.AttrModel eventAttr = new AdBrixRm.AttrModel() .setAttrs("address","경기도 안양시 동안구") .setAttrs("firsttime",true); // "친구초대" 버튼 클릭 AdBrixRm.event("invite_button_click",eventAttr); // "캐릭터 생성" 완료 AdBrixRm.event("create_character_complete",eventAttr); // "튜토리얼 보기" 완료 AdBrixRm.event("tutorial_complete",eventAttr); // "레벨 10 달성" 완료 AdBrixRm.event("level_10",eventAttr); }
fun locationUpdate() { // 이벤트 추가정보 설정 val eventAttr = AdBrixRm.AttrModel() .setAttrs("address", "경기도 안양시 동안구") .setAttrs("firsttime", true) // "친구초대" 버튼 클릭 AdBrixRm.event("invite_button_click",eventAttr) // "캐릭터 생성" 완료 AdBrixRm.event("create_character_complete",eventAttr) // "튜토리얼 보기" 완료 AdBrixRm.event("tutorial_complete",eventAttr) // "레벨 10 달성" 완료 AdBrixRm.event("level_10",eventAttr) }
[[인용:위험:보통]] 커스텀 이벤트는 호출된 순서대로 최대 100개까지만 설정 가능합니다.
※ 주의사항
아래 예시와 같이, 자연적으로 증가하는 값을 이벤트 명으로 설정하지 마십시오.
너무 많은 이벤트는 오히려 분석을 하는데 방해가 됩니다.
AdBrixRm.event("Level-301-Achieved-at-01:23:45.1234567");
그러므로 이 경우에는 이벤트 추가 정보를 설정(AdBrixRm.AttrModel)하여 커스텀 파라미터를 설정하여 이벤트를 호출해 주시길 부탁드립니다.
// 이벤트 추가정보 설정 AdBrixRm.AttrModel eventAttr = new AdBrixRm.AttrModel() .setAttrs("level",37) .setAttrs("clear_time_mile", 39238); // 이벤트 파라미터와 함께 커스텀 이벤트 API 호출 AdBrixRm.event("level_clear", eventAttr);
공통(일반)이벤트 분석
앱에서 발생하는 이벤트 중, 공통적으로 발생하는 이벤트(결제)를 분석합니다.
디파이너리(애드브릭스)에서 제공하는 공통 이벤트 종류는 다음과 같습니다.
- 회원가입
- 앱 업데이트
- 사용자 초대
- 크레딧 사용
- 결제하기
* 디파이너리(애드브릭스)에서 광고 채널 별 매출을 보고자 할 때에는 '결제하기' 연동을 반드시 진행해야 합니다.
회원가입
앱에서 발생한 회원가입 이벤트를 분석합니다.
API
// SignUp event with Addtional signUp info AdBrixRm.Common.signUp(AdBrixRm.CommonSignUpChannel signUpChannel, AdBrixRm.CommonProperties.SignUp signUpInfo); // SignUp event without Addtional signUp info AdBrixRm.Common.signUp(AdBrixRm.CommonSignUpChannel signUpChannel);
// SignUp event with Addtional signUp info AdBrixRm.Common.signUp(AdBrixRm.CommonSignUpChannel signUpChannel, AdBrixRm.CommonProperties.SignUp signUpInfo) // SignUp event without Addtional signUp info AdBrixRm.Common.signUp(AdBrixRm.CommonSignUpChannel signUpChannel)
Sample Code
void userRegister() { try { // 이벤트 추가 정보를 회원가입 이벤트 정보로 설정합니다. AdBrixRm.CommonProperties.SignUp signupUserInfo = new AdBrixRm.CommonProperties.SignUp(); //회원가입 API 호출 AdBrixRm.Common.signUp(AdBrixRm.CommonSignUpChannel.Google,signupUserInfo); } catch (JSONException e) { e.printStackTrace(); } }
void userRegister() { try { // 이벤트 추가 정보를 회원가입 이벤트 정보로 설정합니다. val signupUserInfo = AdBrixRm.CommonProperties.SignUp() //회원가입 API 호출 AbxCommon.signUp(AdBrixRm.CommonSignUpChannel.Google, signupUserInfo) } catch (e: Exception) { e.printStackTrace() } }
앱 업데이트
앱에서 발생한 앱 업데이트 이벤트를 분석합니다.
API
AdBrixRm.Common.appUpdate(AdBrixRm.CommonProperties.AppUpdate appUpdate);
AdBrixRm.Common.appUpdate(AdBrixRm.CommonProperties.AppUpdate appUpdate)
Sample Code
void appUpdate() { try { AdBrixRm.CommonProperties.AppUpdate updateInfo = new AdBrixRm.CommonProperties.AppUpdate() .setPrevVersion("1.0.0a") .setCurrVersion("1.0.1a"); //앱 업데이트 API 호출 AdBrixRm.Common.appUpdate(updateInfo); } catch (JSONException e){ e.printStackTrace(); } }
void appUpdate() { try { // 앱 업데이트 이벤트 정보를 설정합니다. val updateInfo = AdBrixRm.CommonProperties.AppUpdate() .setCurrVersion("1.2.0") .setPrevVersion("1.1.0") //앱 업데이트 API 호출 AbxCommon.appUpdate(updateInfo) } catch (e: Exception) { e.printStackTrace() } }
사용자 초대
앱에서 발생한 앱 초대 이벤트를 분석합니다.
API
// UserInvite event with Addtional event info AdBrixRm.Common.invite(AdBrixRm.CommonInviteChannel inviteChannel, AdBrixRm.CommonProperties.Invite inviteInfo); // UserInvite event without Addtional event info AdBrixRm.Common.invite(AdBrixRm.CommonInviteChannel inviteChannel);
// UserInvite event with Addtional event info AdBrixRm.Common.invite(AdBrixRm.CommonInviteChannel inviteChannel, AdBrixRm.CommonProperties.Invite inviteInfo) // UserInvite event without Addtional event info AdBrixRm.Common.invite(AdBrixRm.CommonInviteChannel inviteChannel)
Sample Code
void userInvite() { try { AdBrixRm.CommonProperties.Invite inviteInfo = new AdBrixRm.CommonProperties.Invite(); //사용자 초대 API 호출 AdBrixRm.Common.invite(AdBrixRm.CommonInviteChannel.Facebook,inviteInfo); } catch (JSONException e){ e.printStackTrace(); } }
void userInvite() { try { val properties = AdBrixRm.CommonProperties.Invite(); //사용자 초대 API 호출 AbxCommon.invite(AdBrixRm.CommonInviteChannel.Facebook, properties) } catch (e: Exception) { e.printStackTrace() } }
크레딧 사용
앱내 현금성 화폐 사용에 대한 이벤트를 분석 합니다.
API
AdBrixRm.Common.useCredit(AdBrixRm.CommonProperties.UseCredit userCreditInfo);
AdBrixRm.Common.useCredit(AdBrixRm.CommonProperties.UseCredit userCreditInfo)
Sample Code
void usingCredit() { try { // 사용자 현금성 화폐 사용 정보 AdBrixRm.AttrModel commonAttr = new AdBrixRm.AttrModel() .setAttrs("credit", 10000); AdBrixRm.CommonProperties.UseCredit userCreditInfo = new AdBrixRm.CommonProperties.UseCredit() .setAttrModel(commonAttr); //크레딧 사용 API 호출 AdBrixRm.Common.useCredit(userCreditInfo); } catch (JSONException e){ e.printStackTrace(); } }
void usingCredit() { try { // 화폐사용 이벤트 추가 정보 val useCreaditAttr = AdBrixRm.AttrModel() .setAttrs("money", 1000.00) //크레딧 사용 API 호출 AbxCommon.useCredit(properties) } catch (e: Exception) { e.printStackTrace() } }
결제하기
[[인용:경고:보통]] 전체 주문 금액 파라미터 추가!!! (sdk ver : 1.1.2200)
주문의 전체 매출 금액을 입력할 수 있는 파라미터가 추가되었습니다. 주문 합산 금액 계산 기준에 따른 금액을 입력하시면 됩니다.
API
AdBrixRm.Common.purchase( String orderId, List <AdBrixRm.CommerceProductModel> productModelList, double orderSale, // Optional double discount, double deliveryCharge, AdBrixRm.CommercePaymentMethod paymentMethod, AdBrixRm.AttrModel attrModel // Optional );
AdBrixRm.Common.purchase( String orderId, List <AdBrixRm.CommerceProductModel> productModelList, double orderSale, //Optional double discount, double deliveryCharge, AdBrixRm.CommercePaymentMethod paymentMethod, AdBrixRm.AttrModel attrModel //Optional )
Sample Code
void purchaseEvent() { try { // 상품 카테고리 설정 AdBrixRm.CommerceCategoriesModel productCategory = new AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5"); //상품 추가 정보 설정 AdBrixRm.AttrModel productAttr1 = new AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false); AdBrixRm.AttrModel productAttr2 = new AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true); // 이벤트 추가 정보 AdBrixRm.AttrModel purchaseAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true); AdBrixRm.CommonProperties.Purchase purchaseat = new AdBrixRm.CommonProperties.Purchase() .setAttrModel(purchaseAttr); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_1 = new AdBrixRm.CommerceProductModel().setProductID("5385487400") .setProductName("슬랙스 10종 특가") .setPrice(10000.00) .setQuantity(1) .setDiscount(1000.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr1); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_2 = new AdBrixRm.CommerceProductModel().setProductID("145099811") .setProductName("[이월특가] 나염 맨투맨") .setPrice(15500.00) .setQuantity(1) .setDiscount(1200.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr2); // 상품 정보 모델 ArrayList 생성 ArrayList productModelArrayList = new ArrayList<>(); productModelArrayList.add(productModel_1); productModelArrayList.add(productModel_2); // 상품 결제 - 모바일 결제 AdBrixRm.Common.purchase("290192012", productModelArrayList, 22500.0,0.00, 3500.00, AdBrixRm.CommercePaymentMethod.MobilePayment,purchaseat); } catch (JSONException e) { e.printStackTrace(); } }
fun purchaseEvent() { try { // 상품 카테고리 설정 val productCategory = AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5") //상품 추가 정보 설정 val productAttr1 = AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false) val productAttr2 = AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true) // 이벤트 추가 정보 val purchaseAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true) val purchaseat = AdBrixRm.CommonProperties.Purchase() .setAttrModel(purchaseAttr) //상품 정보 val productModel1 = AdBrixRm.CommerceProductModel() .setProductID("productid_1") .setProductName("상품명1") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(5000.00) .setAttrModel(productAttr1) .setPrice(50000.00) .setQuantity(1) val productModel2 = AdBrixRm.CommerceProductModel() .setProductID("productid_2") .setProductName("상품명2") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(10000.00) .setAttrModel(productAttr2) .setPrice(100000.00) .setQuantity(1) // 상품 정보 arrayList 설정 val proList = mutableListOf<AdBrixRm.CommerceProductModel>() proList.add(productModel1) proList.add(productModel2) // 구매 이벤트 호출 AbxCommon.purchase("orderid_1", proList,54000.00 0.00, 2500.00, AdBrixRm.CommercePaymentMethod.CreditCard, purchaseat) } catch (e: Exception) { e.printStackTrace() } }
커머스 이벤트 분석
앱에서 발생하는 구매와 관련된 이벤트(상품 상세 보기, 장바구니 담기 등)를 분석합니다.
AdBrix에서 제공하는 커머스 이벤트 종류는 다음과 같습니다.
- 홈(메인) 화면 진입
- 카테고리(기획전) 진입
- 상품 상세 보기
- 장바구니 담기
- 위시리스트(관심 상품) 추가
- 주문 확인하기
- 주문 취소하기
- 상품 검색하기
- 상품 공유하기
- 상품 목록 조회하기
- 장바구니 조회하기
- 결제 정보 입력하기
홈(메인) 화면 진입
유저가 앱의 홈(메인) 화면으로 진입한 이벤트를 분석합니다.
void viewHomeEvent(){ // 홈(메인) 화면 진입 이벤트 분석 AdBrixRm.Commerce.viewHome(); }
fun viewHomeEvent(){ // 홈(메인) 화면 진입 이벤트 분석 AbxCommerce.viewHome() }
카테고리(기획전) 진입
유저가 카테고리(기획전) 화면으로 진입한 이벤트를 분석합니다.
카테고리로 진입했을 때 노출되는 상품 정보를 다음과 같이 전달합니다.
API
AdBrixRm.Commerce.categoryView( AdBrixRm.CommerceCategoriesModel productCategory, List <AdBrixRm.CommerceProductModel> productModelList, AdBrixRm.AttrModel attrModel // Optional );
AdBrixRm.Commerce.categoryView( AdBrixRm.CommerceCategoriesModel productCategory, List <AdBrixRm.CommerceProductModel> productModelList, AdBrixRm.AttrModel attrModel //Optional )
Sample Code
void viewCategoryEvent(){ // 상품 카테고리 설정 AdBrixRm.CommerceCategoriesModel productCategory = new AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5"); //상품 추가 정보 설정 AdBrixRm.AttrModel productAttr1 = new AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false); AdBrixRm.AttrModel productAttr2 = new AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true); // 이벤트 추가 정보 AdBrixRm.AttrModel commmerceAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_1 = new AdBrixRm.CommerceProductModel().setProductID("5385487400") .setProductName("슬랙스 10종 특가") .setPrice(10000.00) .setQuantity(1) .setDiscount(1000.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr1); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_2 = new AdBrixRm.CommerceProductModel().setProductID("145099811") .setProductName("[이월특가] 나염 맨투맨") .setPrice(15500.00) .setQuantity(1) .setDiscount(1200.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr2); // 상품 정보 모델 ArrayList 생성 ArrayList productModelArrayList = new ArrayList<>(); productModelArrayList.add(productModel_1); productModelArrayList.add(productModel_2); // 카테고리 뷰 이벤트 분석 AdBrixRm.Commerce.categoryView(productCategory, productModelArrayList,commmerceAttr); }
fun viewCategoryEvent(){ // 상품 카테고리 설정 val productCategory = AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5") //상품 추가 정보 설정 val productAttr1 = AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false) val productAttr2 = AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true) // 이벤트 추가 정보 val commerceAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true) //상품 정보 val productModel1 = AdBrixRm.CommerceProductModel() .setProductID("productid_1") .setProductName("상품명1") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(5000.00) .setAttrModel(productAttr1) .setPrice(50000.00) .setQuantity(1) val productModel2 = AdBrixRm.CommerceProductModel() .setProductID("productid_2") .setProductName("상품명2") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(10000.00) .setAttrModel(productAttr2) .setPrice(100000.00) .setQuantity(1) // 상품 정보 arrayList 설정 val proList = mutableListOf<AdBrixRm.CommerceProductModel>() proList.add(productModel1) proList.add(productModel2) // 카테고리 뷰 이벤트 분석 AbxCommerce.categoryView(productCategory, proList, commerceAttr) }
상품 상세 보기
유저가 상품을 상세하게 본 이벤트를 분석합니다.
다음과 같은 상품에 대한 정보를 전달합니다.
API
AdBrixRm.Commerce.productView( AdBrixRm.CommerceProductModel productMode, AdBrixRm.AttrModel attrModel // Optional );
AdBrixRm.Commerce.productView( AdBrixRm.CommerceProductModel productModel, AdBrixRm.AttrModel attrModel //Optional )
Sample Code
void viewProductDetailEvent(){ try { // 상품 카테고리 설정 AdBrixRm.CommerceCategoriesModel productCategory = new AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5"); //상품 추가 정보 설정 AdBrixRm.AttrModel productAttr1 = new AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false); // 이벤트 추가 정보 AdBrixRm.AttrModel commmerceAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_1 = new AdBrixRm.CommerceProductModel().setProductID("5385487400") .setProductName("슬랙스 10종 특가") .setPrice(10000.00) .setQuantity(1) .setDiscount(1000.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr1); // 상품 상세 보기 이벤트 분석 AdBrixRm.Commerce.productView(productModel_1,commmerceAttr); }catch (JSONException e){ e.printStackTrace();; } }
fun viewProductDetailEvent(){ try { // 상품 카테고리 설정 val productCategory = AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5") //상품 추가 정보 설정 val productAttr1 = AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false) // 이벤트 추가 정보 val commerceAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true) //상품 정보 val productModel1 = AdBrixRm.CommerceProductModel() .setProductID("productid_1") .setProductName("상품명1") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(5000.00) .setAttrModel(productAttr1) .setPrice(50000.00) .setQuantity(1) // 상품 상세 보기 이벤트 분석 AbxCommerce.productView(productModel1, commerceAttr) } catch (e: Exception) { e.printStackTrace() } }
장바구니 담기
유저가 상품을 장바구니에 담은 이벤트를 분석합니다.
다음과 같은 상품 정보를 전달합니다.
API
AdBrixRm.Commerce.addToCart( List <AdBrixRm.CommerceProductModel> productModelList, AdBrixRm.AttrModel attrModel // Optional );
AdBrixRm.Commerce.addToCart( List <AdBrixRm.CommerceProductModel> productModelList, AdBrixRm.AttrModel attrModel //Optional )
Sample Code
void addToCartEvent(){ try { // 상품 카테고리 설정 AdBrixRm.CommerceCategoriesModel productCategory = new AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5"); //상품 추가 정보 설정 AdBrixRm.AttrModel productAttr1 = new AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false); AdBrixRm.AttrModel productAttr2 = new AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true); // 이벤트 추가 정보 AdBrixRm.AttrModel commmerceAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_1 = new AdBrixRm.CommerceProductModel().setProductID("5385487400") .setProductName("슬랙스 10종 특가") .setPrice(10000.00) .setQuantity(1) .setDiscount(1000.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr1); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_2 = new AdBrixRm.CommerceProductModel().setProductID("145099811") .setProductName("[이월특가] 나염 맨투맨") .setPrice(15500.00) .setQuantity(1) .setDiscount(1200.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr2); // 상품 정보 모델 ArrayList 생성 ArrayList productModelArrayList = new ArrayList<>(); productModelArrayList.add(productModel_1); productModelArrayList.add(productModel_2); // 장바구니 담기 이벤트 분석 AdBrixRm.Commerce.addToCart(productModelArrayList,commmerceAttr); }catch (JSONException e){ e.printStackTrace(); } }
fun addToCartEvent(){ try { // 상품 카테고리 설정 val productCategory = AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5") //상품 추가 정보 설정 val productAttr1 = AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false) val productAttr2 = AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true) // 이벤트 추가 정보 val commerceAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true) //상품 정보 val productModel1 = AdBrixRm.CommerceProductModel() .setProductID("productid_1") .setProductName("상품명1") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(5000.00) .setAttrModel(productAttr1) .setPrice(50000.00) .setQuantity(1) val productModel2 = AdBrixRm.CommerceProductModel() .setProductID("productid_2") .setProductName("상품명2") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(10000.00) .setAttrModel(productAttr2) .setPrice(100000.00) .setQuantity(1) // 상품 정보 arrayList 설정 val proList = mutableListOf<AdBrixRm.CommerceProductModel>() proList.add(productModel1) proList.add(productModel2) // 장바구니 담기 이벤트 분석 AbxCommerce.addToCart(proList, commerceAttr) } catch (e: Exception) { e.printStackTrace() } }
관심 상품(위시리스트) 추가
사용자가 상품을 관심 상품(위시리스트)에 추가한 이벤트를 분석합니다.
다음과 같은 상품 정보를 전달합니다.
API (단품 ProductModel 을 적용할 경우)
AdBrixRm.Commerce.addToWishList( AdBrixRm.CommerceProductModel productModel, AdBrixRm.AttrModel attrModel // Optional );
AdBrixRm.Commerce.addToWishList( AdBrixRm.CommerceProductModel productModel, AdBrixRm.AttrModel attrModel //Optional )
Sample Code
void addToWishListEvent(){ try { // 상품 카테고리 설정 AdBrixRm.CommerceCategoriesModel productCategory = new AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5"); //상품 추가 정보 설정 AdBrixRm.AttrModel productAttr1 = new AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false); // 이벤트 추가 정보 AdBrixRm.AttrModel commmerceAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_1 = new AdBrixRm.CommerceProductModel().setProductID("5385487400") .setProductName("슬랙스 10종 특가") .setPrice(10000.00) .setQuantity(1) .setDiscount(1000.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr1); // 관심상품(위시리스트) 추가 이벤트 분석 AdBrixRm.Commerce.addToWishList(productModel_1,commmerceAttr); }catch (JSONException e){ e.printStackTrace(); } }
fun addToWishListEvent(){ try { // 상품 카테고리 설정 val productCategory = AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5") //상품 추가 정보 설정 val productAttr1 = AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false) // 이벤트 추가 정보 val commerceAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true) //상품 정보 val productModel1 = AdBrixRm.CommerceProductModel() .setProductID("productid_1") .setProductName("상품명1") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(5000.00) .setAttrModel(productAttr1) .setPrice(50000.00) .setQuantity(1) //addToWishList api 호출 AbxCommerce.addToWishList(productModel1, commerceAttr) } catch (e: Exception) { e.printStackTrace() } }
API (복수의 ProductModel 을 적용할 경우)
[[인용:경고:보통]] 본 API 는 Android SDK 2.4.0.0 부터 적용됩니다.
AdBrixRm.Commerce.addToWishList( List <AdBrixRm.CommerceProductModel> productModelList, AdBrixRm.AttrModel attrModel // Optional );
AdBrixRm.Commerce.addToWishList( List <AdBrixRm.CommerceProductModel> productModelList, AdBrixRm.AttrModel attrModel //Optional )
Sample Code
void addToWishListEvent(){ try { // 상품 카테고리 설정 AdBrixRm.CommerceCategoriesModel productCategory = new AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5"); //상품 추가 정보 설정 AdBrixRm.AttrModel productAttr1 = new AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false); AdBrixRm.AttrModel productAttr2 = new AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true); // 이벤트 추가 정보 AdBrixRm.AttrModel commmerceAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_1 = new AdBrixRm.CommerceProductModel().setProductID("5385487400") .setProductName("슬랙스 10종 특가") .setPrice(10000.00) .setQuantity(1) .setDiscount(1000.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr1); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_2 = new AdBrixRm.CommerceProductModel().setProductID("145099811") .setProductName("[이월특가] 나염 맨투맨") .setPrice(15500.00) .setQuantity(1) .setDiscount(1200.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr2); // 상품 정보 모델 ArrayList 생성 ArrayList productModelArrayList = new ArrayList<>(); productModelArrayList.add(productModel_1); productModelArrayList.add(productModel_2); // 관심상품(위시리스트) 추가 이벤트 분석 AdBrixRm.Commerce.addToWishList(productModelArrayList,commmerceAttr); }catch (JSONException e){ e.printStackTrace(); } }
fun addToWishListEvent(){ try { // 상품 카테고리 설정 val productCategory = AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5") //상품 추가 정보 설정 val productAttr1 = AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false) val productAttr2 = AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true) // 이벤트 추가 정보 val commerceAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true) //상품 정보 val productModel1 = AdBrixRm.CommerceProductModel() .setProductID("productid_1") .setProductName("상품명1") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(5000.00) .setAttrModel(productAttr1) .setPrice(50000.00) .setQuantity(1) val productModel2 = AdBrixRm.CommerceProductModel() .setProductID("productid_2") .setProductName("상품명2") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(10000.00) .setAttrModel(productAttr2) .setPrice(100000.00) .setQuantity(1) // 상품 정보 arrayList 설정 val proList = mutableListOf<AdBrixRm.CommerceProductModel>() proList.add(productModel1) proList.add(productModel2) //addToWishList api 호출 AbxCommerce.addToWishList(proList, commerceAttr) } catch (e: Exception) { e.printStackTrace() } }
주문 확인하기
사용자가 상품을 결제하기 전 최종 확인하는 이벤트를 분석합니다.
다음과 같은 주문 및 상품 정보를 전달합니다.
API
AdBrixRm.Commerce.reviewOrder( String orderId, List <AdBrixRm.CommerceProductModel> productModelList, double discount, double deliveryCharge, AdBrixRm.AttrModel attrModel // Optional );
AdBrixRm.Commerce.reviewOrder( String orderId, List <AdBrixRm.CommerceProductModel> productModelList, double discount, double deliveryCharge, AdBrixRm.AttrModel attrModel //Optional )
Sample Code
void reviewOrderEvent(){ try { // 상품 카테고리 설정 AdBrixRm.CommerceCategoriesModel productCategory = new AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5"); //상품 추가 정보 설정 AdBrixRm.AttrModel productAttr1 = new AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false); AdBrixRm.AttrModel productAttr2 = new AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true); // 이벤트 추가 정보 AdBrixRm.AttrModel commmerceAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_1 = new AdBrixRm.CommerceProductModel().setProductID("5385487400") .setProductName("슬랙스 10종 특가") .setPrice(10000.00) .setQuantity(1) .setDiscount(1000.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr1); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_2 = new AdBrixRm.CommerceProductModel().setProductID("145099811") .setProductName("[이월특가] 나염 맨투맨") .setPrice(15500.00) .setQuantity(1) .setDiscount(1200.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr2); // 상품 정보 모델 ArrayList 생성 ArrayList productModelArrayList = new ArrayList<>(); productModelArrayList.add(productModel_1); productModelArrayList.add(productModel_2); // 주문 확인 하기 이벤트 분석 AdBrixRm.Commerce.reviewOrder("290192012", productModelArrayList, 0.00, 3500.00,commmerceAttr); } catch (JSONException e) { e.printStackTrace(); } }
fun reviewOrderEvent(){ try { // 상품 카테고리 설정 val productCategory = AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5") //상품 추가 정보 설정 val productAttr1 = AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false) val productAttr2 = AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true) // 이벤트 추가 정보 val commerceAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true) //상품 정보 val productModel1 = AdBrixRm.CommerceProductModel() .setProductID("productid_1") .setProductName("상품명1") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(5000.00) .setAttrModel(productAttr1) .setPrice(50000.00) .setQuantity(1) val productModel2 = AdBrixRm.CommerceProductModel() .setProductID("productid_2") .setProductName("상품명2") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(10000.00) .setAttrModel(productAttr2) .setPrice(100000.00) .setQuantity(1) // 상품 정보 arrayList 설정 val proList = mutableListOf<AdBrixRm.CommerceProductModel>() proList.add(productModel1) proList.add(productModel2) // 주문 확인 하기 이벤트 분석 AbxCommerce.reviewOrder("orderid_11", proList, 0.00, 2500.00, commerceAttr) } catch (e: Exception) { e.printStackTrace() } }
주문 취소하기 (환불하기)
사용자가 주문을 취소하거나 환불 처리한 이벤트를 분석합니다.
다음과 같은 상품 및 주문 정보를 전달합니다.
API
AdBrixRm.Commerce.refund( String orderId, List <AdBrixRm.CommerceProductModel> productModelList, double penaltyCharge, AdBrixRm.AttrModel attrModel // Optional );
AdBrixRm.Commerce.refund( String orderId, List <AdBrixRm.CommerceProductModel> productModelList, double penaltyCharge, AdBrixRm.AttrModel attrModel //Optional )
Sample Code
void refundOrderEvent(){ try { // 상품 카테고리 설정 AdBrixRm.CommerceCategoriesModel productCategory = new AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5"); //상품 추가 정보 설정 AdBrixRm.AttrModel productAttr1 = new AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false); AdBrixRm.AttrModel productAttr2 = new AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true); // 이벤트 추가 정보 AdBrixRm.AttrModel commmerceAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_1 = new AdBrixRm.CommerceProductModel().setProductID("5385487400") .setProductName("슬랙스 10종 특가") .setPrice(10000.00) .setQuantity(1) .setDiscount(1000.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr1); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_2 = new AdBrixRm.CommerceProductModel().setProductID("145099811") .setProductName("[이월특가] 나염 맨투맨") .setPrice(15500.00) .setQuantity(1) .setDiscount(1200.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr2); // 상품 정보 모델 ArrayList 생성 ArrayList productModelArrayList = new ArrayList<>(); productModelArrayList.add(productModel_1); productModelArrayList.add(productModel_2); // 주문 취소(환불) 하기 이벤트 분석 AdBrixRm.Commerce.refund("290192012", productModelArrayList, 0.00,commmerceAttr); } catch (JSONException e) { e.printStackTrace(); } }
fun refundOrderEvent(){ try { // 상품 카테고리 설정 val productCategory = AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5") //상품 추가 정보 설정 val productAttr1 = AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false) val productAttr2 = AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true) // 이벤트 추가 정보 val commerceAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true) //상품 정보 val productModel1 = AdBrixRm.CommerceProductModel() .setProductID("productid_1") .setProductName("상품명1") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(5000.00) .setAttrModel(productAttr1) .setPrice(50000.00) .setQuantity(1) val productModel2 = AdBrixRm.CommerceProductModel() .setProductID("productid_2") .setProductName("상품명2") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(10000.00) .setAttrModel(productAttr2) .setPrice(100000.00) .setQuantity(1) // 상품 정보 arrayList 설정 val proList = mutableListOf<AdBrixRm.CommerceProductModel>() proList.add(productModel1) proList.add(productModel2) // 주문 취소(환불) 하기 이벤트 분석 AbxCommerce.refund("orderid_22", proList, 19000.00, commerceAttr) } catch (e: Exception) { e.printStackTrace() } }
상품 검색하기
사용자가 상품을 검색한 이벤트를 분석합니다.
다음과 같은 검색 결과에 포함된 상품 정보를 전달합니다.
API
AdBrixRm.Commerce.search( String searchKeyword, List <AdBrixRm.CommerceProductModel> productModelList, AdBrixRm.AttrModel attrModel // Optional );
AdBrixRm.Commerce.search( String searchKeyword, List <AdBrixRm.CommerceProductModel> productModelList, AdBrixRm.AttrModel attrModel //Optional )
Sample Code
void searchProductEvent(){ // 상품 카테고리 설정 AdBrixRm.CommerceCategoriesModel productCategory = new AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5"); //상품 추가 정보 설정 AdBrixRm.AttrModel productAttr1 = new AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false); AdBrixRm.AttrModel productAttr2 = new AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true); // 이벤트 추가 정보 AdBrixRm.AttrModel commmerceAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_1 = new AdBrixRm.CommerceProductModel().setProductID("5385487400") .setProductName("슬랙스 10종 특가") .setPrice(10000.00) .setQuantity(1) .setDiscount(1000.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr1); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_2 = new AdBrixRm.CommerceProductModel().setProductID("145099811") .setProductName("[이월특가] 나염 맨투맨") .setPrice(15500.00) .setQuantity(1) .setDiscount(1200.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr2); // 상품 정보 모델 ArrayList 생성 ArrayList productModelArrayList = new ArrayList<>(); productModelArrayList.add(productModel_1); productModelArrayList.add(productModel_2); // 상품 검색하기 이벤트 분석 AdBrixRm.Commerce.search("캐주얼 바지", productModelArrayList,commmerceAttr); }
fun searchProductEvent(){ // 상품 카테고리 설정 val productCategory = AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5") //상품 추가 정보 설정 val productAttr1 = AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false) val productAttr2 = AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true) // 이벤트 추가 정보 val commerceAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true) //상품 정보 val productModel1 = AdBrixRm.CommerceProductModel() .setProductID("productid_1") .setProductName("상품명1") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(5000.00) .setAttrModel(productAttr1) .setPrice(50000.00) .setQuantity(1) val productModel2 = AdBrixRm.CommerceProductModel() .setProductID("productid_2") .setProductName("상품명2") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(10000.00) .setAttrModel(productAttr2) .setPrice(100000.00) .setQuantity(1) // 상품 정보 arrayList 설정 val proList = mutableListOf<AdBrixRm.CommerceProductModel>() proList.add(productModel1) proList.add(productModel2) // 상품 검색하기 이벤트 분석 AbxCommerce.search("검색어", proList, commerceAttr) }
상품 공유하기
사용자가 상품 정보를 공유한 이벤트를 분석합니다.
다음과 같은 공유된 상품 정보를 전달합니다.
API
AdBrixRm.Commerce.share( AdBrixRm.CommerceSharingChannel SharingChannel, AdBrixRm.CommerceProductModel productModel, AdBrixRm.AttrModel attrModel // Optional );
AdBrixRm.Commerce.share( AdBrixRm.CommerceSharingChannel SharingChannel, AdBrixRm.CommerceProductModel productModel, AdBrixRm.AttrModel attrModel //Optional )
Sample Code
void shareProductEvent(){ // 상품 카테고리 설정 AdBrixRm.CommerceCategoriesModel productCategory = new AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5"); //상품 추가 정보 설정 AdBrixRm.AttrModel productAttr1 = new AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false); // 이벤트 추가 정보 AdBrixRm.AttrModel commmerceAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_1 = new AdBrixRm.CommerceProductModel().setProductID("5385487400") .setProductName("슬랙스 10종 특가") .setPrice(10000.00) .setQuantity(1) .setDiscount(1000.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr1); // 상품 정보 공유하기 이벤트 분석 AdBrixRm.Commerce.share(AdBrixRm.CommerceSharingChannel.KakaoTalk, productModel_1, commmerceAttr); }
fun shareProductEvent(){ // 상품 카테고리 설정 val productCategory = AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5") //상품 추가 정보 설정 val productAttr1 = AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false) // 이벤트 추가 정보 val commerceAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true) //상품 정보 val productModel1 = AdBrixRm.CommerceProductModel() .setProductID("productid_1") .setProductName("상품명1") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(5000.00) .setAttrModel(productAttr1) .setPrice(50000.00) .setQuantity(1) // 상품 정보 공유하기 이벤트 분석 AbxCommerce.share(AdBrixRm.CommerceSharingChannel.KakaoStory, productModel1, commerceAttr) }
API (복수의 ProductModel 을 적용할 경우)
[[인용:경고:보통]] 본 API 는 Android SDK 2.4.0.0 부터 적용됩니다.
AdBrixRm.Commerce.share( AdBrixRm.CommerceSharingChannel SharingChannel, List <AdBrixRm.CommerceProductModel> productModelList, AdBrixRm.AttrModel attrModel // Optional );
AdBrixRm.Commerce.share( AdBrixRm.CommerceSharingChannel SharingChannel, List <AdBrixRm.CommerceProductModel> productModelList, AdBrixRm.AttrModel attrModel //Optional )
Sample Code
void addToWishListEvent(){ try { // 상품 카테고리 설정 AdBrixRm.CommerceCategoriesModel productCategory = new AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5"); //상품 추가 정보 설정 AdBrixRm.AttrModel productAttr1 = new AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false); AdBrixRm.AttrModel productAttr2 = new AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true); // 이벤트 추가 정보 AdBrixRm.AttrModel commmerceAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_1 = new AdBrixRm.CommerceProductModel().setProductID("5385487400") .setProductName("슬랙스 10종 특가") .setPrice(10000.00) .setQuantity(1) .setDiscount(1000.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr1); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_2 = new AdBrixRm.CommerceProductModel().setProductID("145099811") .setProductName("[이월특가] 나염 맨투맨") .setPrice(15500.00) .setQuantity(1) .setDiscount(1200.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr2); // 상품 정보 모델 ArrayList 생성 ArrayList productModelArrayList = new ArrayList<>(); productModelArrayList.add(productModel_1); productModelArrayList.add(productModel_2); // share 이벤트 분석 AdBrixRm.Commerce.share(AdBrixRm.CommerceSharingChannel.KakaoTalk, productModelArrayList, commmerceAttr); }catch (JSONException e){ e.printStackTrace(); } }
fun addToWishListEvent(){ try { // 상품 카테고리 설정 val productCategory = AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5") //상품 추가 정보 설정 val productAttr1 = AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false) val productAttr2 = AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true) // 이벤트 추가 정보 val commerceAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true) //상품 정보 val productModel1 = AdBrixRm.CommerceProductModel() .setProductID("productid_1") .setProductName("상품명1") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(5000.00) .setAttrModel(productAttr1) .setPrice(50000.00) .setQuantity(1) val productModel2 = AdBrixRm.CommerceProductModel() .setProductID("productid_2") .setProductName("상품명2") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(10000.00) .setAttrModel(productAttr2) .setPrice(100000.00) .setQuantity(1) // 상품 정보 arrayList 설정 val proList = mutableListOf<AdBrixRm.CommerceProductModel>() proList.add(productModel1) proList.add(productModel2) //share api 호출 AbxCommerce.share(AdBrixRm.CommerceSharingChannel.KakaoStory, proList, commerceAttr) } catch (e: Exception) { e.printStackTrace() } }
상품 목록 조회하기
사용자가 상품 목록을 조회한 이벤트를 분석합니다.
다음과 같은 조회한 상품 정보를 전달합니다.
API
AdBrixRm.Commerce.listView( List <AdBrixRm.CommerceProductModel> productModelList, AdBrixRm.AttrModel attrModel // Optional );
AdBrixRm.Commerce.listView( List <AdBrixRm.CommerceProductModel> productModelList, AdBrixRm.AttrModel attrModel //Optional )
Sample Code
void listViewProductsEvent(){ // 상품 카테고리 설정 AdBrixRm.CommerceCategoriesModel productCategory = new AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5"); //상품 추가 정보 설정 AdBrixRm.AttrModel productAttr1 = new AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false); AdBrixRm.AttrModel productAttr2 = new AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true); // 이벤트 추가 정보 AdBrixRm.AttrModel commmerceAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_1 = new AdBrixRm.CommerceProductModel().setProductID("5385487400") .setProductName("슬랙스 10종 특가") .setPrice(10000.00) .setQuantity(1) .setDiscount(1000.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr1); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_2 = new AdBrixRm.CommerceProductModel().setProductID("145099811") .setProductName("[이월특가] 나염 맨투맨") .setPrice(15500.00) .setQuantity(1) .setDiscount(1200.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr2); // 상품 정보 모델 ArrayList 생성 ArrayList productModelArrayList = new ArrayList<>(); productModelArrayList.add(productModel_1); productModelArrayList.add(productModel_2); //상품 목록 조회하기 이벤트 분석 AdBrixRm.Commerce.listView(productModelArrayList,commmerceAttr); }
fun listViewProductsEvent(){ // 상품 카테고리 설정 val productCategory = AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5") //상품 추가 정보 설정 val productAttr1 = AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false) val productAttr2 = AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true) // 이벤트 추가 정보 val commerceAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true) //상품 정보 val productModel1 = AdBrixRm.CommerceProductModel() .setProductID("productid_1") .setProductName("상품명1") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(5000.00) .setAttrModel(productAttr1) .setPrice(50000.00) .setQuantity(1) val productModel2 = AdBrixRm.CommerceProductModel() .setProductID("productid_2") .setProductName("상품명2") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(10000.00) .setAttrModel(productAttr2) .setPrice(100000.00) .setQuantity(1) // 상품 정보 arrayList 설정 val proList = mutableListOf<AdBrixRm.CommerceProductModel>() proList.add(productModel1) proList.add(productModel2) //상품 목록 조회하기 이벤트 분석 AbxCommerce.listView(proList, commerceAttr) }
장바구니 조회하기
사용자가 장바구니를 조회한 이벤트를 분석합니다.
다음과 같은 조회한 상품 정보를 전달합니다.
API
AdBrixRm.Commerce.cartView( List <AdBrixRm.CommerceProductModel> productModelList, AdBrixRm.AttrModel attrModel // Optional );
AdBrixRm.Commerce.cartView( List <AdBrixRm.CommerceProductModel> productModelList, AdBrixRm.AttrModel attrModel //Optional )
Sample Code
void cartViewProductsEvent(){ // 상품 카테고리 설정 AdBrixRm.CommerceCategoriesModel productCategory = new AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5"); //상품 추가 정보 설정 AdBrixRm.AttrModel productAttr1 = new AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false); AdBrixRm.AttrModel productAttr2 = new AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true); // 이벤트 추가 정보 AdBrixRm.AttrModel commmerceAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_1 = new AdBrixRm.CommerceProductModel().setProductID("5385487400") .setProductName("슬랙스 10종 특가") .setPrice(10000.00) .setQuantity(1) .setDiscount(1000.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr1); // 상품 정보 모델 생성 AdBrixRm.CommerceProductModel productModel_2 = new AdBrixRm.CommerceProductModel().setProductID("145099811") .setProductName("[이월특가] 나염 맨투맨") .setPrice(15500.00) .setQuantity(1) .setDiscount(1200.00) .setCurrency(AdBrixRm.Currency.KR_KRW) .setCategory(productCategory) .setAttrModel(productAttr2); // 상품 정보 모델 ArrayList 생성 ArrayList productModelArrayList = new ArrayList<>(); productModelArrayList.add(productModel_1); productModelArrayList.add(productModel_2); //장바구니 조회하기 이벤트 분석 AdBrixRm.Commerce.cartView(productModelArrayList,commmerceAttr); }
fun cartViewProductsEvent(){ // 상품 카테고리 설정 val productCategory = AdBrixRm.CommerceCategoriesModel() .setCategory("카테고리 1") .setCategory("카테고리 2") .setCategory("카테고리 3") .setCategory("카테고리 4") .setCategory("카테고리 5") //상품 추가 정보 설정 val productAttr1 = AdBrixRm.AttrModel() .setAttrs("size", 25) .setAttrs("color", "blue") .setAttrs("vip", false) val productAttr2 = AdBrixRm.AttrModel() .setAttrs("size", 33) .setAttrs("color", "black") .setAttrs("vip", true) // 이벤트 추가 정보 val commerceAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("howmany_buy", 36) .setAttrs("discount", true) //상품 정보 val productModel1 = AdBrixRm.CommerceProductModel() .setProductID("productid_1") .setProductName("상품명1") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(5000.00) .setAttrModel(productAttr1) .setPrice(50000.00) .setQuantity(1) val productModel2 = AdBrixRm.CommerceProductModel() .setProductID("productid_2") .setProductName("상품명2") .setCategory(productCategory) .setCurrency(AdBrixRm.Currency.KR_KRW) .setDiscount(10000.00) .setAttrModel(productAttr2) .setPrice(100000.00) .setQuantity(1) // 상품 정보 arrayList 설정 val proList = mutableListOf<AdBrixRm.CommerceProductModel>() proList.add(productModel1) proList.add(productModel2) //장바구니 조회하기 이벤트 분석 AbxCommerce.cartView(proList, commerceAttr) }
결제 정보 입력하기
사용자가 결제 정보를 입력한 이벤트를 분석합니다.
API
AdBrixRm.Commerce.paymentInfoAdded(AdBrixRm.AttrModel attrModel);
AdBrixRm.Commerce.paymentInfoAdded(AdBrixRm.AttrModel attrModel)
Sample Code
void paymentInfoAddedEvent(){ AdBrixRm.AttrModel commmerceAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("card", "kbcard") .setAttrs("discount", true); //결제 정보 입력 이벤트 AdBrixRm.Commerce.paymentInfoAdded(commmerceAttr); }
fun paymentInfoAddedEvent(){ //결제 정보 입력 이벤트 val commerceAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("card","kcard") .setAttrs("discount", true) AbxCommerce.paymentInfoAdded(commerceAttr) }
게임 이벤트 분석
앱에서 발생하는 게임과 관련된 이벤트(튜토리얼, 스테이지 등)를 분석합니다.
디파이너리(애드브릭스)에서 제공하는 게임 이벤트 종류는 다음과 같습니다.
- 튜토리얼 완료
- 캐릭터 생성
- 스테이지 완료
- 레벨 달성
튜토리얼 완료
앱에서 발생한 튜토리얼 완료 이벤트를 분석합니다.
다음과 같은 튜토리얼 완료 정보를 GameProperies.TutorialComplete의 값을 구성하여 전달합니다.
API
AdBrixRm.Game.tutorialComplete(AdBrixRm.GameProperties.TutorialComplete gameProperties);
AdBrixRm.Game.tutorialComplete(AdBrixRm.GameProperties.TutorialComplete gameProperties)
Sample Code
void tutorialCompleteEvent(){ AdBrixRm.AttrModel gameAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("level", 36) .setAttrs("google_vip", true); AdBrixRm.GameProperties.TutorialComplete gameProperties = new AdBrixRm.GameProperties.TutorialComplete() .setIsSkip(true) .setAttrModel(gameAttr); //튜토리얼 완료 이벤트 호출 AdBrixRm.Game.tutorialComplete(gameProperties); }
fun tutorialCompleteEvent(){ val gameAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("level", 36) .setAttrs("google_vip", true) val tutorialProperties = AdBrixRm.GameProperties.TutorialComplete() .setIsSkip(false) .setAttrModel(gameAttr) //튜토리얼 완료 이벤트 호출 AbxGame.tutorialComplete(tutorialProperties) }
캐릭터 생성
앱에서 발생한 캐릭터 생성 이벤트를 분석합니다.
다음과 같은 캐릭터 생성 정보를 GameProperies.CharacterCreated의 값을 구성하여 전달합니다.
API
AdBrixRm.Game.characterCreated(AdBrixRm.GameProperties.CharacterCreated gameProperties);
AdBrixRm.Game.characterCreated(AdBrixRm.GameProperties.CharacterCreated gameProperties)
Sample Code
void characterCreatedEvent(){ AdBrixRm.AttrModel gameAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("level", 36) .setAttrs("google_vip", true); AdBrixRm.GameProperties.CharacterCreated gameProperties = new AdBrixRm.GameProperties.CharacterCreated() .setAttrModel(gameAttr); //캐릭터 생성 이벤트 호출 AdBrixRm.Game.characterCreated(gameProperties); }
fun characterCreatedEvent(){ val gameAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("level", 36) .setAttrs("google_vip", true) val characterProperties = AdBrixRm.GameProperties.CharacterCreated() .setAttrModel(gameAttr) //캐릭터 생성 이벤트 호출 AbxGame.characterCreated(characterProperties) }
스테이지 완료
앱에서 발생한 스테이지 완료 이벤트를 분석합니다.
다음과 같은 스테이지 완료 정보를 GameProperies.StageCleared의 값을 구성하여 전달합니다.
API
AdBrixRm.Game.stageCleared(AdBrixRm.GameProperties.StageCleared gameProperties);
AdBrixRm.Game.stageCleared(AdBrixRm.GameProperties.StageCleared gameProperties)
Sample Code
void stageClearedEvent(){ AdBrixRm.AttrModel gameAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("level", 36) .setAttrs("google_vip", true); AdBrixRm.GameProperties.StageCleared gameProperties = new AdBrixRm.GameProperties.StageCleared() .setStageName("1-1") .setAttrModel(gameAttr); //스테이지 완료 완료 이벤트 호출 AdBrixRm.Game.stageCleared(gameProperties); }
fun stageClearedEvent(){ val gameAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("level", 36) .setAttrs("google_vip", true) val stageProperties = AdBrixRm.GameProperties.StageCleared() .setStageName("stage111") .setAttrModel(gameAttr) AbxGame.stageCleared(stageProperties) }
레벨 달성
앱에서 발생한 레벨 달성 이벤트를 분석합니다.
다음과 같은 레벨 달성 정보를 GameProperies.LevelAchieved의 값을 구성하여 전달합니다.
API
AdBrixRm.Game.levelAchieved(AdBrixRm.GameProperties.LevelAchieved gameProperties);
AdBrixRm.Game.levelAchieved(AdBrixRm.GameProperties.LevelAchieved gameProperties)
Sample Code
void levelAchievedEvent(){ AdBrixRm.AttrModel gameAttr = new AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("level", 36) .setAttrs("google_vip", true); AdBrixRm.GameProperties.LevelAchieved gameProperties = new AdBrixRm.GameProperties.LevelAchieved() .setLevel(1) .setAttrModel(gameAttr); //레벨 달성 이벤트 호출 AdBrixRm.Game.levelAchieved(gameProperties); }
fun levelAchievedEvent(){ val gameAttr = AdBrixRm.AttrModel() .setAttrs("grade", "vip") .setAttrs("level", 36) .setAttrs("google_vip", true) val leveProperties = AdBrixRm.GameProperties.LevelAchieved() .setLevel(12) .setAttrModel(gameAttr) //레벨 달성 이벤트 호출 AbxGame.levelAchieved(leveProperties) }