Tích hợp AdBrix IOS SDK [Swift]
Theo dõi
Quick Start
Hướng dẫn cài đặt SDK cho iOS14
[[인용:위험:작게]] Ngày 23/10/2020 Adbrix SDK đã được cập nhật trên Cocoapods
(Update version: 1.6.5230) Hỗ trợ Xcode 12 và iOS 14. Đồng thời hỗ trợ X86_64 Simulator.
System Requirement
Build Tool : Xcode version mới nhất.
Chú ý : AdBrix SDK được viết bằng Swift. Vì thế ứng dụng của bạn cũng cần hỗ trợ Swift Library version mới nhất. (Latest version: Swift 5.3)
Xem chi tiết Release Note tại đây.
[[인용:위험:작게]] Ra ngày 2019.9.20, AdBrix SDK version 1.5.8 chạy trên Xcode 11 / iOS 13.
Nếu sử dụng Xcode 10, thông qua Cocoapods hãy chọn version 1.5.6.
pod 'AdBrixRemastered', '1.5.6'
Thông qua CocoaPods để tải SDK
Cấu hình CocoaPods
Sử dụng CocoaPods, cấu hình file Podfile chúng ta có thể tải SDK tự động.
Cài đặt CocoaPods
Nếu chưa cài CocoaPods, trên terminal của Mac OSX cài CocoaPods bằng lệnh:
$ sudo gem install cocoapods
Sau khi cài xong, kiểm tra màn hình kết quả.
... Parsing documentation for cocoapods-1.5.0 Installing ri documentation for cocoapods-1.5.0 Done installing documentation for cocoapods-core, cocoapods-downloader, molinillo, nanaimo, xcodeproj, cocoapods after 9 seconds 6 gems installed
Khởi tạo CocoaPods
Sau khi cài xong CocoaPods, khởi tạo công cụ:
$ pod setup
Khi hoàn thành khởi tạo, kết quả như sau:
... Resolving deltas: 100% (518/518), completed with 177 local objects. From https://github.com/CocoaPods/Specs 8369a675212..ceea3be18e7 master -> origin/master $ /usr/bin/git -C /Users/username/.cocoapods/repos/master rev-parse --abbrev-ref HEAD master $ /usr/bin/git -C /Users/username/.cocoapods/repos/master reset --hard origin/master HEAD is now at ceea3be18e7 [Add] YTX_iOS_IM_SDK 0.0.7 Setup completed
Tạo file Podfile
Trong folder của dự án, tạo file Podfile bằng lệnh:
$ pod init
Soạn thảo nội dung Podfile
Dùng lệnh vi để soạn thảo nội dung Podfile như bên dưới để khải báo AdBrix SDK.
Sau khi soản thảo xong, bấm Esc và Shift+z 2 lần để kết thúc terminal.
$ vi Podfile
platform :ios, '8.0' target "myXcodeProject" do pod 'AdBrixRemastered' end
* platform: con số có ý nghĩa là version của HĐH ios tối thiểu mà XCode hỗ trợ
* Khi sử dụng text editor, có thể xảy ra lỗi encoding.
*. Từ version 1.2.9, tên thư viện sử dụng trong pod được thay đổi thành AdBrixRemastered.
SDK Pod Install
Trên terminal, chạy lệnh sau để cài adbrix SDK.
$ pod install
* TroubleShooting!!! Khi xảy ra lỗi pod install error, hãy chạy lệnh "pod setup".
SDK Pod Update
Nếu adbrix SDK được cài từ trước, khi cập nhật version mới, chạy lệnh sau:
$ pod setup $ pod update
Open XCode Project
Khi cài xong AdBrix SDK, dùng terminal mở file {Project_name}.xcworkspace. Dùng XCode, có thể kiểm tra adbrix pods đã cài SDK thành công.
$ open myXcodeProject.xcworkspace
Thêm framework cần thiết
Để adbrix SDK hoạt động, cần cài thêm iAd framework.
Từ [General > Linked Frameworks and Libraries] bấm dấu cộng (+) để thêm "iAd.framework".
Cấu hình Swift Library
adbrix SDK được viết bằng Swift nên cần cấu hình Xcode như sau.
Trong mục [Build Settings > Always Embed Swift Standard Libraries], chọn 'yes'.
Cài đặt Apple IDFA
Để sử dụng tính năng adbrix Attribution, cần sử dụng Apple IDFA.
Từ file [AppDelegate.m > application: didFinishLaunchingWithOptions:], cấu hình IDFA:
import AdSupport import AdBrixRM @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? //Swift Version < 4.2 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. // Tạo AdBrixRm instance let adBrix = AdBrixRM.getInstance if ((NSClassFromString("ASIdentifierManager")) != nil) { let ifa :UUID = ASIdentifierManager.shared().advertisingIdentifier; // Truyền IDFA cho AdBrix SDK adBrix.setAppleAdvertisingIdentifier(ifa.uuidString) } return true } // Swift Version >= 4.2 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Tạo ra AdBrixRm let adBrix = AdBrixRM.getInstance if ((NSClassFromString("ASIdentifierManager")) != nil) { let ifa :UUID = ASIdentifierManager.shared().advertisingIdentifier; // Truyền IDFA cho AdBrix SDK adBrix.setAppleAdvertisingIdentifier(ifa.uuidString) } return true } }
Cài đặt App Key và Secret Key
adbrix console cung cấp 2 khoá này cho mỗi app.
import AdBrixRM //Swift Version < 4.2 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let adBrix = AdBrixRM.getInstance // Cài đặt adbrix app key và secret key adBrix.initAdBrix(appKey: "your_app_key", secretKey: "your_secret_key") return true } //Swift Version >= 4.2 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { let adBrix = AdBrixRM.getInstance // Cài đặt adbrix app key và secret key adBrix.initAdBrix(appKey: "your_app_key", secretKey: "your_secret_key") return true }
[[인용:안내:보통]]App Key và Secret Key
_ Sử dụng để phân biệt từng app trên AdBrix.
_ Một key có thể dùng cho cả 2 platform là Android, iOS.
_ Khi tích hợp SDK, giá trị khoá này tham khảo trên AdBrix Consol
Cách tìm App Key và Secret Key / Đi tới AdBrix Console
Bắt đầu với Sample Project
adbrix cung cấp một số project có cài sẵn SDK. Tham khảo theo link bên dưới.
[adbrix Swift Sample Project link]
[adbrix Objective-C Sample Project link]
Cài đặt SDK bổ sung
Sau khi cài đặt xong hạng mục cơ bản của adbrix SDK, tiến hành thêm các bước tích hợp sau.
- Log level setup
- Event upload cycle setup
- GDPR setup
- Deeplink setup
Log Level Setup
Cài đặt cách adbrix SDK xuất log message phục vụ cho việc debug.
Log Level 1 (NONE) sẽ không xuất log message. Khi cài đặt Level 2 ~ 6, toàn bộ log ở mức thấp hơn sẽ được xuất ra. Có 6 mức Log Level mức ưu tiên từ thấp tới cao.
- AdBrixRM.AdBrixLogLevel.NONE : Không xuất SDK log message.
- AdBrixRM.AdBrixLogLevel.TRACE : Chỉ xuất những log cơ bản TRACE level.
- AdBrixRM.AdBrixLogLevel.DEBUG : Bao gồm cả log message ở TRACE level. Tại DEBUG level, có thể xem thông tin cơ bản về hoạt động của SDK.
- AdBrixRM.AdBrixLogLevel.INFO : Bao gồm cả log message ở TRACE, DEBUG level. Tại Level INFO, có thể xem được log của database operation, network v.v.
- AdBrixRM.AdBrixLogLevel.WARNING : Bao gồm cả log message ở TRACE, DEBUG, INFO level. Tại Level WARNING, có thể xem được log về SDK Exception (nếu xảy ra).
- AdBrixRM.AdBrixLogLevel.ERROR : Bao gồm cả log message ở TRACE, DEBUG, INFO, WARNING level. Tại level ERROR, toàn bộ SDK log sẽ được xuất ra (fatal exception).
import AdBrixRM //Swift Version < 4.2 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let adBrix = AdBrixRM.getInstance // Cài đặt adbrix Log Level adBrix.setLogLevel(AdBrixRM.AdBrixLogLevel.TRACE) return true } // Swift Version >= 4.2 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { let adBrix = AdBrixRM.getInstance // Cài đặt adbrix Log Level adBrix.setLogLevel(AdBrixRM.AdBrixLogLevel.TRACE) return true }
Cài đặt chu kì Upload sự kiện
SDK ghi lại dữ liệu vào hàng đợi. Có thể cấu hình thời gian adbrix SDK gửi dữ liệu lên server dựa trên 2 tiêu chí: số event trong hàng đợi và tiêu chí thời gian đợi.
* Trong 2 tiêu chí, tiêu chí nào đến trước thì sẽ được thực hiện trước.
Tiêu chí số event trong hàng đợi
Khi số event trong hàng đợi vượt ngưỡng này thì SDK sẽ gửi dữ liệu lên adbrix 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
import AdBrixRM //Swift Version < 4.2 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let adBrix = AdBrixRM.getInstance // Khi vượt ngưỡng 10 sự kiện, sdk gửi dữ liệu lên adbrix adBrix.setEventUploadCountInterval(AdBrixRM.AdBrixEventUploadCount.MIN) return true } //Swift Version >= 4.2 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { let adBrix = AdBrixRM.getInstance // Khi vưỡng ngưỡng 10 sự kiện adBrix.setEventUploadCountInterval(AdBrixRM.AdBrixEventUploadCount.MIN) return true }
Tiêu chí thời gian
Khi vượt qua thời gian đợi cài đặt, SDK sẽ đưa dữ liệu lên server.
Hằng số được định nghĩa trong adbrix SDK:
- AdBrixRM.AdBrixEventUploadTimeInteval.MIN : 30 giây
- AdBrixRM.AdBrixEventUploadTimeInteval.NORMAL: 60 giây
- AdBrixRM.AdBrixEventUploadTimeInteval.MAX :120 giây
import AdBrixRM //Swift Version < 4.2 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let adBrix = AdBrixRM.getInstance // Cài đặt ngưỡng 120 giây adBrix.setEventUploadTimeInterval(AdBrixRM.AdBrixEventUploadTimeInteval.MAX) return true } //Swift Version >= 4.2 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { let adBrix = AdBrixRM.getInstance // cài đặt ngưỡng 30 giây adBrix.setEventUploadTimeInterval(AdBrixRM.AdBrixEventUploadTimeInteval.MIN) return true }
Cài đặt GDPR
Khi có yêu cầu thực hiện xóa dữ liệu cá nhân theo GDPR, SDK sẽ dừng toàn bộ việc lưu trữ dữ liệu phân tích. Trạng thái này sẽ được duy trì đến khi người dùng cài lại ứng dụng
func gdprForgetMeEvent() { AdBrixRM.getInstance.gdprForgetMe() }
Deep Linking/ Deferred Deep Linking
Deep linking là phương thức để mở một màn hình trong ứng dụng thông qua deep link có địa chỉ dạng scheme://host. IOShỗ trợ thêm phương thức Universal Link, địa chỉ có dạng giống như địa chỉ web https://domain để mở app từ mobile browser. Như vậy Universal 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ư Apple Universal Link hoặc Deep Link thông thường hoặc Deferred Deep Link.
Để phân tích sự kiện mở app qua tracking link hỗ trợ deep link, cần cài đặt custom url scheme
Cấu hình Custom Url Scheme
Từ [General > Target > Info > URL Types] cài đặt URL Scheme.
Universal Link
Từ [General > Target > Capablities> Associated Domains] cài đặt Universal Link.
[[인용:경고:보통]] Định dạng của universal link như sau applinks:your_appkey.adtouch.adbrix.io Trong đó "your_appkey" chính là Appkey nhận từ AdBrix Console.
Sau đó, để phân tích sự kiện mở app bằng Universal Link, thêm đoạn code sau vào file AppDelegate.swift.
// iOS 9+ func application(_ application: UIApplication,continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool { guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL else { return false } print("DEEPLINK :: UniversialLink was clicked !! incomingURL - \(incomingURL)") NSLog("UNIVERSAL LINK OPEN!!!!!!!!!!!!!!!!!") let adBrix = AdBrixRM.getInstance adBrix.deepLinkOpen(url: incomingURL) return true } // iOS 12 func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL else { return false } print("DEEPLINK :: UniversialLink was clicked !! incomingURL - \(incomingURL)") NSLog("UNIVERSAL LINK OPENN!!!!!!!!!!!!!!!!!") let adBrix = AdBrixRM.getInstance adBrix.deepLinkOpen(url: incomingURL) return true }
Phân tích sự kiện Deep Linking
Mở file AppDelegate.swift, thêm đoạn tracking code vào application(_ app: open url: options: ) delegate.
//Swift Version < 4.2 @available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { let adBrix = AdBrixRM.getInstance // Ghi lại sự kiện mở app bằng deep link adBrix.deepLinkOpen(url: url) return false } //Swift Version >= 4.2 func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { let adBrix = AdBrixRM.getInstance // Ghi lại sự kiện mở app bằng deep link adBrix.deepLinkOpen(url: url) return false } //under ios 8.0 func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { let adBrix = AdBrixRM.getInstance // Ghi lại sự kiện mở app bằng deep link adBrix.deepLinkOpen(url: url) return false }
Trên iOS13 trở lên, khi sử dụng UIScene, mở file sceneDelegate.swift thêm đoạn code sau đây:
import AdBrixRM func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { let urlinfo = connectionOptions.urlContexts let url = urlinfo.first?.url as! NSURL let adBrix = AdBrixRM.getInstance // Ghi lại sự kiện mở app bằng deep link adBrix.deepLinkOpen(url:url) } func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext*h>) { let url = URLContexts.first!.url as NSURL let adBrix = AdBrixRM.getInstance // Ghi lại sự kiện mở app bằng deep link adBrix.deepLinkOpen(url:url) }
Deferred Deep Linking
Deferred Deep Linking là trường hợp đặc biệt, redirect người dùng tới một màn hình 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 AdBrixRMDeferredDeeplinkDelegate.
[[인용:위험:작게]] - Giá trị nhận được từ sự kiện Deferred Deep Link có dạng yourscheme://your_custom_path
import UIKit import AdBrixRM import AdSupport @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, AdBrixRMDeferredDeeplinkDelegate{ var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. let adBrix = AdBrixRM.getInstance if ((NSClassFromString("ASIdentifierManager")) != nil){ let ifa : UUID = ASIdentifierManager.shared().advertisingIdentifier; adBrix.setAppleAdvertisingIdentifier(ifa.uuidString) } // Cài đặt AdBrixRMDeferredDeeplinkDelegate adBrix.delegateDeferredDeeplink = self return true } // Nhận deferred Deep Link func didReceiveDeferredDeeplink(deeplink: String) { print("DEEPLINK :: received - \(deeplink)") // Use this string value and send your user to certain screen. }
*. Chú ý : Khi xử lý giá trị trả về từ Deferred Deep Link liên quan tới UI, phải sử dụng main thread.
Ví dụ về việc khởi tạo toàn bộ SDK
Toàn bộ 5 hạng mục trên được tổng hợp trong ví dụ sau.
import UIKit import AdBrixRM import AdSupport //Swift Version < 4.2 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let adBrix = AdBrixRM.getInstance if ((NSClassFromString("ASIdentifierManager")) != nil) { let ifa :UUID = ASIdentifierManager.shared().advertisingIdentifier let isAppleAdvertisingTrackingEnalbed :Bool = ASIdentifierManager.shared().isAdvertisingTrackingEnabled adBrix.setAppleAdvertisingIdentifier(ifa.uuidString, isAppleAdvertisingTrackingEnalbed) } adBrix.setLogLevel(AdBrixRM.AdBrixLogLevel.TRACE) adBrix.setEventUploadCountInterval(AdBrixRM.AdBrixEventUploadCountInterval.MIN) adBrix.setEventUploadTimeInterval(AdBrixRM.AdBrixEventUploadTimeInterval.MIN) adBrix.initAdBrix(appKey: "odhvASVRDsdf10d019fva", secretKey:"ar98LszQZUGdmSznToNBXg") return true } func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { let adBrix = AdBrixRM.getInstance adBrix.deepLinkOpen(url: url) return false } //Swift Version >= 4.2 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { let adBrix = AdBrixRM.getInstance if ((NSClassFromString("ASIdentifierManager")) != nil) { let ifa :UUID = ASIdentifierManager.shared().advertisingIdentifier let isAppleAdvertisingTrackingEnalbed :Bool = ASIdentifierManager.shared().isAdvertisingTrackingEnabled adBrix.setAppleAdvertisingIdentifier(ifa.uuidString, isAppleAdvertisingTrackingEnalbed) } adBrix.setLogLevel(AdBrixRM.AdBrixLogLevel.TRACE) adBrix.setEventUploadCountInterval(AdBrixRM.AdBrixEventUploadCountInterval.MIN) adBrix.setEventUploadTimeInterval(AdBrixRM.AdBrixEventUploadTimeInterval.MIN) adBrix.initAdBrix(appKey: "odhvASVRDsdf10d019fva", secretKey:"ar98LszQZUGdmSznToNBXg") return true } func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { let adBrix = AdBrixRM.getInstance adBrix.deepLinkOpen(url: url) return false }
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.
@IBAction func login_and_logout_event(_ sender: Any) { let adBrix = AdBrixRM.getInstance if(isLoginSuccess) { adBrix.login(userId:"user_1234") } else { adBrix.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
@IBAction func user_property_update(_ sender: Any) {
// Create adbrix instance
let adBrix = AdBrixRM.getInstance
//Age
adBrix.setAge(int: 30)
//Gender
adBrix.setGender(adBrixGenderType: AdBrixRM.AdBrixGenderType.Male)
//other information
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataBool("married", true)
adBrix.setUserPropertiesWithAttr(attrModel: attrModel)
}
[[인용:위험:보통]] 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, có thể đưa dữ liệu lên AdBrix để phân tích.
@IBAction func location_update(_ sender: Any) {
// Create adBrix Instance
let adBrix = AdBrixRM.getInstance
// adbrix location API
adBrix.setLocation(latitude: 32.514, longitude: 126.986)
}
* Đây là mục tùy chọn.
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 adBrix.eventWithAttr để đư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à adBrix.eventWithAttr. 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 AdBrixRmAttrModel để lưu những giá trị này.
@IBAction func user_custom_event(_ sender: Any) {
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// Addtional event parameter
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString(“userid”, “peterPark")
attrModel.setAttrDataString(“gender”, “male”)
attrModel.setAttrDataInt(“age”, 36)
// Click a button "Invite a friend"
adBrix.eventWithAttr("invite_button_click"”, value: attrModel)
// Complete "Character creation"
adBrix.eventWithAttr("create_character_complete"”, value: attrModel)
// Complete "Tutorial view"
adBrix.eventWithAttr("tutorial_complete"”, value: attrModel)
// Achieve "Level 10"
adBrix.eventWithAttr("level_10"”, value: attrModel)
}
[[인용:위험:보통]] AdBrix chỉ hỗ trợ tối đa 100 custom event. Qui tắc đặt tên event giống với qui tắc cho Key của UserProperty và AttrModel ở trên
※ 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ý.
let adBrix = AdBrixRM.getInstance adBrix.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.
let adBrix = AdBrixRM.getInstance // Thêm properties cho event let attrModel = AdBrixRmAttrModel() attrModel.setAttrDataInt(“level”, 37) attrModel.setAttrDataInt(“clear_time_mile”, 39238) // Ghi event cùng attribute adBrix.eventWithAttr("level_clear", value: attrModel)
Common/ General Event Analytics
AdBrix cung cấp hàm eventWithAttr 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
@IBAction func userRegister(_ sender: Any) {
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance // User information
// User information
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataBool("married", true)
// Signup API
adBrix.commonSignUpWithAttr(channel: AdBrixRM.AdBrixRmSignUpChannel.AdBrixRmSignUpGoogleChannel, commonAttr: attrModel)
}
App Update
@IBAction func appUpdate(_ sender: Any) {
// Create adbrix instance
let adBrix = AdBrixRM.getInstance
// User information
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataBool("married", true)
// App update API
adBrix.commonAppUpdateWithAttr(prev_ver: "1.0.1", curr_ver: "1.0.3", commonAttr: attrModel)
}
User Invitation
@IBAction func userInvite(_ sender: Any) {
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// User information
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataBool("married", true)
// User invitation API
adBrix.commonInviteWithAttr(channel: AdBrixRM.AdBrixRmInviteChannel.AdBrixRmInviteLineChannel, commonAttr: attrModel)
}
Use in-app credit
Khi người dùng sử dụng credit trong app.
@IBAction func useCredit(_ sender: Any) {
// Create adbrix Instance
let adbrix = AdBrixRM.getInstance
// User information
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
// Use in-appp credit API
adBrix.commonUseCreditWithAttr(commonAttr: attrModel)
}
Purchase
Phân tích sự kiện mua sản phẩm trong app.
Thông tin sản phẩm và đơn hàng được tổ chức theo kiểu array. Ý nghĩ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
@IBAction func purchase_event(_ sender: Any) {
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
// product option AttrModel
let productAttr1 = AdBrixRmAttrModel()
productAttr1.setAttrDataString("product_type", "computer")
productAttr1.setAttrDataString("color", "black")
productAttr1.setAttrDataInt("size", 36)
productAttr1.setAttrDataInt("current_point", 123456)
productAttr1.setAttrDataBool("promotion", true)
// create product model
let productModel1 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_1",
productName: "productname 1",
price: 123456.00,
quantity: 1,
discount: 2500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "computer", category2: "PC", category3: "cd-rom", category4: "software", category5: "game"),
productAttrsMap: productAttr1)
// product option AttrModel
let productAttr2 = AdBrixRmAttrModel()
productAttr2.setAttrDataString("product_type", "pants")
productAttr2.setAttrDataString("color", "blue")
productAttr2.setAttrDataInt("size", 42)
productAttr2.setAttrDataInt("current_point", 234423)
productAttr2.setAttrDataBool("promotion", false)
// create product model
let productModel2 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_2",
productName: "product 2",
price: 700000.00,
quantity: 1,
discount: 3500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "cloth", category2: "pants", category3: "jean", category4: "longpants", category5: "sales"),
productAttrsMap: productAttr2)
// Product list array
var proArr : Array<AdBrixRmCommerceProductModel> = Array()
arr.append(productModel1)
arr.append(productModel2)
//In-app purchase API
adBrix.commonPurchaseWithAttr(orderId: "orderid_1",
productInfo: proArr,
discount: 1500.00,
deliveryCharge: 2500.00,
paymentMethod: AdBrixRM.AdbrixRmPaymentMethod.CreditCard,
orderAttr: attrModel)
}
Commerce Analysis
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
@IBAction func viewHomeEvent(_ sender: Any) { let adBrix = AdBrixRM.getInstance // Optional attribute let attrModel = AdBrixRmAttrModel() attrModel.setAttrDataString("gender", "male") attrModel.setAttrDataInt("height", 36) attrModel.setAttrDataBool("married", true) // Sự kiện view home page adBrix.commerceViewHomeWithAttr(orderAttr: attrModel) }
Category / Event Page View
Phân tích sự kiện người dùng vào trang Category/ Event Page.
Hỗ trợ tối đa 5 category và danh sách nhiều sản phẩm.
@IBAction func viewCategoryEvent(_ sender: Any) {
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
// product option AttrModel
let productAttr1 = AdBrixRmAttrModel()
productAttr1.setAttrDataString("product_type", "computer")
productAttr1.setAttrDataString("color", "black")
productAttr1.setAttrDataInt("size", 36)
productAttr1.setAttrDataInt("current_point", 123456)
productAttr1.setAttrDataBool("promotion", true)
// create product model
let productModel1 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_1",
productName: "productname 1",
price: 123456.00,
quantity: 1,
discount: 2500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "computer", category2: "PC", category3: "cd-rom", category4: "software", category5: "game"),
productAttrsMap: productAttr1)
// product option AttrModel
let productAttr2 = AdBrixRmAttrModel()
productAttr2.setAttrDataString("product_type", "pants")
productAttr2.setAttrDataString("color", "blue")
productAttr2.setAttrDataInt("size", 42)
productAttr2.setAttrDataInt("current_point", 234423)
productAttr2.setAttrDataBool("promotion", false)
// create product model
let productModel2 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_2",
productName: "product 2",
price: 700000.00,
quantity: 1,
discount: 3500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "cloth", category2: "pants", category3: "jean", category4: "longpants", category5: "sales"),
productAttrsMap: productAttr2)
// Product list array
var proArr : Array<AdBrixRmCommerceProductModel> = Array()
arr.append(productModel1)
arr.append(productModel2)
//open category
adBrix.commerceCategoryViewWithAttr(category: adBrix.createCommerceProductCategoryData(category: "의상", category2: "치마", category3: "여자옷", category4: "원피스", category5: "해적질"),
productInfo: proArr,
orderAttr: attrModel)
}
Product Detail View
Thông tin sản phẩm bao 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 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 map: (thuộc tính không bắt buộc) thuộc tính sản phẩm
@IBAction func viewProductDetailEvent(_ sender: Any) {
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
// product option AttrModel
let productAttr1 = AdBrixRmAttrModel()
productAttr1.setAttrDataString("product_type", "computer")
productAttr1.setAttrDataString("color", "black")
productAttr1.setAttrDataInt("size", 36)
productAttr1.setAttrDataInt("current_point", 123456)
productAttr1.setAttrDataBool("promotion", true)
// create product model
let productModel1 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_1",
productName: "productname 1",
price: 123456.00,
quantity: 1,
discount: 2500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "computer", category2: "PC", category3: "cd-rom", category4: "software", category5: "game"),
productAttrsMap: productAttr1)
//productView API
adBrix.commerceProductViewWithAttr(productInfo: productModel1, orderAttr: attrModel)
}
Add to Cart
Phân tích sự kiện người dùng cho danh sách sản phẩm vào giỏ hàng
@IBAction func addToCartEvent(_ sender: Any) {
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
// product option AttrModel
let productAttr1 = AdBrixRmAttrModel()
productAttr1.setAttrDataString("product_type", "computer")
productAttr1.setAttrDataString("color", "black")
productAttr1.setAttrDataInt("size", 36)
productAttr1.setAttrDataInt("current_point", 123456)
productAttr1.setAttrDataBool("promotion", true)
// create product model
let productModel1 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_1",
productName: "productname 1",
price: 123456.00,
quantity: 1,
discount: 2500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "computer", category2: "PC", category3: "cd-rom", category4: "software", category5: "game"),
productAttrsMap: productAttr1)
// product option AttrModel
let productAttr2 = AdBrixRmAttrModel()
productAttr2.setAttrDataString("product_type", "pants")
productAttr2.setAttrDataString("color", "blue")
productAttr2.setAttrDataInt("size", 42)
productAttr2.setAttrDataInt("current_point", 234423)
productAttr2.setAttrDataBool("promotion", false)
// create product model
let productModel2 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_2",
productName: "product 2",
price: 700000.00,
quantity: 1,
discount: 3500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "cloth", category2: "pants", category3: "jean", category4: "longpants", category5: "sales"),
productAttrsMap: productAttr2)
// Product list array
var proArr : Array<AdBrixRmCommerceProductModel> = Array()
arr.append(productModel1)
arr.append(productModel2)
// add to cart api
adBrix.commerceAddToCartWithAttr(productInfo: proArr, orderAttr: attrModel)
}
Add to Wishlist
Phân tích sự kiện người dùng cho một sản phẩm vào danh mục yêu thích.
@IBAction func addToWishListEvent(_ sender: Any) {
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
// product option AttrModel
let productAttr1 = AdBrixRmAttrModel()
productAttr1.setAttrDataString("product_type", "computer")
productAttr1.setAttrDataString("color", "black")
productAttr1.setAttrDataInt("size", 36)
productAttr1.setAttrDataInt("current_point", 123456)
productAttr1.setAttrDataBool("promotion", true)
// create product model
let productModel1 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_1",
productName: "productname 1",
price: 123456.00,
quantity: 1,
discount: 2500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "computer", category2: "PC", category3: "cd-rom", category4: "software", category5: "game"),
productAttrsMap: productAttr1)
// Add to wishlist api
adBrix.commerceAddToWishListWithAttr(productInfo: productModel1, orderAttr: attrModel)
}
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
Ý nghĩa của tham số:
- order id : (yêu cầu bắt buộc) mã đơn hàng
- delivery charge : (thuộc tính không bắt buộc) phí vận chuyển
@IBAction func reviewOrderEvent(_ sender: Any) {
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
// product option AttrModel
let productAttr1 = AdBrixRmAttrModel()
productAttr1.setAttrDataString("product_type", "computer")
productAttr1.setAttrDataString("color", "black")
productAttr1.setAttrDataInt("size", 36)
productAttr1.setAttrDataInt("current_point", 123456)
productAttr1.setAttrDataBool("promotion", true)
// create product model
let productModel1 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_1",
productName: "productname 1",
price: 123456.00,
quantity: 1,
discount: 2500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "computer", category2: "PC", category3: "cd-rom", category4: "software", category5: "game"),
productAttrsMap: productAttr1)
// product option AttrModel
let productAttr2 = AdBrixRmAttrModel()
productAttr2.setAttrDataString("product_type", "pants")
productAttr2.setAttrDataString("color", "blue")
productAttr2.setAttrDataInt("size", 42)
productAttr2.setAttrDataInt("current_point", 234423)
productAttr2.setAttrDataBool("promotion", false)
// create product model
let productModel2 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_2",
productName: "product 2",
price: 700000.00,
quantity: 1,
discount: 3500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "cloth", category2: "pants", category3: "jean", category4: "longpants", category5: "sales"),
productAttrsMap: productAttr2)
// Product list array
var proArr : Array<AdBrixRmCommerceProductModel> = Array()
arr.append(productModel1)
arr.append(productModel2)
// Review order api
adBrix.commerceReviewOrderWithAttr(orderId: "orderID_2",
productInfo: proArr,
discount: 2500.00,
deliveryCharge: 3000.00,
orderAttr: attrModel)
}
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.
Ý nghĩa tham số:
- order id : (yêu cầu bắt buộc) mã đơn hàng
- penalty charge : (thuộc tính không bắt buộc) tiền hủy đơn
func refundOrderEvent() {
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
// product option AttrModel
let productAttr1 = AdBrixRmAttrModel()
productAttr1.setAttrDataString("product_type", "computer")
productAttr1.setAttrDataString("color", "black")
productAttr1.setAttrDataInt("size", 36)
productAttr1.setAttrDataInt("current_point", 123456)
productAttr1.setAttrDataBool("promotion", true)
// create product model
let productModel1 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_1",
productName: "productname 1",
price: 123456.00,
quantity: 1,
discount: 2500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "computer", category2: "PC", category3: "cd-rom", category4: "software", category5: "game"),
productAttrsMap: productAttr1)
// product option AttrModel
let productAttr2 = AdBrixRmAttrModel()
productAttr2.setAttrDataString("product_type", "pants")
productAttr2.setAttrDataString("color", "blue")
productAttr2.setAttrDataInt("size", 42)
productAttr2.setAttrDataInt("current_point", 234423)
productAttr2.setAttrDataBool("promotion", false)
// create product model
let productModel2 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_2",
productName: "product 2",
price: 700000.00,
quantity: 1,
discount: 3500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "cloth", category2: "pants", category3: "jean", category4: "longpants", category5: "sales"),
productAttrsMap: productAttr2)
// Product list array
var proArr : Array<AdBrixRmCommerceProductModel> = Array()
arr.append(productModel1)
arr.append(productModel2)
//Refund API
adBrix.commerceRefundWithAttr(orderId: "orderID_3",
productInfo: proArr,
penaltyCharge: 250000.00,
orderAttr: attrModel)
}
Product search
Phân tích sự kiện người dùng tìm kiếm sản phẩm. Thông tin cần ghi log là kết quả sản phẩm tìm kiếm và từ khóa
Ý nghĩa tham số:
- keyword : (yêu cầu bắt buộc) từ khóa tìm kiếm
func searchResultEvent() {
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
// product option AttrModel
let productAttr1 = AdBrixRmAttrModel()
productAttr1.setAttrDataString("product_type", "computer")
productAttr1.setAttrDataString("color", "black")
productAttr1.setAttrDataInt("size", 36)
productAttr1.setAttrDataInt("current_point", 123456)
productAttr1.setAttrDataBool("promotion", true)
// create product model
let productModel1 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_1",
productName: "productname 1",
price: 123456.00,
quantity: 1,
discount: 2500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "computer", category2: "PC", category3: "cd-rom", category4: "software", category5: "game"),
productAttrsMap: productAttr1)
// product option AttrModel
let productAttr2 = AdBrixRmAttrModel()
productAttr2.setAttrDataString("product_type", "pants")
productAttr2.setAttrDataString("color", "blue")
productAttr2.setAttrDataInt("size", 42)
productAttr2.setAttrDataInt("current_point", 234423)
productAttr2.setAttrDataBool("promotion", false)
// create product model
let productModel2 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_2",
productName: "product 2",
price: 700000.00,
quantity: 1,
discount: 3500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "cloth", category2: "pants", category3: "jean", category4: "longpants", category5: "sales"),
productAttrsMap: productAttr2)
// Product list array
var proArr : Array<AdBrixRmCommerceProductModel> = Array()
arr.append(productModel1)
arr.append(productModel2)
// product search api
adBrix.commerceSearchWithAttr(productInfo: proArr,
keyword: "This is a search keyword.",
orderAttr: attrModel)
}
Product Share
Phân tích sự kiện chia sẻ sản phẩm trên SNS
@IBAction func shareEvent(_ sender: Any) {
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
// product option AttrModel
let productAttr1 = AdBrixRmAttrModel()
productAttr1.setAttrDataString("product_type", "computer")
productAttr1.setAttrDataString("color", "black")
productAttr1.setAttrDataInt("size", 36)
productAttr1.setAttrDataInt("current_point", 123456)
productAttr1.setAttrDataBool("promotion", true)
// create product model
let productModel1 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_1",
productName: "productname 1",
price: 123456.00,
quantity: 1,
discount: 2500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "computer", category2: "PC", category3: "cd-rom", category4: "software", category5: "game"),
productAttrsMap: productAttr1)
// Product share API
adBrix.commerceShareWithAttr(channel: AdBrixRM.AdBrixRmSharingChannel.AdBrixRmSharingKakaoStory,
productInfo: productModel1,
orderAttr: attrModel)
}
View a Product List
Sự kiện người dùng xem một danh sách sản phẩm
func listViewEvent() {
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
// product option AttrModel
let productAttr1 = AdBrixRmAttrModel()
productAttr1.setAttrDataString("product_type", "computer")
productAttr1.setAttrDataString("color", "black")
productAttr1.setAttrDataInt("size", 36)
productAttr1.setAttrDataInt("current_point", 123456)
productAttr1.setAttrDataBool("promotion", true)
// create product model
let productModel1 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_1",
productName: "productname 1",
price: 123456.00,
quantity: 1,
discount: 2500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "computer", category2: "PC", category3: "cd-rom", category4: "software", category5: "game"),
productAttrsMap: productAttr1)
// product option AttrModel
let productAttr2 = AdBrixRmAttrModel()
productAttr2.setAttrDataString("product_type", "pants")
productAttr2.setAttrDataString("color", "blue")
productAttr2.setAttrDataInt("size", 42)
productAttr2.setAttrDataInt("current_point", 234423)
productAttr2.setAttrDataBool("promotion", false)
// create product model
let productModel2 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_2",
productName: "product 2",
price: 700000.00,
quantity: 1,
discount: 3500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "cloth", category2: "pants", category3: "jean", category4: "longpants", category5: "sales"),
productAttrsMap: productAttr2)
// Product list array
var proArr : Array<AdBrixRmCommerceProductModel> = Array()
arr.append(productModel1)
arr.append(productModel2)
// list view API
adBrix.commerceListViewWithAttr(productInfo: proArr, orderAttr: attrModel)
}
View a Cart
Sự kiện người dùng xem giỏ hàng
func cartViewEvent() {
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
// product option AttrModel
let productAttr1 = AdBrixRmAttrModel()
productAttr1.setAttrDataString("product_type", "computer")
productAttr1.setAttrDataString("color", "black")
productAttr1.setAttrDataInt("size", 36)
productAttr1.setAttrDataInt("current_point", 123456)
productAttr1.setAttrDataBool("promotion", true)
// create product model
let productModel1 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_1",
productName: "productname 1",
price: 123456.00,
quantity: 1,
discount: 2500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "computer", category2: "PC", category3: "cd-rom", category4: "software", category5: "game"),
productAttrsMap: productAttr1)
// product option AttrModel
let productAttr2 = AdBrixRmAttrModel()
productAttr2.setAttrDataString("product_type", "pants")
productAttr2.setAttrDataString("color", "blue")
productAttr2.setAttrDataInt("size", 42)
productAttr2.setAttrDataInt("current_point", 234423)
productAttr2.setAttrDataBool("promotion", false)
// create product model
let productModel2 = adBrix.createCommerceProductDataWithAttr(
productId: "productID_2",
productName: "product 2",
price: 700000.00,
quantity: 1,
discount: 3500.00,
currencyString: adBrix.getCurrencyString(AdBrixRM.AdBrixRmCurrencyType.KRW.rawValue),
category: adBrix.createCommerceProductCategoryData(category: "cloth", category2: "pants", category3: "jean", category4: "longpants", category5: "sales"),
productAttrsMap: productAttr2)
// Product list array
var proArr : Array<AdBrixRmCommerceProductModel> = Array()
arr.append(productModel1)
arr.append(productModel2)
// cart view api
adBrix.commerceCartViewWithAttr(productInfo: proArr, orderAttr: attrModel)
}
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
@IBAction func paymentInfoAddedEvent(_ sender: Any) {
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataString("creditcard", "kbcard")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
// payment view api
adBrix.commercePaymentInfoAddedWithAttr(paymentInfoAttr: attrModel)
}
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.
- isSkip : (yêu cầu bắt buộc) Giá trị boolean thể hiện việc bỏ qua(skip) màn tutorial
func tutorialCompleteEvent(){
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
//Tutorial complete API
adBrix.gameTutorialCompletedWithAttr(isSkip: true, gameInfoAttr: attrModel)
}
Character Creation
Phân tích sự kiện tạo ra nhân vật trong game.
func characterCreatedEvent(){
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
//Create character API
adBrix.gameCharacterCreatedWithAttr(gameInfoAttr: attrModel)
}
Stage Cleared
Phân tích sự kiện người chơi qua bàn.
- stageName : (yêu cầu bắt buộc) Tên của bàn/ stage trong game
func stageClearedEvent(){
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
//Stage complete API
adBrix.gameStageClearedWithAttr(stageName: "1-5", gameInfoAttr: attrModel)
}
Level Achieved
Phân tích sự kiện người chơi lên level mới.
- level : (yêu cầu bắt buộc) Cấp độ level (1~10000)
func levelAchievedEvent(){
// Create adbrix Instance
let adBrix = AdBrixRM.getInstance
// event AttrModel
let attrModel = AdBrixRmAttrModel()
attrModel.setAttrDataString("nickname", "peter")
attrModel.setAttrDataInt("age", 36)
attrModel.setAttrDataInt("credit", 10000)
attrModel.setAttrDataBool("married", true)
//level up API
adBrix.gameLevelAchievedWithAttr(level: 55, gameInfoAttr: attrModel)
}
Bình luận
0 bình luận
Vui lòng đăng nhập để viết bình luận.