디파이너리(애드브릭스) Android 연동하기 [Unity]
팔로우
V2 에서의 변경점
2022년 9월 29일 Unity SDK V2 버전이 출시되었습니다. V2 버전이 출시됨에 따라 아래의 기존 "AdBrixRemasterUnityPlugin-a1.1.2110-i1.6.5102" Unity 패키지를 사용하시는 분은 아래 내용을 참고하여 Unity 패키지를 업데이트 해주시길 부탁드립니다.
- 라이브러리 변경
- Android / iOS 네이티브 라이브러리가 변경되었습니다. 기존에 사용하셨던 아래 라이브러리는 삭제를 부탁드립니다.
- Android
- abx-common-rm-release-v1.1.2110.aar
- abx-unity.aar
- installreferrer-1.0.aar
- iOS
- AdBrixRM.framework
- Android
- 이외 SDK 업데이트 시 기존 파일과 동일한 이름의 파일은 모두 신규 버전으로 업데이트를 부탁드립니다.
- Android / iOS 네이티브 라이브러리가 변경되었습니다. 기존에 사용하셨던 아래 라이브러리는 삭제를 부탁드립니다.
- SDK init 변경
- SDK init 연동 방식이 Android / iOS 별 네이티브 상에서 연동하는 것으로 변경되었습니다. 그러므로 아래의 API 는 삭제를 부탁드립니다.
- Android : AdBrixRm.InitPlugin();
- iOS : AdBrixRm.initAdBrix("your_app_key", "your_secret_key");
- SDK init 연동 방식이 Android / iOS 별 네이티브 상에서 연동하는 것으로 변경되었습니다. 그러므로 아래의 API 는 삭제를 부탁드립니다.
- SDK LogLevel API 삭제
- 딥링크 / 디퍼드 딥링크 연동 방식이 변경됨에 따라 setAdBrixDeeplinkDelegate / setAdBrixDeferredDeeplinkDelegate API 가 삭제되었습니다.
- 딥링크 / 디퍼드 딥링크 연동방식이 변경됨에 따라 didReceiveDeeplink / didReceiveDeferredDeeplink API 가 삭제되었습니다.
- SetCallbackHandler API 가 삭제되었습니다.
- 커스텀 이벤트 명이 변경되었습니다. ("events" -> "eventWithName" or "eventWithEventNameAndValue")
- 사용자의 나이를 설정하는 API 명이 변경되었습니다. ("setAgeInt" -> "setAge")
- 사용자의 성별을 설정하는 API 명이 변경되었습니다. ("setGenderWithAdBrixGenderType" -> "setGender")
- 사용자의 정보를 설정하는 API 명이 변경되었습니다. ("setUserPropertiesWithDictionary" -> "saveUserProperties")
- 이벤트 추가 정보 설정시 기존 Dictionary <string, object> 에서 Dictionary<string,string> 로 통일되었습니다.
Quick Start
Unity 지원 버전
디파이너리(애드브릭스) Unity SDK 는 Untiy 2021 LTS 버전에서 최적화 되었습니다. 해당 버전 사용을 권장합니다.
SDK 다운로드
디파이너리(애드브릭스) Unity 통합 패키지 : [다운로드(update : 2022/09/28]
Unity 패키지 설치
1. 기존 유니티 프로젝트를 오픈합니다.
[기존 유니티 프로젝트 오픈]
2. 기존 유니티 프로젝트의 Assets 창으로 ~~.package 파일을 드래그&드롭합니다.
[AdBrix SDK package 파일 Drag & Drop]
3. iOS와 동시에 개발하는 프로젝트가 아니라면 Android 디렉토리만 선택(iOS 디렉토리는 체크 박스를 해제)하여 Import 합니다.
디파이너리(애드브릭스) SDK Scripts 설정
Unity 로 구현될 앱이 iOS / Android 모두 사용될 앱이라면 아래와 같이 스크립트 추가하여 각각의 OS 에 대응하도록 합니다.
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Runtime.InteropServices; using System; #if UNITY_IOS using UnityEngine.iOS; using AdBrixRmIOS; #elif UNITY_ANDROID using AdBrixRmAOS; #endif public class AdBrixSDKController : MonoBehaviour { }
[[인용:위험:작게]] ※ 주의 : 아래부터는 안드로이드만 사용했을 경우를 가정하여 작성되었습니다.
Script 생성 후 해당 스크립트를 호출할 Component 에 이를 등록합니다.
디파이너리(애드브릭스) SDK init 설정
[[인용:위험:작게]] ※ 아래의 내용은 Android Studio 로 프로젝트를 Export 후 진행하셔야 합니다.
1. SDK 자체 Application 클래스를 사용할 경우
디파이너리(애드브릭스) Unty SDK 에서 제공하는 자체 Application 클래스 (com.igaworks.v2.unity.BaseApplication) 을 사용할 경우 아래와 같이 [AndroidManifest.xml > application] 항목에 해당 클래스를 추가합니다.
<application android:name="com.igaworks.v2.unity.BaseApplication" android:usesCleartextTraffic="true" android:label="@string/app_name" android:icon="@drawable/app_icon">
2. 자체 Application 클래스를 사용할 경우
앱 내에서 자체적으로 사용하는 Application 클래스를 사용할 경우 아래와 같이 AbxUnityApplication 클래스를 상속받아 사용합니다.
package com.igaworks.v2.unity; public class MyApplication extends AbxUnityApplication{ @Override public void registerListener() { } }
이후 해당 클래스를 AndroidManfiest.xml 에 추가합니다.
<application android:name="com.your.packagename.MyApplication" android:usesCleartextTraffic="true" android:label="@string/app_name" android:icon="@drawable/app_icon">
안드로이드 권한 설정
디파이너리(애드브릭스) 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>
Appkey / SecretKey 설정
디파이너리(애드브릭스) SDK 를 사용하기 위해서는 아래와 같이 Appkey 와 SecretKey 를 Androidmanifest.xml 에 명시해야 합니다.
<meta-data android:name="AdBrixRmAppKey" android:value="inputYourAppKey"/> <meta-data android:name="AdBrixRmSecretKey" android:value="inputYourSecretKey"/>
Android 진입점 액티비티 구성
디파이너리(애드브릭스)에서는 기본 UnityPlayerActivity 를 대체하는 맞춤 진입점 액티비티를 제공합니다. 그러므로 SDK 연동시 기존 UnityPlayerAcitvity 를 아래와 같이"com.igaworks.v2.unity.AbxUnityActivity" 로 변경하여 사용해 주시길 부탁드립니다.
<activity android:name="com.igaworks.v2.unity.AbxUnityActivity" android:label="@string/app_name" android:launchMode="singleTask" android:screenOrientation="fullUser" android:exported="true" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"> <intent-filter android:label="@string/app_name"> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> </activity>
build.gradle 수정
SDK 연동에 사용할 필수 라이브러리 추가를 위해 unityLibrary 내 build.gradle 파일에서 dependencies 부분에 아래 라이브러리를 추가합니다.
dependencies { implementation 'androidx.core:core:1.0.0' implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1' implementation 'com.android.installreferrer:installreferrer:2.2' }
gradle.properties 수정
Android 프로젝트 내 gradle.properties 에 다음 사항을 추가합니다.
android.useAndroidX=true android.enableJetifier=true
SDK 추가 설정
이벤트 업로드 주기 설정
디파이너리(애드브릭스) SDK 에 전달된 이벤트를 AdBrix 서버로 업로드하는 기준을 설정할 수 있습니다.
이벤트 업로드 주기는 누적 이벤트 개수와 시간으로 설정할 수 있습니다.
* 두 가지 기준 중 먼저 충족되는 기준에 따라 이벤트가 업로드 됩니다.
누적 이벤트 개수 기준
설정된 개수만큼 이벤트가 누적되었을 때에 디파이너리(애드브릭스) 서버로 이벤트를 업로드하도록 설정합니다.
디파이너리(애드브릭스) SDK에 사전 정의된 아래의 값을 이용하여 설정합니다.
- AdBrixRm.AdBrixEventUploadCountInterval.MIN : 10건
- AdBrixRm.AdBrixEventUploadCountInterval.NORMAL : 30건
- AdBrixRm.AdBrixEventUploadCountInterval.MAX : 60건
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Runtime.InteropServices; using System; using AdBrixRmAOS; public class AdBrixSDKController: MonoBehaviour { void Start () { AdBrixRm.setEventUploadCountInterval(AdBrixRm.AdBrixEventUploadCountInterval.NORMAL); } }
시간 기준
설정된 시간이 지나면 디파이너리(애드브릭스) 서버로 이벤트를 업로드하도록 설정합니다.
디파이너리(애드브릭스) SDK에 사전 정의된 아래의 값을 이용하여 설정합니다.
- AdBrixRm.AdBrixEventUploadTimeInteval.MIN : 30초
- AdBrixRm.AdBrixEventUploadTimeInteval.NORMAL :60초
- AdBrixRm.AdBrixEventUploadTimeInteval.MAX :120초
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Runtime.InteropServices; using System; using AdBrixRmAOS; public class AdBrixSDKController: MonoBehaviour { void Start () { AdBrixRm.setEventUploadTimeInterval(AdBrixRm.AdBrixEventUploadTimeInterval.NORMAL); } }
GDPR 설정
GDPR 요청 이벤트를 이용하여 사용자 요청에 대해 데이터 주체와 연관된 모든 개인 데이터를 삭제할 수 있습니다.
본 이벤트 호출시, SDK 동작은 정지되며 모든 이벤트 저장, 전송 등이 불가합니다.
본 기능은 사용자가 앱을 삭제 후, 재설치하기 전에는 되돌릴 수 없습니다.
void gdprForgetMeEvent() { AdBrixRm.gdprForgetMe (); }
딥링크 / 디퍼드 딥링크 설정
딥링크 설정
Unity 프로젝트에서 디파이너리(애드브릭스) SDK를 관리하는 스크립트에 아래와 같이 딥링크 핸들러를 추가합니다.
public class AdBrixSdkController: MonoBehaviour { public void HandleDidReceiveDeeplink (string deepLinkValue){ Debug.Log("HandleDidReceiveDeeplink : "+ deepLinkValue); } }
위 코드의 HandleDidReceiveDeeplink 의 deepLinkValue 값을 통해 아래와 같이 딥링크 정보가 전달 됩니다. 전달되는 딥링크 정보를 활용하여 원하시는 화면으로 이동시켜 주시면 되겠습니다.
[[인용:위험:작게]] ※ 예시 : 트래킹 링크에 adbrixrm://deeplinkpath 란 값을 딥링크 정보로 전달할 경우
예시 : HandleDidReceiveDeeplink : adbrixrm://deeplinkpath+추가 파라미터
Android Studio 로 프로젝트를 export 하여 AndroidManifest.xml의 진입점 액티비티에 아래와 같이 딥링크 스키마와 호스트를 추가 합니다.
<activity android:name="com.igaworks.v2.unity.AbxUnityActivity" android:label="@string/app_name" android:launchMode="singleTask" android:screenOrientation="fullUser" android:exported="true" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"> <intent-filter android:label="@string/app_name"> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="your_deeplink_scheme" android:host="your_deeplink_host" /> </intent-filter> <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> </activity>
설정하신 Application 클래스 내 아래와 같이 게임 내 Object 명과 리스너를 등록합니다.
public class BaseApplication extends AbxUnityApplication{ public static String GAME_OBJECT_NAME = "AbxObject"; // Game Object 이름 등록 @Override public void registerListener() { registerAllListeners(); setGameObjectNameReceiveListener(new GameObjectNameReceiveListener() { @Override public void onReceive(String gameObjectName) { BaseApplication.GAME_OBJECT_NAME = gameObjectName; unregisterListenersForChangingGameObjectName(); registerAllListeners(); } }); } public void registerAllListeners(){ setDeeplinkListener(GAME_OBJECT_NAME, "HandleDidReceiveDeeplink"); // 딥링크 리스너 추가 } }
[[인용:위험:작게]] ※ GAME_OBJECT_NAME 은 Unity 내 딥링크 핸들러를 호출할 스크립트가 포함된 OBJECT 명과 일치해야 합니다.
디퍼드 딥링크 설정
디퍼드 딥링크는 트래킹 링크를 클릭하여 앱을 설치하고 실행했을 때 특정 화면으로 랜딩 시켜주는 기능입니다.
Unity 프로젝트에서 디파이너리(애드브릭스) SDK를 관리하는 스크립트에 아래와 같이 디퍼드딥링크 핸들러를 추가합니다.
public class AdBrixSdkController: MonoBehaviour { public void HandleDidReceiveDeferredDeeplink (string deferredDeeplinkValue){ Debug.Log("HandleDidReceiveDeferredDeeplink : "+ deferredDeeplinkValue); } }
디파이너리(애드브릭스) 서버에서 위 코드의 HandleDidReceiveDeferredDeeplink 의 deferredDeepLinkValue 값을 통해 아래와 같이 딥링크 정보가 전달 됩니다. 전달되는 딥링크 정보를 활용하여 원하시는 화면으로 이동시켜 주시면 되겠습니다.
[[인용:위험:작게]] ※ 예시 : 트래킹 링크에 adbrixrm://deeplinkpath 란 값을 디퍼드 딥링크 딥링크 정보로 전달할 경우
예시 : HandleDidReceiveDeferredDeeplink : adbrixrm://deeplinkpath
Android Studio로 export 후 Android 내 설정하신 Application 클래스에 디퍼드 딥링크 리스너를 추가합니다.
public class BaseApplication extends AbxUnityApplication{ public static String GAME_OBJECT_NAME = "AbxObject"; // Game Object 이름 등록 @Override public void registerListener() { registerAllListeners(); setGameObjectNameReceiveListener(new GameObjectNameReceiveListener() { @Override public void onReceive(String gameObjectName) { BaseApplication.GAME_OBJECT_NAME = gameObjectName; unregisterListenersForChangingGameObjectName(); registerAllListeners(); } }); } public void registerAllListeners(){ setDeferredDeeplinkListener(GAME_OBJECT_NAME, "HandleDidReceiveDeferredDeeplink"); // 디퍼드 딥링크 리스너 추가 } }
[[인용:위험:작게]] ※ GAME_OBJECT_NAME 은 Unity 내 디퍼드 딥링크 핸들러를 호출할 스크립트가 포함된 OBJECT 명과 일치해야 합니다.
[[인용:위험:작게]] - HandleDidReceiveDeferredDeeplink 는 디퍼드 딥링크 정보가 없을 경우 호출하지 않습니다.
- 구글 플레이에서 다운로드 받은 앱은 구글 플레이에서도 디퍼드 딥링크 정보를 전달합니다. 디파이너리(애드브릭스) 서버와 구글 플레이에서 동시 디퍼드 딥링크 정보가 전달되는 만큼 중복으로 화면이 오픈되지 않도록 설정을 부탁드립니다.
[[인용:위험:작게]] Facebook SDK의 fetchDeferredAppLinkData API 를 사용할 수 없습니다 .
Facebook 광고시 사용하는 fetchDeferredApplinkData 의 역할을 저희 DeferredDeeplink API 가 대신하므로 이를 중복해서 사용할 수 없습니다. 사용하고 계시다면 삭제를 부탁드립니다.
유저 분석
로그인/로그아웃 이벤트
사용자의 로그인/로그아웃 이벤트를 분석합니다.
로그인이 성공하였을 때, 유저를 구분하는 식별 값(user id)을 다음과 같이 전달합니다.
로그아웃이 성공하였을 때, @"" 와 같이 빈 문자열을 전달하여 유저 로그인 데이터를 초기화합니다.
void sampleFunction() { if(isLoginSuccess) { // 로그인이 성공했을 떄, "user_1234"와 같은 유저아이디를 전달 AdBrixRm.login ("user_1234"); } else { // 로그아웃이 성공했을 때, ""의 빈 문자열을 전달 AdBrixRm.login (""); } }
* userID 로 전달되는 유저 아이디에 개인정보가 포함되지 않도록 주의해주세요. 만약 이메일, 전화번호 등의 개인정보가 포함되는 경우에는 적절한 암호화(BASE64, MD5, SHA1 등) 처리를 하시는 것을 권장합니다.
유저 정보
유저의 나이, 성별, 기타 정보에 대해 분석할 수 있습니다.
void sampleFunction() { //유저 나이 AdBrixRm.setAge (20); //유저 성별 AdBrixRm.setGender(AdBrixRm.Gender.FEMALE); //기타 유저 정보 Dictionary<string, string> dict = new Dictionary<string, string>(); dict.Add("key1", "value1"); AdBrixRm.saveUserProperties (dict); }
[[인용:위험:보통]] Dictionary 데이터 설정 시 유의 사항
1.100 개 이상의 정보는 처리되지 않습니다.
2. Key 값의 데이터 타입은 string 이며 256자를 넘을 수 없고, 영문 소문자, 숫자를 제외한 나머지 문자는 사용할 수 없습니다.
3. Value 값의 데이터 길이는 byte 기준으로 1024byte를 넘을 수 없습니다.
공통(일반)이벤트 분석
앱에서 발생하는 이벤트 중, 공통적으로 발생하는 이벤트를 분석합니다.
디파이너리(애드브릭스) 에서 제공하는 공통 이벤트 종류는 다음과 같습니다.
- 회원가입
- 앱 업데이트
- 사용자 초대
- 크레딧 사용
- 결제하기
* 디파이너리(애드브릭스)에서 광고채널 별 매출을 보고자 할 때에는 '결제하기' 연동을 반드시 진행해야 합니다.
회원가입
앱에서 발생한 회원가입 이벤트를 분석합니다.
void userSignup() { // 유저 정보를 Adbrix 로 전달할 경우 설정합니다. Dictionary<string, string> dict = new Dictionary<string, string>(); dict.Add("key1", "value1"); AdBrixRm.commonSignUp(AdBrixRm.SignUpChannel.Google, dict); }
앱 업데이트
앱에서 발생한 앱 업데이트 이벤트를 분석합니다.
void appUpdate() { // 유저 정보 Dictionary<string, string> dict = new Dictionary<string, string>(); dict.Add("key1", "value1"); AdBrixRm.commonAppUpdate("1.2.2a","1.3.0",dict); }
사용자 초대
앱에서 발생한 앱 초대 이벤트를 분석합니다.
void userInvite() { // 유저 정보 Dictionary<string, string> dict = new Dictionary<string, string>(); dict.Add("key1", "value1"); AdBrixRm.commonInvite(AdBrixRm.InviteChannel.Facebook, dict); }
크레딧 사용
앱내 현금성 화폐 사용에 대한 이벤트를 분석합니다.
void useCredit() { // 크레딧 사용 정보 Dictionary<string, string> credit_info= new Dictionary<string, string>(); credit_info.Add("credit", "20000"); AdBrixRm.commonUseCredit(credit_info); }
결제하기
앱에서 발생한 결제(구매) 이벤트를 분석합니다.
다음과 같은 상품 맟 주문에 대한 정보를 array 형태로 구성하여 전달합니다.
- order id : (필수) 주문 번호
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 구매 화폐 단위
- category : (옵션) 카테고리 정보
- product attr map : (옵션) 상품 상세 옵션
- delivery charge : (옵션) 배송비
- payment method : (옵션) 결제 방법
void sampleFunction() { //상품을 담을 배열 List<AdBrixRm.AdBrixRmCommerceProductModel> items = new List <AdBrixRm.AdBrixRmCommerceProductModel>(); //상품 상세 옵션 Dictionary Dictionary<string, string>productAttrs = new Dictionary<string, string>(); productAttrs.Add ("Att1", "Value1"); productAttrs.Add ("Att2", "Value2"); productAttrs.Add ("Att3", "Value3"); //상품 생성 AdBrixRm.AdBrixRmCommerceProductModel productModel = AdBrixRm.AdBrixRmCommerceProductModel.create ( "productId01", "productName01", 10000.00, 1, 5000.00, AdBrixRm.Currency.KR_KRW, AdBrixRm.AdBrixRmCommerceProductCategoryModel.create ("Cate1", "Cate2", "Cate3"), AdBrixRm.AdBrixRmCommerceProductAttrModel.create (productAttrs) ); //상품 생성 AdBrixRm.AdBrixRmCommerceProductModel productModel2 = AdBrixRm.AdBrixRmCommerceProductModel.create ( "productId02", "productName02", 10000.00, 1, 5000.00, AdBrixRm.Currency.KR_KRW, AdBrixRm.AdBrixRmCommerceProductCategoryModel.create ("Cate1", "Cate2", "Cate3"), AdBrixRm.AdBrixRmCommerceProductAttrModel.create (productAttrs) ); items.Add (productModel); items.Add (productModel2); //상품 결제하기 이벤트 AdBrixRm.commonPurchase ("30290121", items, 1000.00, 3500.00, AdBrixRm.PaymentMethod.CreditCard); }
커스텀 분석
앱 내 사용자의 일반적인 모든 이벤트를 분석합니다. (구매 이벤트 제외)
앱 내에서 이벤트(string)를 통해 액션을 자유롭게 분석할 수 있습니다.
void sampleFunction() { //Custom event with just Event Name AdBrixRm.eventWithName ("your_event_name"); // Custom evnet with Event Name + event properties Dictionary<string, string> eventDic = new Dictionary<string, string>(); eventDic.Add("event_parameter1", "value1"); eventDic.Add("event_parameter2", "value2"); AdBrixRm.eventWithEventNameAndValue("your_event_name" , eventDic); }
커머스 분석
앱에서 발생하는 구매 관련(상품상세보기, 장바구니 담기 등) 이벤트를 분석합니다.
디파이너리(애드브릭스)에서 제공하는 커머스 이벤트 종류는 다음과 같습니다.
- 홈(메인) 화면 진입
- 카테고리(기획전) 진입
- 상품 상세 보기
- 장바구니 담기
- 위시리스트(관심 상품) 추가
- 주문 확인하기
- 주문 취소하기
- 상품 검색하기
- 상품 목록 조회하기
- 상품 공유하기
- 장바구니 조회하기
- 구매 정보 입력하기
홈(메인) 화면 진입
사용자가 앱의 홈(메인) 화면으로 진입한 이벤트를 분석합니다.
void sampleFunction() { AdBrixRm.commerceViewHome (); }
카테고리(기획전) 진입
사용자가 카테고리(기획전) 화면으로 진입한 이벤트를 분석합니다.
카테고리 정보는 최대 5단계까지 분석할 수 있습니다.
void sampleFunction() { //상품을 담을 배열 List<AdBrixRm.AdBrixRmCommerceProductModel> items = new List <AdBrixRm.AdBrixRmCommerceProductModel>(); //상품 상세 옵션 Dictionary Dictionary<string, string>productAttrs = new Dictionary<string, string>(); productAttrs.Add ("Att1", "Value1"); productAttrs.Add ("Att2", "Value2"); productAttrs.Add ("Att3", "Value3"); //카테고리에 포함된 상품 생성 AdBrixRm.CommerceProductModel productModel = AdBrixRm.AdBrixRmCommerceProductModel.create ( "productId01", "productName01", 10000.00, 1, 5000.00, AdBrixRm.Currency.KR_KRW, AdBrixRm.AdBrixRmCommerceProductCategoryModel.create ("하의기획전"), AdBrixRm.AdBrixRmCommerceProductAttrModel.create (productAttrs) ); items.Add (productModel); //카테고리 진입 이벤트 AdBrixRm.commerceCategoryView (AdBrixRm.AdBrixRmCommerceProductCategoryModel.create("기획전"), items); }
상품 상세 보기
사용자의 상품을 상세하기 본 이벤트를 분석합니다.
다음과 같은 상품에 대한 정보를 전달합니다.
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 카테고리 정보
- category : (옵션) 구매 화폐 단위
- product attr map : (옵션) 상품 상세 옵션
void sampleFunction() { //상품 상세 옵션 Dictionary 생성 Dictionary<string, string> productAttrs = new Dictionary<string, string>(); productAttrs.Add ("Att1", "Value1"); productAttrs.Add ("Att2", "Value2"); productAttrs.Add ("Att3", "Value3"); //상품 생성 AdBrixRm.AdBrixRmCommerceProductModel productModel = AdBrixRm.AdBrixRmCommerceProductModel.create ( "productId01", "productName01", 10000.00, 1, 5000, AdBrixRm.Currency.KR_KRW, AdBrixRm.AdBrixRmCommerceProductCategoryModel.create ("Cate1", "Cate2", "Cate3"), AdBrixRm.AdBrixRmCommerceProductAttrModel.create (productAttrs) ); //상품 상세보기 AdBrixRm.commerceProductView (productModel); }
장바구니 담기
사용자가 상품을 장바구니에 담은 이벤트를 분석합니다.
다음과 같은 상품 정보를 전달합니다.
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 카테고리 정보
- category : (옵션) 구매 화폐 단위
- product attr map : (옵션) 상품 상세 옵션
void sampleFunction() { //상품을 담을 배열 List<AdBrixRm.AdBrixRmCommerceProductModel> items = new List <AdBrixRm.AdBrixRmCommerceProductModel>(); //상품 상세 옵션 Dictionary 생성 Dictionary<string, string>productAttrs = new Dictionary<string, string>(); productAttrs.Add ("Att1", "Value1"); productAttrs.Add ("Att2", "Value2"); productAttrs.Add ("Att3", "Value3"); //상품 생성 AdBrixRmCommerceProductModel productModel = AdBrixRmCommerceProductModel.create ( "productId01", "productName01", 10000.00, 1, 5000.00, AdBrixRm.Currency.KR_KRW, AdBrixRm.AdBrixRmCommerceProductCategoryModel.create ("Cate1", "Cate2", "Cate3"), AdBrixRm.AdBrixRmCommerceProductAttrModel.create (productAttrs) ); items.Add (productModel); //장바구니 이벤트 AdBrixRm.commerceAddToCart(items); }
관심 상품(위시리스트) 추가
사용자가 상품을 관심 상품(위시리스트)에 추가한 이벤트를 분석합니다.
다음과 같은 상품 정보를 전달합니다.
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 카테고리 정보
- category : (옵션) 구매 화폐 단위
- product attr map : (옵션) 상품 상세 옵션
void sampleFunction() { //상품 상세 옵션 Dictionary 생성 Dictionary<string, string>productAttrs = new Dictionary<string, string>(); productAttrs.Add ("Att1", "Value1"); productAttrs.Add ("Att2", "Value2"); productAttrs.Add ("Att3", "Value3"); //상품 생성 AdBrixRm.AdBrixRmCommerceProductModel productModel = AdBrixRm.AdBrixRmCommerceProductModel.create ( "productId01", "productName01", 10000.00, 1, 5000.00, AdBrixRm.Currency.KR_KRW, AdBrixRm.AdBrixRmCommerceProductCategoryModel.create ("Cate1", "Cate2", "Cate3"), AdBrixRm.AdBrixRmCommerceProductAttrModel.create (productAttrs) ); //관심 상품 이벤트 AdBrixRm.commerceAddToWishList (productModel); }
주문 확인하기
사용자가 상품을 결제하기 전 최종 확인하는 이벤트를 분석합니다.
다음과 같은 주문 및 상품 정보를 전달합니다.
- order id : (필수) 주문 번호
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 카테고리 정보
- category : (옵션) 구매 화폐 단위
- product attr map : (옵션) 상품 상세 옵션
- delivery charge : (옵션) 배송비
void sampleFunction() { //상품을 담을 배열 List<AdBrixRm.AdBrixRmCommerceProductModel>items = new List <AdBrixRm.AdBrixRmCommerceProductModel>(); //상품 상세 옵션 Dictionary 생성 Dictionary<string, string>productAttrs = new Dictionary<string, string>(); productAttrs.Add ("Att1", "Value1"); productAttrs.Add ("Att2", "Value2"); productAttrs.Add ("Att3", "Value3"); //상품 생성 AdBrixRm.AdBrixRmCommerceProductModel productModel = AdBrixRm.AdBrixRmCommerceProductModel.create ( "productId01", "productName01", 10000.00, 1, 5000.00, AdBrixRm.Currency.KR_KRW, AdBrixRm.AdBrixRmCommerceProductCategoryModel.create ("Cate1", "Cate2", "Cate3"), AdBrixRm.AdBrixRmCommerceProductAttrModel.create (productAttrs) ); items.Add (productModel); //주문확인 이벤트 AdBrixRm.commerceReviewOrder ("30290121", items, 1000.00, 3500.00); }
주문 취소하기 (환불하기)
사용자가 주문을 취소하거나 환불 처리한 이벤트를 분석합니다.
다음과 같은 상품 및 주문 정보를 전달합니다.
- order id : (필수) 주문 번호
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 카테고리 정보
- category : (옵션) 구매 화폐 단위
- product attr map : (옵션) 상품 상세 옵션
- penalty charge : (옵션) 취소(환불) 수수료
void sampleFunction() { //상품을 담을 배열 List<AdBrixRm.AdBrixRmCommerceProductModel> items = new List <AdBrixRm.AdBrixRmCommerceProductModel>(); //상품 상세 옵션 Dictionary 생성 Dictionary<string, string>productAttrs = new Dictionary<string, string>(); productAttrs.Add ("Att1", "Value1"); productAttrs.Add ("Att2", "Value2"); productAttrs.Add ("Att3", "Value3"); //상품 생성 AdBrixRm.AdBrixRmCommerceProductModel productModel = AdBrixRm.AdBrixRmCommerceProductModel.create ( "productId01", "productName01", 10000.00, 1, 5000.00, AdBrixRm.Currency.KR_KRW, AdBrixRm.AdBrixRmCommerceProductCategoryModel.create ("Cate1", "Cate2", "Cate3"), AdBrixRm.AdBrixRmCommerceProductAttrModel.create (productAttrs) ); items.Add (productModel); //주문 취소 이벤트 AdBrixRm.commerceRefund ("30290121", items, 3500.00); }
상품 검색하기
사용자가 상품을 검색한 이벤트를 분석합니다.
다음과 같은 검색 결과에 포함된 상품 정보를 전달합니다.
- keyword : (필수) 검색에 사용한 단어
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 카테고리 정보
- category : (옵션) 구매 화폐 단위
void sampleFunction() { //상품을 담을 배열 List<AdBrixRm.AdBrixRmCommerceProductModel> items = new List <AdBrixRm.AdBrixRmCommerceProductModel>(); //상품 상세 옵션 Dictionary 생성 Dictionary<string, string>productAttrs = new Dictionary<string, string>(); productAttrs.Add ("Att1", "Value1"); productAttrs.Add ("Att2", "Value2"); productAttrs.Add ("Att3", "Value3"); //상품 생성 AdBrixRm.AdBrixRmCommerceProductModel productModel = AdBrixRm.AdBrixRmCommerceProductModel.create ( "productId01", "productName01", 10000.00, 1, 5000.00, AdBrixRm.Currency.KR_KRW, AdBrixRm.AdBrixRmCommerceProductCategoryModel.create ("Cate1", "Cate2", "Cate3"), AdBrixRm.AdBrixRmCommerceProductAttrModel.create (productAttrs) ); items.Add (productModel); //상품 검색 이벤트 AdBrixRm.commerceSearch("나이키", items); }
상품 공유하기
사용자가 상품 정보를 공유한 이벤트를 분석합니다.
다음과 같은 공유된 상품 정보를 전달합니다.
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 카테고리 정보
- category : (옵션) 구매 화폐 단위
- product attr map : (옵션) 상품 상세 옵션
void sampleFunction() { //상품 상세 옵션 Dictionary 생성 Dictionary<string, string>productAttrs = new Dictionary<string, string>(); productAttrs.Add ("Att1", "Value1"); productAttrs.Add ("Att2", "Value2"); productAttrs.Add ("Att3", "Value3"); //상품 생성 AdBrixRm.AdBrixRmCommerceProductModel productModel = AdBrixRm.AdBrixRmCommerceProductModel.create ( "productId01", "productName01", 10000.00, 1, 5000.00, AdBrixRm.Currency.KR_KRW, AdBrixRm.AdBrixRmCommerceProductCategoryModel.create ("Cate1", "Cate2", "Cate3"), AdBrixRm.AdBrixRmCommerceProductAttrModel.create (productAttrs) ); //상품 공유하기 이벤트 AdBrixRm.commerceShare (AdBrixRm.SharingChannel.KAKAOTALK, productModel); }
상품 목록 조회하기
사용자가 상품 목록을 조회한 이벤트를 분석합니다.
다음과 같이 조회한 상품 정보를 전달합니다.
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 카테고리 정보
- category : (옵션) 구매 화폐 단위
- product attr map : (옵션) 상품 상세 옵션
void sampleFunction() { //상품을 담을 배열 List<AdBrixRm.AdBrixRmCommerceProductModel> items = new List <AdBrixRm.AdBrixRmCommerceProductModel>(); //상품 상세 옵션 Dictionary 생성 Dictionary<string, string>productAttrs = new Dictionary<string, string>(); productAttrs.Add ("Att1", "Value1"); productAttrs.Add ("Att2", "Value2"); productAttrs.Add ("Att3", "Value3"); //상품 생성 AdBrixRm.AdBrixRmCommerceProductModel productModel = AdBrixRm.AdBrixRmCommerceProductModel.create ( "productId01", "productName01", 10000.00, 1, 5000.00, AdBrixRm.Currency.KR_KRW, AdBrixRm.AdBrixRmCommerceProductCategoryModel.create ("Cate1", "Cate2", "Cate3"), AdBrixRm.AdBrixRmCommerceProductAttrModel.create (productAttrs) ); items.Add (productModel); //상품 목록 조회 이벤트 AdBrixRm.commerceListView (items); }
장바구니 조회하기
사용자가 장바구니를 조회한 이벤트를 분석합니다.
다음과 같이 조회한 상품 정보를 전달합니다.
- product id : (필수) 상품 번호
- product name : (필수) 상품 이름
- price : (필수) 상품 단가
- quantity : (필수) 구매 수량
- discount : (옵션) 할인 금액
- currency string : (옵션) 카테고리 정보
- category : (옵션) 구매 화폐 단위
- product attr map : (옵션) 상품 상세 옵션
void sampleFunction() { //상품을 담을 배열 List<AdBrixRm.AdBrixRmCommerceProductModel> items = new List <AdBrixRm.AdBrixRmCommerceProductModel>(); //상품 상세 옵션 Dictionary 생성 Dictionary<string, string>productAttrs = new Dictionary<string, string>(); productAttrs.Add ("Att1", "Value1"); productAttrs.Add ("Att2", "Value2"); productAttrs.Add ("Att3", "Value3"); //상품 생성 AdBrixRm.AdBrixRmCommerceProductModel productModel = AdBrixRm.AdBrixRmCommerceProductModel.create ( "productId01", "productName01", 10000.00, 1, 5000.00, AdBrixRm.Currency.KR_KRW, AdBrixRm.AdBrixRmCommerceProductCategoryModel.create ("Cate1", "Cate2", "Cate3"), AdBrixRm.AdBrixRmCommerceProductAttrModel.create (productAttrs) ); items.Add (productModel); //장바구니 조회하기 이벤트 AdBrixRm.commerceCartView (items); }
구매 정보 입력하기
사용자가 구매 정보를 입력한 이벤트를 분석합니다.
void sampleFunction() { //구매 정보 상세 옵션 Dictionary Dictionary<string, string> paymentAttrs = new Dictionary<string, string>(); paymentAttrs.Add ("creditcard", "oocard"); AdBrixRm.commercePaymentInfoAdded (paymentAttrs, 100); }
게임 이벤트 분석
앱에서 발생하는 게임과 관련된 이벤트(튜토리얼, 스테이지 등)를 분석합니다.
디파이너리(애드브릭스)에서 제공하는 게임 이벤트 종류는 다음과 같습니다.
- 튜토리얼 완료
- 캐릭터 생성
- 스테이지 완료
- 레벨 달성
튜토리얼 완료
앱에서 발생한 튜토리얼 완료 이벤트를 분석합니다.
다음과 같은 튜토리얼 완료 정보를 구성하여 전달합니다.
- (필수) 건너뛰기(skip)를 통한 완료인지 여부
void sampleFunction() { AdBrixRm.gameTutorialCompleted (false); }
캐릭터 생성
앱에서 발생한 캐릭터 생성 이벤트를 분석합니다.
void sampleFunction() { AdBrixRm.gameCharacterCreated(); }
스테이지 완료
앱에서 발생한 스테이지 완료 이벤트를 분석합니다.
다음과 같은 스테이지 완료 정보를 구성하여 전달합니다.
- (필수) 완료한 스테이지 이름
void sampleFunction() { AdBrixRm.gameStageCleared("1-1"); }
레벨 달성
앱에서 발생한 레벨 달성 이벤트를 분석합니다.
다음과 같은 레벨 달성 정보를 구성하여 전달합니다.
- (필수) 달성한 레벨 (1~10000)
void sampleFunction() { AdBrixRm.gameLevelAchieved (15); }