| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- //
- // LNStatisticManager.swift
- // Gami
- //
- // Created by OneeChan on 2026/1/27.
- //
- import Foundation
- import AdjustSdk
- private enum LNStatisticEventToken: String {
- case call_accept = "5xzpm9"
- case call_end = "dr9456"
- case call_start = "y39skp"
-
- case first_payment = "8p9mbg"
- case register = "4vtp6f"
- case start_chat = "mhhvkj"
-
- case view_playmate = "hivhhh"
- case view_profile = "zfdf34"
- case view_session = "z9bxom"
-
- case coin_payment_page_view = "kyb5bm"
- case coin_payment_page_click = "vbkt69"
- case diamond_payment_page_view = "qlu402"
- case diamond_payment_page_click = "xa6ysh"
- }
- class LNStatisticManager {
- static let shared = LNStatisticManager()
-
- private init() { }
-
- func reportExposure(uids: [String], queue: DispatchQueue = .main, handler: @escaping (Bool) -> Void) {
- LNHttpManager.shared.reportExposure(uids: uids) { err in
- queue.asyncIfNotGlobal {
- handler(err == nil)
- }
- }
- }
-
- func reportVisitor(uid: String, queue: DispatchQueue = .main, handler: @escaping (Bool) -> Void) {
- LNHttpManager.shared.reportVisitor(uid: uid) { err in
- queue.asyncIfNotGlobal {
- handler(err == nil)
- }
- }
- }
- }
- // MARK: 视图埋点
- extension LNStatisticManager {
- func reportViewPlaymate(uid: String) {
- trackEvent(.view_playmate) { event in
- event.addCallbackParameter("user_id", value: uid)
- }
- }
-
- func reportViewProfile(uid: String) {
- trackEvent(.view_profile) { event in
- event.addCallbackParameter("user_id", value: uid)
- }
- }
-
- func reportViewChat(uid: String) {
- trackEvent(.view_session) { event in
- event.addCallbackParameter("user_id", value: uid)
- }
- }
-
- func reportViewCoinPay() {
- trackEvent(.coin_payment_page_view) { event in
- event.addCallbackParameter("user_id", value: myUid)
- }
- }
-
- func reportViewDiamondPay() {
- trackEvent(.diamond_payment_page_view) { event in
- event.addCallbackParameter("user_id", value: myUid)
- }
- }
- }
- // MARK: 点击埋点
- extension LNStatisticManager {
- func reportClickChat(uid: String) {
- trackEvent(.start_chat) { event in
- event.addCallbackParameter("user_id", value: uid)
- }
- }
-
- func reportClickCoinPay() {
- trackEvent(.coin_payment_page_click) { event in
- event.addCallbackParameter("user_id", value: myUid)
- }
- }
-
- func reportClickDiamondPay() {
- trackEvent(.diamond_payment_page_click) { event in
- event.addCallbackParameter("user_id", value: myUid)
- }
- }
- }
- // MARK: 通话埋点
- extension LNStatisticManager {
- func reportStartCall(uid: String, success: Bool) {
- trackEvent(.call_start) { event in
- event.addCallbackParameter("user_id", value: uid)
- event.addCallbackParameter("result", value: success ? "1" : "0")
- }
- }
-
- func reportAcceptCall(uid: String, success: Bool) {
- trackEvent(.call_accept) { event in
- event.addCallbackParameter("user_id", value: uid)
- event.addCallbackParameter("result", value: success ? "1" : "0")
- }
- }
-
- func reportEndCall(uid: String, duration: Float) {
- trackEvent(.call_end) { event in
- event.addCallbackParameter("user_id", value: uid)
- event.addCallbackParameter("duration", value: "\(duration)")
- }
- }
- }
- // MARK: 登录埋点
- enum LNRegisterMethod: String {
- case email
- case phone
- case google
- case apple
- }
- extension LNStatisticManager {
- func reportRegister(method: LNRegisterMethod) {
- trackEvent(.register) { event in
- event.addCallbackParameter("user_id", value: myUid)
- event.addCallbackParameter("register_method", value: method.rawValue)
- event.addCallbackParameter("register_ts", value: "\(Int(curTime))")
- }
- }
-
- func reportPayment(type: LNCurrencyType, amount: Double, currency: String, price: Double, orderId: String) {
- trackEvent(.first_payment) { event in
- event.addCallbackParameter("order_id", value: orderId)
- event.addCallbackParameter("payment_type", value: "\(type.rawValue)")
- event.addCallbackParameter("payment_amount", value: "\(amount)")
- event.addCallbackParameter("payment_currency", value: currency)
- event.addCallbackParameter("payment_price", value: "\(price)")
- event.setRevenue(price, currency: currency)
- }
- }
- }
- extension LNStatisticManager {
- private func trackEvent(_ token: LNStatisticEventToken, configure: (ADJEvent) -> Void) {
- guard let event = eventFor(token) else { return }
- configure(event)
- Adjust.trackEvent(event)
- }
-
- private func eventFor(_ token: LNStatisticEventToken) -> ADJEvent? {
- let event = ADJEvent(eventToken: token.rawValue)
- event?.addCallbackParameter("platform", value: "iOS")
- event?.addCallbackParameter("app", value: "gami")
- event?.addCallbackParameter("app_channel", value: "apple")
- event?.addCallbackParameter("version_code", value: curBuildVersion)
- event?.addCallbackParameter("version_name", value: curAppVersion)
- event?.addCallbackParameter("uid", value: myUid)
- event?.addCallbackParameter("device_id", value: curDeviceId)
- event?.addCallbackParameter("country_code", value: LNAppConfig.shared.countryCode)
- event?.addCallbackParameter("language_code", value: LNAppConfig.shared.curLang.languageCode)
- event?.addCallbackParameter("device_name", value: curDeviceModelName)
- event?.addCallbackParameter("os_version", value: curSystemVersion)
- event?.addCallbackParameter("network_type", value: LNNetworkMonitor.curNetworkType.desc)
- event?.addCallbackParameter("network_operator", value: LNNetworkMonitor.networkProvider)
- event?.addCallbackParameter("network_available", value: LNNetworkMonitor.curState == .available ? "true" : "false")
- event?.addCallbackParameter("background", value: LNAppConfig.shared.isForeground ? "false" : "true")
-
- return event
- }
- }
|