QSEventHandle.swift 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. //
  2. // QSEventHandle.swift
  3. // QuickSearchLocation
  4. //
  5. // Created by Destiny on 2025/10/11.
  6. //
  7. import UIKit
  8. import GravityEngineSDK
  9. class QSEventHandle: NSObject {
  10. static let isDebug = false
  11. static func gravityPush(eventName: String, eventProps: [String:Any] = [:]){
  12. #if targetEnvironment(simulator)
  13. return;
  14. #else
  15. #endif
  16. if(isDebug){
  17. do {
  18. let jsonData = try JSONSerialization.data(withJSONObject: eventProps, options: .prettyPrinted)
  19. let jsonString = String(data: jsonData, encoding: .utf8)
  20. DispatchQueue.main.async {
  21. UIApplication.keyWindow?.toast(text: "event:\(eventName)\neventProps:\(String(describing: jsonString))")
  22. }
  23. print(jsonString ?? "转换失败")
  24. } catch {
  25. print("JSON 转换错误: \(error)")
  26. }
  27. }
  28. GravityEngineSDK.sharedInstance()?.track(eventName, properties: eventProps)
  29. }
  30. /// 上传单次事件到服务器
  31. ///
  32. /// - Parameters:
  33. /// - eventType: 事件类型(如 "track")暂时只有track 可以不传
  34. /// - eventName: 事件名称(如 "vip_center_exposure")
  35. /// - eventProps: 事件属性(字典形式,如 `["is_member": false, "entry_point": "open_now"]`)
  36. ///
  37. /// - Example:
  38. /// ```
  39. /// eventPush(
  40. /// eventType: "track",
  41. /// eventName: "button_click",
  42. /// eventProps: ["button_id": "submit"]
  43. /// )
  44. /// ```
  45. ///
  46. static func eventPush(eventType: String = "track", eventName: String, eventProps: [String:Any] = [:]){
  47. #if targetEnvironment(simulator)
  48. return;
  49. #else
  50. #endif
  51. if(isDebug){
  52. do {
  53. let jsonData = try JSONSerialization.data(withJSONObject: eventProps, options: .prettyPrinted)
  54. let jsonString = String(data: jsonData, encoding: .utf8)
  55. DispatchQueue.main.async {
  56. UIApplication.keyWindow?.toast(text: "event:\(eventName)\neventProps:\(String(describing: jsonString))")
  57. }
  58. print(jsonString ?? "转换失败")
  59. } catch {
  60. print("JSON 转换错误: \(error)")
  61. }
  62. }
  63. GravityEngineSDK.sharedInstance()?.track(eventName, properties: eventProps)
  64. QSLCentralEventManager.shared.uploadEvent(eventType: "track", eventName: eventName, eventProps: eventProps)
  65. }
  66. /// 上传多次事件到服务器
  67. ///
  68. /// - Parameters:
  69. /// - eventType: 事件类型(如 "track")暂时只有track 可以不传
  70. /// - eventName: 事件名称(如 "vip_center_exposure")
  71. /// - eventProps: 事件属性(字典数组形式,如 `[["is_member": false, "entry_point": "open_now"],...]`)
  72. ///
  73. /// - Example:
  74. /// ```
  75. /// eventPush(
  76. /// eventType: "track",
  77. /// eventName: "button_click",
  78. /// eventProps: ["button_id": "submit"]
  79. /// )
  80. /// ```
  81. ///
  82. static func eventArrPush(eventType: String = "track", eventName: String, eventPropsArr: [[String:Any]] = []){
  83. QSLCentralEventManager.shared.uploadEvent(eventType: "track", eventName: eventName, eventPropsArr: eventPropsArr)
  84. }
  85. }