Tích hợp AdBrix Android SDK [Kotlin]
Theo dõi
Quick Start
Chúng tôi sẽ hướng dẫn các bước tích hợp SDK tối thiểu để sử dụng AdBrix.
Sau khi hoàn thành cấu hình [Gradle -> Proguard ] và khởi tạo SDK bạn có thể:
- Xem báo cáo các thông số cơ bản trên console: DAU, Retention
- Truy vết quảng cáo cài đặt ứng dụng thông qua tracking link: Install Count, Re-Install Count
System Requirement
- Build environment : Sử dụng Android Studio
- Android Min SDK version : 14 trở lên
Cài đặt Gradle để tải SDK
Cài đặt AdBrix Android SDK thông qua gradle.
Thêm thông tin địa chỉ lưu trữ AdBrix SDK trên maven vào file [build.gradle (Project: ProjectName)]:
allprojects { repositories { google() jcenter() flatDir { dirs 'libs' } maven { url 'https://dl.bintray.com/igaworks/AdbrixRmSDK' } } }
[app > build.gradle > dependencies] thêm các dependency sau:
dependencies { implementation 'com.google.android.gms:play-services-ads:15.0.0' implementation 'com.android.installreferrer:installreferrer:1.0' implementation 'com.igaworks.adbrix:abx-common-rm:+' }
[[인용:위험:보통]]* Để phòng chống Fraud Traffic và xác định install attribution trên Play Store, bạn cần cài com.android.installreferrer:installreferrer.
* Để nhận được google adid, bạn cần cài com.google.android.gms:play-service-ads.
Cấu hình permission cần thiết
Cấu hình các permission cho AdBrix SDK kết nối mạng internet bằng cách khai báo trong file [AndroidManifest.xml > manifest].
<manifest> ... <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- OPTIONAL --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> ... </manifest>
Cấu hình App Key và Secret Key
AdBrix Console cung cấp 2 khóa này.
Thêm 2 khóa vào file [AndroidManifest.xml > manifest > application]
<application> ... <meta-data android:name="AdBrixRmAppKey" android:value="your_adbrix_remastered_app_key" /> <meta-data android:name="AdBrixRmSecretKey" android:value="your_adbrix_remastered_secret_key" /> ... </application>
[[인용:안내:보통]] Kiểm tra App Key & Secret Key
App Key và Secret Key được cấp riêng cho mỗi app khi sử dụng AdBrix. 2 tham số này cần dùng để khởi tạo SDK. Để lấy thông tin 2 Key này, bạn vào AdBrix Console.
_ Cách lấy App Key và Secret Key
_ Mở AdBrix Console
Khởi tạo SDK
Mục đích của bước này là khởi tạo SDK với App Key, Secret Key và cho phép SDK cài đặt ActivityLifecycleCallbacks. Tùy vào vào cách phát triển app, có thể khởi tạo AdBrix SDK bằng 2 cách.
- Sử dụng AbxApplication class
- Sử dụng custom Application class
1. Sử dụng AbxApplication class
Trong trường hợp không cần sử dụng custom Application class, bạn có thể dùng ngay AbxApplication clas để khởi tạo SDK tự động.
Khai báo AbxApplication class vào file [AndroidManifest.xml > application] kèm theo meta-data là app key và secret key nhận từ AdBrix Console.
<application android:name="com.igaworks.v2.core.application.AbxApplication" ... > </application>
2. Sử dụng custom Application class
Trong trường hợp app có Application class riêng, giả sử tên là MyApplicationClass, khai báo trong Manifest:
<application android:name=".MyApplicationClass" ... > </application>
public class MyApplicationClass : Application() { override fun onCreate() { super.onCreate() AbxActivityHelper.initializeSdk(applicationContext , "AppKey", "SecretKey"); if (Build.VERSION.SDK_INT >= 14) { registerActivityLifecycleCallbacks(AbxActivityLifecycleCallbacks()) } } }
Cấu hình ProGuard
Thêm code sau vào file app / proguard-rule.pro để SDK hoạt động chính xác. Tránh làm Proguard ảnh hưởng tới việc xác định mobile attribution.
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {*;} -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$* {*;} -dontwarn com.android.installreferrer
Chúc mừng bạn đã tích hợp thành công AdBrix SDK!!!
Bạn đã hoàn thành bước tích hợp SDK cho dịch vụ cơ bản của AdBrix. Bây giờ, vào AdBrix Console, bạn có thể kiểm tra event ở SDK đã được đưa lên AdBrix server, hiển thị trên báo cáo.
1. Kiểm tra báo cáo về DAU, MAU, retention
2. Truy vết các chiến dịch cài đặt ứng dụng hình thái nCPI và các hình thái tương tự khác. Kiểm tra thông số install count, re-install count phân bổ theo từng chiến dịch.
Chú ý: Event đầu tiên hiện trên Console hoặc LiveBrix có thể mất 5 phút.
Bước tiếp theo: Để truy vết và phân tích deep-link attribution và các sự kiện trong ứng dụng (in-app event), hãy tiếp tục tích hợp SDK theo hướng dẫn bên dưới. Các sự kiện được định nghĩa theo nhu cầu của ứng dụng một cách linh hoạt. Bạn có thể tham khảo một số ví dụ về event thường gặp trong app như create_account, log_in, register_credit_card, trong e-commerce như purchase, add_to_cart, view_product, trong game như create_character, level_up, v.v
Tích hợp SDK bổ sung
Cấu hình chu kì upload sự kiện
AdBrix SDK cung cấp hàm để ghi log sự kiện vào hàng đợi, sau đó sẽ dựa trên 2 tiêu chí sau đây để upload sự kiện lên server.
- Tiêu chí số event trong hàng đợi của SDK
- Tiêu chí thời gian
[[인용:안내:보통]] * Trong 2 tiêu chí trên, tiêu chí nào đến trước thì sẽ được thực hiện trước
* Hàm cài đặt tham số chu kì upload nên được gọi trong Application class hoặc ở Activity đầu tiên của ứng dụng.
1. Tiêu chí số event trong hàng đợi của SDK
Khi số event trong hàng đợi vừa qua ngưỡng cài đặt, SDK sẽ tiến hành upload toàn bộ dữ liệu lên server.
Hằng số được định nghĩa sẵn trong AdBrix SDK:
- AdBrixRm.AdBrixEventUploadCountInterval.MIN : 10 sự kiện
- AdBrixRm.AdBrixEventUploadCountInterval.NORMAL : 30 sự kiện
- AdBrixRm.AdBrixEventUploadCountInterval.MAX : 60 sự kiện
class MainApplication : Application() { override fun onCreate() { super.onCreate() AdBrixRm.setEventUploadCountInterval(AdBrixRm.AdBrixEventUploadCountInterval.MIN) } }
2. Tiêu chí thời gian
SDK sẽ đợi một khoảng thời gian nhất định được cấu hình từ trước. Sau đó, SDK sẽ tải toàn bộ dữ liệu lên server và sau đó tiếp tục đợi phiên tiếp theo.
Hằng số được định nghĩa bởi AdBrix SDK.
- AdBrixRm.AdBrixEventUploadTimeInterval.MIN : 30 giây
- AdBrixRm.AdBrixEventUploadTimeInterval.NORMAL : 60 giây
- AdBrixRm.AdBrixEventUploadTimeInterval.MAX : 120 giây
class MainApplication : Application() { override fun onCreate() { super.onCreate() AdBrixRm.setEventUploadTimeInterval(AdBrixRm.AdBrixEventUploadTimeInterval.MIN) } }
Cài đặt GDPR
Khi người dùng yêu cầu xóa tất cả dữ liệu cá nhân theo luật bảo hộ dữ liệu GDPR, hãy dùng hàm sau. [GDPR là gì?]
fun gdprForgetMeEvent() { AdBrixRm.gdprForgetMe(applicationContext); }
[[인용:위험:보통]] Chú ý!!!
Khi gọi hàm gdprForgetMe, SDK sẽ dừng toàn bộ việc thu thập dữ liệu ngay lập tức, bạn sẽ không thể phân tích tất cả event xảy ra trong ứng dụng từ lúc đó. Trạng thái này sẽ duy trì cho đến khi người dùng cài lại ứng dụng.
Deep Linking/ Deferred Deep Linking
Phân tích sự kiện Deep Linking
Deep linking là phương thức để mở một Activity trong ứng dụng thông qua deep link có địa chỉ dạng scheme://host. Android hỗ trợ thêm phương thức App Link, địa chỉ có dạng giống như địa chỉ web https://domain để mở Activity trong app từ mobile browser. Như vậy Android App Link và Deep Link có thể hiểu là một sự kết nối từ bên ngoài vào mobile app. Trường hợp đặc biệt của Deep Link khi app được mở lần đầu tiên sau khi cài đặt được gọi là Deferred Deep Link. AdBrix tracking link hỗ trợ toàn bộ các dạng Deep Link như mô tả ở trên. Khi tạo tracking link, tuỳ theo phương thức mong muốn, tracking link có thể hoạt động như Android AppLink hoặc Deep Link thông thường hoặc Deferred Deep Link.
[[인용:안내:보통]] Deep Link URI format có dạng myscheme://host?key=value. Tham số đính kèm trong link có kiểu dữ liệu dạng String. Tham số được cấu hình dễ dàng trên AdBrix Console.
Thông qua tracking link, người dùng mở ứng dụng ở một màn hình Activity của Android trong ứng dụng bằng phương pháp deep linking. Đây là một sự kiện quan trọng mà marketer cần quan sát và phân tích.
Tùy vào thuộc tính launchMode của Activity class, phương pháp tích hợp sẽ khác nhau. Bởi lẽ, Activity trong Android được tổ chức theo stack và người dùng có thể quay trở lại cùng Activity đã được mở từ deep linking nhiều lần bằng nhiều tracking link, SDK cần cơ chế để thu thập tham số chính xác.
- Trường hợp Activity đích sử dụng chế độ singleTask
- Trường hợp Activity đích không sử dụng chế độ singleTask
[[인용:안내:보통]] Xác định launchMode như thế nào???
Trong file AndroidManifest.xml, xác định Activity được chỉ định nhận deep linking. Trong số các thuộc tính
của Activity đó, bạn có thể tìm thấy thuộc tính android:launchMode.
1. Trường hợp Activity đích sử dụng chế độ singleTask
Trong trường hợp này, Activity đích có thể hoạt động ở chế độ singleTask, làm theo hướng dẫn ở đây. Gọi hàm AdBrixRm.deeplinkEvent trong onNewIntent(). Chú ý, gọi hàm onNewIntent trong onCreate() để SDK ghi log sự kiện ngay cả khi DeeplinkOpenedActivity được khởi tạo lần đầu.
Mỗi khi Activity của ứng dụng được mở bởi phương thức deep linking, chúng ta cần gọi hàm setIntent để ứng dụng cập nhật intent với parameters mới.
class DeeplinkActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.deeplink_activity) onNewIntent(this.intent) } override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) setIntent(intent) AdBrixRm.deeplinkEvent(this) } }
[[인용:경고:보통]] * Toàn bộ hàm onNewIntent(), setIntent(), deeplinkEvent() phải được gọi theo đúng trình tự như trong ví dụ
Cài đặt android:scheme và android:host trong thẻ intent-filter của Activity đích. Mở file [AndroidManifest.xml > manifest > application], khai báo thông tin deep link:
<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>
Trong trường hợp marketer dùng Android App Link, [AndroidManifest.xml > manifest > application] cài đặt android:host với định dạng "your_appkey.adtouch.adbrix.io"
<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="https" android:host="your_appkey.adtouch.adbrix.io" /> </intent-filter>
[[인용:경고:보통]] Tham số your_appkey chính là App Key nhận được từ AdBrix Console.
2. Trường hợp Activity đích không sử dụng chế độ singleTask
Trong trường hợp này, vì lý do nào đó app không thể dùng chế độ android:launchMode="singleTask" cho Activity đích. Bạn sẽ cần sử dụng AbxDefaultDeeplinkActivity có sẵn trong AdBrix SDK cho mục đích phân tích sự kiện Deep Linking. Mở file AndroidManifest.xml, khai báo như code mẫu bên dưới. Thông tin android:scheme và android:host giống như trường hợp 1 trình bày ở trên.
Sau khi AbxDefaultDeeplinkActivity nhận parameters từ deep link, SDK sẽ redirect người dùng tới Activity đích trong app. Thông tin Activity đích cần được khai báo trong android:value của thẻ meta-data.
<activity
android:name="com.igaworks.v2.core.application.AbxDefaultDeeplinkActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
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" />
<!--Nhập thông tin scheme và host. Có thể định nghĩa nhiều scheme đồng thời ví dụ adbrix://, https:// -->
<data android:scheme="your_scheme" android:host="your_host" />
</intent-filter>
<!-- AbxDefaultDeeplinkActivity sẽ redirect người dùng tới path đích được định nghĩa trong android:value -->
<meta-data android:name="AbxRedirectActivity" android:value="com.your_company.app"/>
</activity>
Cài đặt logic nhận Deferred Deep Link
Deferred Deep Linking là trường hợp đặc biệt, redirect người dùng tới một Activity cụ thể theo phương thức deep linking tại thời điểm lần đầu tiên người dùng mở app. Chú ý, tính năng này giúp cải thiện trải nghiệm người dùng của app, chứ không ảnh hưởng tới báo cáo analytics trên AdBrix Console. Tính năng này hữu ích nếu ứng dụng cần nhận Deferred Deep Link để đưa người dùng tới màn hình promotion hay màn hình sản phẩm cụ thể người dùng đã xem trước đó khi mở app lần đầu.
Cách hoạt động như sau: Ban đầu, khi người dùng bấm vào banner trong promotion campaign, kích hoạt tracking link ( dạng download + deep link), do app chưa được cài nên người dùng được redirect tới app store. Sau khi cài app, AdBrix xác định người dùng cài app do đã click vào tracking link có sử dụng deep link từ trước. SDK sẽ trả về Deferred Deep Link cho app thông qua AdBrixRM.DeferredDeeplinkListener.
Tùy theo ứng dụng sử dụng custom Application class hay không, theo dõi hướng dẫn tích hợp bên dưới để cấu hình AdBrixRM.DeferredDeeplinkListener
1. Trường hợp sử dụng Custom Application Class
class MyApplication : Application(), AdBrixRm.DeferredDeeplinkListener { override fun onCreate() { super.onCreate() AbxActivityHelper.initializeSdk(applicationContext, "AppKey", "SecretKey"); if (Build.VERSION.SDK_INT >= 14) { registerActivityLifecycleCallbacks(AbxActivityLifecycleCallbacks()) AdBrixRm.setDeferredDeeplinkListener(this) } } override fun onReceiveDeferredDeeplink(urlStr: String) { Log.d("Deferred Deeplink : ", urlStr) } }
2. Trường hợp sử dụng AbxApplication
Cài đặt AdBrixRM.DeferredDeeplinkListener vào Main Activity (màn hình thông thường người dùng sẽ xem khi dùng app). Sau khi Main Activity nhận được Deferred Deep Link, người dùng sẽ được redirect tới Activity đích được cài đặt.
class MainActivity : Activity(), AdBrixRm.DeferredDeeplinkListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) AdBrixRm.setDeferredDeeplinkListener(this) } override fun onReceiveDeferredDeeplink(urlStr: String) { Log.d("Deferred Deeplink : ", urlStr) } }
[[인용:경고:보통]] Listener không được gọi!!!
Nếu không thấy DeferredDeeplinkListener được gọi, hãy kiểm tra:
1. Người dùng có được chuyển đổi từ tracking link hay không. (install attribution check)
2. Tracking link có hỗ trợ deep link hay không.
[[인용:경고:보통]] App mở 2 lần!!!
Trường hợp này có thể xảy ra khi người dùng thông qua tracking link (sử dụng deeplink) và cài ứng dụng trên Google Play Store, sau đó bấm nút CONTINUE trên Google Play Store để tiếp tục thay vì mở app từ icon ở màn hình Home. Khi đó người dùng được đưa trên Activity đích theo deep link được cài đặt qua tracking link theo tính năng Deferred Deep Link được hỗ trợ trên Google Play Store.
Để tránh việc mở Activity đích 2 lần, một lần từ phương thức Deferred Deep linking của Play Store và một lần từ DeferredDeeplinkListener, ứng dụng nên có logic để phòng việc này.
Phân tích in-app event
Adbrix có thể phân tích in-app event xảy là trong app và gửi event postback lại cho media để tối ưu hóa chiến dịch quảng cáo. Để thực hiện việc phân tích in-app event, sử dụng các hàm ghi log dữ liệu dưới đây. Ví dụ chỉ mang tính chất minh họa, tùy vào nhu cầu phân tích, bạn có thể ghi log sự kiện linh hoạt.
Adbrix hỗ trợ 5 nhóm event như sau:
- User Analysis
- Login / Logout Event
- User information
- Location information
- Custom Analysis
- General Analysis
- Registration/Signup
- App update
- User invitation
- Credit Usage
- Purchase
- Commerce Event Analysis
- Home view
- Category view
- Product view
- Add to cart
- Add to wishlist
- Review order
- Refund
- Product search
- Product share
- Product listview
- Cart view
- Payment information
- Game Analysis
- Tutorial complete
- Create character
- Stage complete
- Level up
User Analytics
Login / Logout Event
Phân tích sự kiện người dùng login/logout.
fun loginAndLogoutEvent() { if(isLogin){ // Khi người dùng login thành công, "user_1234" là id của người dùng được ghi lại AdBrixRm.login("user_1234"); }else{ AdBrixRm.logout(); }
}
* Để đảm bảo tính bảo mật thông tin cá nhân, user_id ( ví dụ: phone number, email) nên được mã hóa (BASE64, MD5, SHA1, v.v)
User Properties
Phân tích thông tin liên quan tới người dùng như tuổi, giới tính, tình trạng kết hôn v.v
fun userPropertyUpdate() {
// Age
AdBrixRm.setAge(30);
// Gender
AdBrixRm.setGender(AdBrixRm.AbxGender.MALE);
// Other user properties
val userProperties = AdBrixRm.UserProperties()
.setAttrs("user_nick", "peterPark")
.setAttrs("place","Seoul")
.setAttrs("Height",180)
.setAttrs("married",false);
AdBrixRm.saveUserProperties(userProperties)
}
[[인용:위험:보통]] Chú ý khi thiết lập UserProperty và AttrModel
1. Attribute có dạng Key/Value. SDK sẽ không xử lý số attribute nhiều hơn 100.
2. Key có kiểu dữ liệu string, không quá 256 kí tự. Key chỉ chứa kí tự trong bảng chữ cái tiếng Anh, viết thường , chữ số. (Không hỗ trợ chữ viết hoa và kí tự đặc biệt ngoại trừ gạch ngang: - và gạch dưới: _)
3. Giá trị của Value không được quá 1024 byte.
Location Data
Nếu app cần phân tích thông tin vị trí người dùng, bạn cần activate tính năng này.
fun locationUpdate() {
// Update latitude longitude data
AdBrixRm.setEnableLocationListening(true);
}
* Để SDK thu thập thông tin định vị, cần thiết lập permissionandroid.permission.ACCESS_COARSE_LOCATION
trong file [AndroidManifest > manifest].
Custom Event
In-app event là những sự kiện xảy ra trong app, chúng ta cần ghi log những sự kiện quan trọng trong app để sử dụng cho mục đích phân tích tối ưu app. Trước khi triển khai code, bạn cần lên kế hoạch event gì cần được ghi lại, hiểu được mục tiêu của việc ghi log là gì. Sử dụng hàm AdBrixRm.event để đưa event lên AdBrix server.
Chú ý: Trong mục này, chúng ta đề cập tới các sự kiện đặc trưng cho app của bạn, sử dụng hàm ghi event tổng quát là AdBrixRm.event. Các event liên quan tới commerce được trình bày riêng ở mục khác. Các event thường gặp ở hầu hết các ứng dụng có những hàm riêng đã được định nghĩa sẵn trong AdBrix SDK cũng sẽ được trình bày bên dưới ở mục riêng.
Ví dụ một số in-app event như: "Button Click", "Character Creation", "Tutorial Complete", "Level Up". Mỗi event lại có những thuộc tính để mô tả đặc điểm của event đó, sử dụng AdBrixRm.AttrModel để lưu những giá trị này.
fun userCustomEvent() {
// Addtional event parameter
AdBrixRm.AttrModel eventAttr = new AdBrixRm.AttrModel()
.setAttrs("address","New York")
.setAttrs("age", 27)
.setAttrs("firsttime",true);
// Click a button "Invite a friend"
AdBrixRm.event("invite_button_click", eventAttr);
// Complete "Character creation"
AdBrixRm.event("create_character_complete", eventAttr);
// Complete "Tutorial view"
AdBrixRm.event("tutorial_complete", eventAttr);
// Achieve "Level 10"
AdBrixRm.event("level_10", eventAttr);
}
[[인용:위험:보통]] AdBrix chỉ hỗ trợ tối đa 100 custom event.
※ Chú ý
Custom event cần được tổ chức hợp lý tiện cho việc phân tích. Ví dụ dưới đây cho thấy việc ghi log sự kiện thay đổi "Level" của người dùng trong app không hiệu quả. Cách ghi log như này không giúp cho việc phân tích, đồng thời rất khó để quản lý.
AdBrixRm.event("custom:Lev-37 cleared,clearTime:00:00:39.2343535")
AdBrix đánh custom event name theo index để phân tích và truy vấn dữ liệu. Thuộc tính của event giúp marketer theo dõi event ở những dimension khác nhau. Ví dụ dưới đây về việc viết lại sự kiện người dùng lên level mới trong game ở trên.
// Addtional event parameter api
val eventAttr = AdBrixRm.AttrModel()
.setAttrs("level",37)
.setAttrs("clear_time_mile", 39238);
// set custom event with addtional event parameter
AdBrixRm.event("level_clear", eventAttr);
Common/ General Event Analytics
AdBrixRm.event cung cấp hàm ghi custom event mà bạn có sử dụng linh hoạt. Bên cạnh đó, AdBrix cung cấp các hàm ghi những event thường gặp ở hầu hết các ứng dụng để tiện cho việc tích hợp và phân tích.
Trong mục này, chúng ta sẽ cùng xem các hàm liên quan tới sự kiện:
- Registration/ Sign Up
- App Update
- User Invitation
- Credit Usage
- Purchase
* Chú ý: Để theo dõi báo cáo về doanh thu theo kênh quảng cáo, bạn phải tích hợp sự kiện "Purchase"
Registration/ Sign Up
Ví dụ về việc phân tích sự kiện đăng kí hội viên sử dụng hàm AbxCommon.signUp.
Thông tin liên quan tới sự kiện được nhóm trong AdBrixRm.CommonProperties.SignUp class.
void userRegister() {
try {
// Registered user information
val signUpAttr = AdBrixRm.AttrModel()
.setAttrs("user_id", "user1234")
.setAttrs("gender", "male")
.setAttrs("age", 36)
.setAttrs("married", true)
val properties = AdBrixRm.CommonProperties.SignUp()
.setAttrModel(signUpAttr)
//Call registration API
AbxCommon.signUp(AdBrixRm.CommonSignUpChannel.Google, properties)
} catch (e: Exception) {
e.printStackTrace()
}
}
App Update
Phân tích event người dùng update ứng dụng sử dụng hàm AbxCommon.appUpdate.
Thông tin liên quan tới sự kiện được nhóm trong AdBrixRm.CommonProperties.AppUpdate class.
void appUpdate() {
try {
// App update information
val appUpdateAttr = AdBrixRm.AttrModel()
.setAttrs("user_id", "user1234")
.setAttrs("gender", "male")
.setAttrs("age", 36)
.setAttrs("married", true)
val properties = AdBrixRm.CommonProperties.AppUpdate()
.setCurrVersion("1.2.0")
.setPrevVersion("1.1.0")
.setAttrModel(appUpdateAttr)
//Call app update AP
AbxCommon.appUpdate(properties)
} catch (e: Exception) {
e.printStackTrace()
}
}
User Invitation
Phân tích sự kiện gửi invitation dùng hàm AbxCommon.invite
Thông tin liên quan tới sự kiện được nhóm trong AdBrixRm.CommonProperties.Invite class
void userInvite() {
try {
/// User invitation information
val inviteAttr = AdBrixRm.AttrModel()
.setAttrs("user_id", "user1234")
.setAttrs("gender", "male")
.setAttrs("age", 36)
.setAttrs("married", true)
val properties = AdBrixRm.CommonProperties.Invite()
.setAttrModel(inviteAttr)
// Call user invitation API
AbxCommon.invite(AdBrixRm.CommonInviteChannel.Facebook, properties)
} catch (e: Exception) {
e.printStackTrace()
}
}
Credit Usage
Gọi khi người dùng sử dụng credit trong app với hàm AbxCommon.useCredit.
Thông tin liên quan tới sự kiện được nhóm trong AdBrixRm.CommonProperties.UseCredit class.
void usingCredit() {
try {
// Credit usage information
val useCreaditAttr = AdBrixRm.AttrModel()
.setAttrs("user_id", "user1234")
.setAttrs("gender", "male")
.setAttrs("age", 36)
.setAttrs("money", 1000.00)
.setAttrs("married", true)
val properties = AdBrixRm.CommonProperties.UseCredit()
.setAttrModel(useCreaditAttr)
//Call credit usage
AbxCommon.useCredit(properties)
} catch (e: Exception) {
e.printStackTrace()
}
}
Purchase
Phân tích purchase event sử dụng hàm AbxCommon.purchase.
Thuộc tính của purchase event lưu trong AdBrixRm.CommonProperties.Purchase class (Wrapper class, vai trò giống như AttrModel của custom event).
Hàm AdBrixRm.Common.purchase có thể nhận tham số là danh sách sản phẩm hàng hóa mà kiểu dữ liệu là arrayList. Thông tin mỗi sản phẩm được nhóm trong AdBrixRm.CommerceProductModel class.
Ý nghĩa của tham số:
- order id : (yêu cầu bắt buộc) mã đơn hàng
- product id : (yêu cầu bắt buộc) mã sản phẩm
- product name : (yêu cầu bắt buộc) tên sản phẩm
- price : (yêu cầu bắt buộc) đơn giá
- quantity : (yêu cầu bắt buộc) số lượng đặt hàng
- discount : (thuộc tính không bắt buộc) số tiên giảm giá
- currency string : (thuộc tính không bắt buộc) đơn vị tiền tệ
- category : (thuộc tính không bắt buộc) hạng mục sản phẩm
- extra attr : (thuộc tính không bắt buộc) thuộc tính sản phẩm
- delivery charge : (thuộc tính không bắt buộc) phí vận chuyển
- payment method : (thuộc tính không bắt buộc) phương thức thanh toán
Để ghi lại thuộc tính của nhóm sản phẩm, sử dụng AdBrixRm.CommerceCategoriesModel class
fun purchaseEvent() {
try {
// product category
val productCategory = AdBrixRm.CommerceCategoriesModel()
.setCategory("category 1")
.setCategory("category 2")
.setCategory("category 3")
.setCategory("category 4")
.setCategory("category 5")
//product additional info
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)
// event additional info
val purchaseAttr = AdBrixRm.AttrModel()
.setAttrs("grade", "vip")
.setAttrs("howmany_buy", 36)
.setAttrs("discount", true)
val purchaseat = AdBrixRm.CommonProperties.Purchase()
.setAttrModel(purchaseAttr)
// product info
val productModel1 = AdBrixRm.CommerceProductModel()
.setProductID("productid_1")
.setProductName("productName1")
.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("productName1")
.setCategory(productCategory)
.setCurrency(AdBrixRm.Currency.KR_KRW)
.setDiscount(10000.00)
.setAttrModel(productAttr2)
.setPrice(100000.00)
.setQuantity(1)
// product info arrayList
val proList = ArrayList()
proList.add(productModel1)
proList.add(productModel2)
// purchase event
AbxCommon.purchase("orderid_1", proList, 0.00, 2500.00, AdBrixRm.CommercePaymentMethod.CreditCard, purchaseat)
} catch (e: Exception) {
e.printStackTrace()
}
}
Commerce Event Analytics
Phân tích các sự kiện liên quan tới mua bán sản phẩm như xem chi tiết sản phẩm, bỏ vào giỏ hàng v.v
AdBrix cung cấp những hàm sau đây:
- Home/ Main page view
- Category page/ event page view
- Product detail view
- Add to cart
- Add to wishlist
- View an order
- Cancel an order
- Search a product
- View product list
- Share the product
- View cart
- Fill in payment information
Home/ Main Page View
fun viewHomeEvent(){
// Analyze the event that users view home/ main page
AbxCommerce.viewHome()
}
Category / Event Page View
Phân tích sự kiện người dùng vào trang Category/ Event Page dùng hàm AbxCommerce.categoryView.
Thông tin liên quan tới sản phẩm thể hiện trong AdBrixRm.CommerceProductModel class.
- product id : (yêu cầu bắt buộc) mã sản phẩm
- product name : (yêu cầu bắt buộc) tên sản phẩm
- price : (yêu cầu bắt buộc) đơn giá
- quantity : (yêu cầu bắt buộc) số lượng sản phẩm
- discount : (thuộc tính không bắt buộc) tiền giảm giá
- currency string : (thuộc tính không bắt buộc) đơn vị tiền tệ
- category : (thuộc tính không bắt buộc) hạng mục sản phẩm
- extra attr : (thuộc tính không bắt buộc) thuộc tính sản phẩm
fun viewCategoryEvent(){
// product category
val productCategory = AdBrixRm.CommerceCategoriesModel()
.setCategory("category 1")
.setCategory("category 2")
.setCategory("category 3")
.setCategory("category 4")
.setCategory("category 5")
//product additional info
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)
// event additional info
val commerceAttr = AdBrixRm.AttrModel()
.setAttrs("grade", "vip")
.setAttrs("howmany_buy", 36)
.setAttrs("discount", true)
// product info
val productModel1 = AdBrixRm.CommerceProductModel()
.setProductID("productid_1")
.setProductName("productName1")
.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("productName1")
.setCategory(productCategory)
.setCurrency(AdBrixRm.Currency.KR_KRW)
.setDiscount(10000.00)
.setAttrModel(productAttr2)
.setPrice(100000.00)
.setQuantity(1)
// product info arrayList
val proList = ArrayList()
proList.add(productModel1)
proList.add(productModel2)
// Analyze category view events
AbxCommerce.categoryView(productCategory, proList, commerceAttr)
}
Product Detail View
Phân tích sự kiện người dùng xem chi tiết một sản phẩm dùng hàm AbxCommerce.productView.
Thông tin liên quan tới sản phẩm thể hiện trong AdBrixRm.CommerceProductModel class.
- product id :(yêu cầu bắt buộc) mã sản phẩm
- product name : (yêu cầu bắt buộc) tên sản phẩm
- price : (yêu cầu bắt buộc) đơn giá
- quantity : (yêu cầu bắt buộc) số lượng sản phẩm
- discount : (thuộc tính không bắt buộc) số tiên giảm giá
- currency string : (thuộc tính không bắt buộc) đơn vị tiền tệ
- category : (thuộc tính không bắt buộc) hạng mục sản phẩm
- extra attr : (thuộc tính không bắt buộc) thuộc tính sản phẩm
fun viewProductDetailEvent(){
try {
// product category
val productCategory = AdBrixRm.CommerceCategoriesModel()
.setCategory("category 1")
.setCategory("category 2")
.setCategory("category 3")
.setCategory("category 4")
.setCategory("category 5")
//product additional info
val productAttr1 = AdBrixRm.AttrModel()
.setAttrs("size", 25)
.setAttrs("color", "blue")
.setAttrs("vip", false)
// event additional info
val commerceAttr = AdBrixRm.AttrModel()
.setAttrs("grade", "vip")
.setAttrs("howmany_buy", 36)
.setAttrs("discount", true)
// product info
val productModel1 = AdBrixRm.CommerceProductModel()
.setProductID("productid_1")
.setProductName("productName1")
.setCategory(productCategory)
.setCurrency(AdBrixRm.Currency.KR_KRW)
.setDiscount(5000.00)
.setAttrModel(productAttr1)
.setPrice(50000.00)
.setQuantity(1)
// Analyze product detail view event
AbxCommerce.productView(productModel1, commerceAttr)
} catch (e: Exception) {
e.printStackTrace()
}
}
Add to Cart
Phân tích sự kiện đưa danh sách sản phẩm vào giỏ hàng dùng hàm AbxCommerce.addToCart.
Thông tin liên quan tới sản phẩm thể hiện trong AdBrixRm.CommerceProductModel class.
- product id : (yêu cầu bắt buộc) mã sản phẩm
- product name : (yêu cầu bắt buộc) tên sản phẩm
- price : (yêu cầu bắt buộc) đơn giá
- quantity : (yêu cầu bắt buộc) số lượng đặt hàng
- discount : (thuộc tính không bắt buộc) số tiên giảm giá
- currency string : (thuộc tính không bắt buộc) đơn vị tiền tệ
- category : (thuộc tính không bắt buộc) hạng mục sản phẩm
- extra attr : (thuộc tính không bắt buộc) thuộc tính sản phẩm
fun addToCartEvent(){
try {
// product category
val productCategory = AdBrixRm.CommerceCategoriesModel()
.setCategory("category 1")
.setCategory("category 2")
.setCategory("category 3")
.setCategory("category 4")
.setCategory("category 5")
//product additional info
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)
// event additional info
val commerceAttr = AdBrixRm.AttrModel()
.setAttrs("grade", "vip")
.setAttrs("howmany_buy", 36)
.setAttrs("discount", true)
// product info
val productModel1 = AdBrixRm.CommerceProductModel()
.setProductID("productid_1")
.setProductName("productName1")
.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("productName1")
.setCategory(productCategory)
.setCurrency(AdBrixRm.Currency.KR_KRW)
.setDiscount(10000.00)
.setAttrModel(productAttr2)
.setPrice(100000.00)
.setQuantity(1)
// product info arrayList
val proList = ArrayList()
proList.add(productModel1)
proList.add(productModel2)
// Analyze add-to-cart event
AbxCommerce.addToCart(proList, commerceAttr)
} catch (e: Exception) {
e.printStackTrace()
}
}
Add to Wishlist
Phân tích sự kiện đưa một sản phẩm vào wishList dùng hàm AbxCommerce.addToWishList.
Thông tin liên quan tới sản phẩm thể hiện trong AdBrixRm.CommerceProductModel class.
fun addToWishListEvent(){
try {
// product category
val productCategory = AdBrixRm.CommerceCategoriesModel()
.setCategory("category 1")
.setCategory("category 2")
.setCategory("category 3")
.setCategory("category 4")
.setCategory("category 5")
//product additional info
val productAttr1 = AdBrixRm.AttrModel()
.setAttrs("size", 25)
.setAttrs("color", "blue")
.setAttrs("vip", false)
// event additional info
val commerceAttr = AdBrixRm.AttrModel()
.setAttrs("grade", "vip")
.setAttrs("howmany_buy", 36)
.setAttrs("discount", true)
// product info
val productModel1 = AdBrixRm.CommerceProductModel()
.setProductID("productid_1")
.setProductName("productName1")
.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()
}
}
View an Order
Sự kiện người dùng kiểm tra lại đơn hàng trước sự kiện đặt mua dùng hàm AbxCommerce.reviewOrder.
Thông tin đặt hàng và sản phẩm bao gồm:
- order id : (yêu cầu bắt buộc) mã đơn hàng
- product id : (yêu cầu bắt buộc) mã sản phẩm
- product name : (yêu cầu bắt buộc) tên sản phẩm
- price : (yêu cầu bắt buộc) đơn giá
- quantity : (yêu cầu bắt buộc) số lượng đặt hàng
- discount : (thuộc tính không bắt buộc) số tiên giảm giá
- currency string : (thuộc tính không bắt buộc) đơn vị tiền tệ
- category : (thuộc tính không bắt buộc) hạng mục sản phẩm
- extra attr : (thuộc tính không bắt buộc) thuộc tính sản phẩm
- delivery charge : (thuộc tính không bắt buộc) phí vận chuyển
fun reviewOrderEvent(){
try {
// product category
val productCategory = AdBrixRm.CommerceCategoriesModel()
.setCategory("category 1")
.setCategory("category 2")
.setCategory("category 3")
.setCategory("category 4")
.setCategory("category 5")
//product additional info
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)
// event additional info
val commerceAttr = AdBrixRm.AttrModel()
.setAttrs("grade", "vip")
.setAttrs("howmany_buy", 36)
.setAttrs("discount", true)
// product info
val productModel1 = AdBrixRm.CommerceProductModel()
.setProductID("productid_1")
.setProductName("productName1")
.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("productName1")
.setCategory(productCategory)
.setCurrency(AdBrixRm.Currency.KR_KRW)
.setDiscount(10000.00)
.setAttrModel(productAttr2)
.setPrice(100000.00)
.setQuantity(1)
// product info arrayList
val proList = ArrayList()
proList.add(productModel1)
proList.add(productModel2)
// Analyze view-an-order event
AbxCommerce.reviewOrder("orderid_11", proList, 0.00, 2500.00, commerceAttr)
} catch (e: Exception) {
e.printStackTrace()
}
}
Cancel an Order / Refund
Sự kiện người dùng yêu cầu hủy đơn hàng hoặc hoàn tiền sử dụng hàm AbxCommerce.refund.
Thông tin sản phẩm và đặt hàng gồm:
- order id : (yêu cầu bắt buộc) mã đơn hàng
- product id : (yêu cầu bắt buộc) mã sản phẩm
- product name : (yêu cầu bắt buộc) tên sản phẩm
- price : (yêu cầu bắt buộc) đơn giá
- quantity :(yêu cầu bắt buộc) số lượng đặt hàng
- discount : (thuộc tính không bắt buộc) số tiên giảm giá
- currency string : (thuộc tính không bắt buộc) đơn vị tiền tệ
- category : (thuộc tính không bắt buộc) hạng mục sản phẩm
- extra attr : (thuộc tính không bắt buộc) thuộc tính sản phẩm
- penalty charge : (thuộc tính không bắt buộc) tiền hủy đơn
fun refundOrderEvent(){
try {
// product category
val productCategory = AdBrixRm.CommerceCategoriesModel()
.setCategory("category 1")
.setCategory("category 2")
.setCategory("category 3")
.setCategory("category 4")
.setCategory("category 5")
//product additional info
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)
// event additional info
val commerceAttr = AdBrixRm.AttrModel()
.setAttrs("grade", "vip")
.setAttrs("howmany_buy", 36)
.setAttrs("discount", true)
// product info
val productModel1 = AdBrixRm.CommerceProductModel()
.setProductID("productid_1")
.setProductName("productName1")
.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("productName1")
.setCategory(productCategory)
.setCurrency(AdBrixRm.Currency.KR_KRW)
.setDiscount(10000.00)
.setAttrModel(productAttr2)
.setPrice(100000.00)
.setQuantity(1)
// product info arrayList
val proList = ArrayList()
proList.add(productModel1)
proList.add(productModel2)
// Analyze order cancelation/ refund event
AbxCommerce.refund("orderid_22", proList, 19000.00, commerceAttr)
} catch (e: Exception) {
e.printStackTrace()
}
}
Search a Product
Phân tích sự kiện người dùng tìm kiếm sản phẩm dùng hàm AbxCommerce.search
Thông tin sản phẩm và kết quả tìm kiếm gồm
- keyword : (yêu cầu bắt buộc) từ khóa tìm kiếm
- product id : (yêu cầu bắt buộc) mã sản phẩm
- product name : (yêu cầu bắt buộc) tên sản phẩm
- price : (yêu cầu bắt buộc) đơn giá
- quantity :(yêu cầu bắt buộc) số lượng đặt hàng
- discount : (thuộc tính không bắt buộc) số tiên giảm giá
- currency string : (thuộc tính không bắt buộc) đơn vị tiền tệ
- category : (thuộc tính không bắt buộc) hạng mục sản phẩm
fun searchProductEvent(){
// product category
val productCategory = AdBrixRm.CommerceCategoriesModel()
.setCategory("category 1")
.setCategory("category 2")
.setCategory("category 3")
.setCategory("category 4")
.setCategory("category 5")
//product additional info
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)
// event additional info
val commerceAttr = AdBrixRm.AttrModel()
.setAttrs("grade", "vip")
.setAttrs("howmany_buy", 36)
.setAttrs("discount", true)
// product info
val productModel1 = AdBrixRm.CommerceProductModel()
.setProductID("productid_1")
.setProductName("productName1")
.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("productName1")
.setCategory(productCategory)
.setCurrency(AdBrixRm.Currency.KR_KRW)
.setDiscount(10000.00)
.setAttrModel(productAttr2)
.setPrice(100000.00)
.setQuantity(1)
// product info arrayList
val proList = ArrayList()
proList.add(productModel1)
proList.add(productModel2)
// Analyze product-search event
AbxCommerce.search("search_word", proList, commerceAttr)
}
Share a Product
Phân tích sự kiện người dùng chia sẻ sản phẩm với hàm AbxCommerce.share.
Thông tin sản phẩm được chia sẻ gồm
- product id : (yêu cầu bắt buộc) mã sản phẩm
- product name : (yêu cầu bắt buộc) tên sản phẩm
- price : (yêu cầu bắt buộc) đơn giá
- quantity :(yêu cầu bắt buộc) số lượng đặt hàng
- discount : (thuộc tính không bắt buộc) số tiên giảm giá
- currency string : (thuộc tính không bắt buộc) đơn vị tiền tệ
- category : (thuộc tính không bắt buộc) hạng mục sản phẩm
- extra attr : (thuộc tính không bắt buộc) thuộc tính sản phẩm
fun shareProductEvent(){
// product category
val productCategory = AdBrixRm.CommerceCategoriesModel()
.setCategory("category 1")
.setCategory("category 2")
.setCategory("category 3")
.setCategory("category 4")
.setCategory("category 5")
//product additional info
val productAttr1 = AdBrixRm.AttrModel()
.setAttrs("size", 25)
.setAttrs("color", "blue")
.setAttrs("vip", false)
// event additional info
val commerceAttr = AdBrixRm.AttrModel()
.setAttrs("grade", "vip")
.setAttrs("howmany_buy", 36)
.setAttrs("discount", true)
// product info
val productModel1 = AdBrixRm.CommerceProductModel()
.setProductID("productid_1")
.setProductName("productName1")
.setCategory(productCategory)
.setCurrency(AdBrixRm.Currency.KR_KRW)
.setDiscount(5000.00)
.setAttrModel(productAttr1)
.setPrice(50000.00)
.setQuantity(1)
// Analyze share-a-product event
AbxCommerce.share(AdBrixRm.CommerceSharingChannel.KakaoStory, productModel1, commerceAttr)
}
View a Product List
Phân tích sự kiện người dùng xem một danh sách sản phẩm với hàm AbxCommerce.listView
fun listViewProductsEvent(){
// product category
val productCategory = AdBrixRm.CommerceCategoriesModel()
.setCategory("category 1")
.setCategory("category 2")
.setCategory("category 3")
.setCategory("category 4")
.setCategory("category 5")
//product additional info
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)
// event additional info
val commerceAttr = AdBrixRm.AttrModel()
.setAttrs("grade", "vip")
.setAttrs("howmany_buy", 36)
.setAttrs("discount", true)
// product info
val productModel1 = AdBrixRm.CommerceProductModel()
.setProductID("productid_1")
.setProductName("productName1")
.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("productName1")
.setCategory(productCategory)
.setCurrency(AdBrixRm.Currency.KR_KRW)
.setDiscount(10000.00)
.setAttrModel(productAttr2)
.setPrice(100000.00)
.setQuantity(1)
// product info arrayList
val proList = ArrayList()
proList.add(productModel1)
proList.add(productModel2)
//Analyze view a product list event
AbxCommerce.listView(proList, commerceAttr)
}
View a Cart
Sự kiện người dùng xem giỏ hàng với hàm AbxCommerce.cartView
fun cartViewProductsEvent(){
// product category
val productCategory = AdBrixRm.CommerceCategoriesModel()
.setCategory("category 1")
.setCategory("category 2")
.setCategory("category 3")
.setCategory("category 4")
.setCategory("category 5")
//product additional info
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)
// event additional info
val commerceAttr = AdBrixRm.AttrModel()
.setAttrs("grade", "vip")
.setAttrs("howmany_buy", 36)
.setAttrs("discount", true)
// product info
val productModel1 = AdBrixRm.CommerceProductModel()
.setProductID("productid_1")
.setProductName("productName1")
.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("productName1")
.setCategory(productCategory)
.setCurrency(AdBrixRm.Currency.KR_KRW)
.setDiscount(10000.00)
.setAttrModel(productAttr2)
.setPrice(100000.00)
.setQuantity(1)
// product info arrayList
val proList = ArrayList()
proList.add(productModel1)
proList.add(productModel2)
//Analyze cart viewing event
AbxCommerce.cartView(proList, commerceAttr)
}
Fill in Payment Information
Phân tích sự kiện người dùng nhập thông tin thanh toán dùng hàm AbxCommerce.paymentInfoAdded
fun paymentInfoAddedEvent(){
//Event of filling in payment information
val commerceAttr = AdBrixRm.AttrModel()
.setAttrs("grade", "vip")
.setAttrs("card","kcard")
.setAttrs("howmany_buy", 36)
.setAttrs("discount", true)
AbxCommerce.paymentInfoAdded(commerceAttr)
}
Gaming Event Analytics
Phân tích sự kiện xảy ra trong game
AdBrix cung cấp sẵn những hàm để ghi những sự kiện sau:
- Tutorial completion
- Character creation
- Stage cleared
- Level achieved
Tutorial Completion
Phân tích sự kiện người chơi hoàn thành Tutorial.
Sử dụng GameProperies.TutorialComplete class để lưu thông tin thuộc tính sự kiện hoàn thành Tutorial.
- setIsSkip : (yêu cầu bắt buộc) Giá trị boolean thể hiện việc bỏ qua(skip) màn tutorial
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)
//Call tutorial completion event
AbxGame.tutorialComplete(tutorialProperties)
}
Character Creation
Phân tích sự kiện tạo ra nhân vật trong game.
Sử dụng GameProperies.CharacterCreated class để nhóm thuộc tính của event này
fun characterCreatedEvent(){
val gameAttr = AdBrixRm.AttrModel()
.setAttrs("grade", "vip")
.setAttrs("level", 36)
.setAttrs("google_vip", true)
val characterProperties = AdBrixRm.GameProperties.CharacterCreated()
.setAttrModel(gameAttr)
//Call character creation event
AbxGame.characterCreated(characterProperties)
}
Stage Cleared
Phân tích sự kiện người chơi qua bàn.
Sử dụng GameProperies.StageCleared class để lưu thông tin thuộc tính sự kiện này.
- setStageName : (yêu cầu bắt buộc) Tên của bàn/ stage trong game
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) }
Level Achieved
Phân tích sự kiện người chơi lên level mới.
Sử dụng GameProperies.LevelAchieved class để lưu thuộc tính của event.
- setLevel : (yêu cầu bắt buộc) Cấp độ level (1~10000)
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) //Call level achieved event AbxGame.levelAchieved(leveProperties) }
Bình luận
0 bình luận
Bài viết bị đóng bình luận.