AsaManager.swift 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. //
  2. // AsaManager.swift
  3. // Runner
  4. //
  5. // Created by Destiny on 2025/6/18.
  6. //
  7. import Foundation
  8. import SwiftyJSON
  9. import Alamofire
  10. class AsaManager {
  11. static let shared = AsaManager()
  12. var hostUrl = "http://asafrontend.mokiwi.com/api"
  13. var orgId = "8941670"
  14. var sign = "c50d251bcb2eec9345844df434e3a09d&kiwi".md5
  15. func addAttributionReport(completion:@escaping ((Bool) -> ())) {
  16. if self.payDataNotExist() {
  17. completion(false)
  18. return
  19. }
  20. var dict: [String: Any] = [String: Any]()
  21. if let payLoad: [String: Any] = UserDefaults.standard.object(forKey: "ASA_ATTRIBUTION_PAYLOAD") as? [String : Any] {
  22. if let campaignId = payLoad["campaignId"] as? Int {
  23. dict["campaign_id"] = campaignId
  24. }
  25. if let adGroupId = payLoad["adGroupId"] as? Int {
  26. dict["ad_group_id"] = adGroupId
  27. }
  28. if let keywordId = payLoad["keywordId"] as? Int {
  29. dict["keyword_id"] = keywordId
  30. }
  31. let formatter = DateFormatter()
  32. formatter.timeZone = TimeZone.autoupdatingCurrent
  33. formatter.dateFormat = "yyyy-MM-dd"
  34. let todayDate = formatter.string(from: Date())
  35. dict["date"] = todayDate
  36. dict["timezone"] = "ORTZ"
  37. }
  38. let urlString = String(format: "%@/asabackendData/add?org_id=%@&sign=%@", hostUrl, orgId, sign )
  39. let headers = ["Content-Type": "application/json"]
  40. // 使用Alamofire发送POST请求
  41. AF.request(urlString, method: .post, parameters: dict, encoding: JSONEncoding.default, headers: HTTPHeaders(headers)).response { response in
  42. switch response.result {
  43. case .success(let value):
  44. let json = try? JSON(data: value ?? Data())
  45. print("AppSaManager responseObject: \(String(describing: json))")
  46. if json?["code"] == 10000 {
  47. print("AppSaManager asa用户 提交成功")
  48. completion(true)
  49. } else {
  50. print("AppSaManager asa用户 提交失败")
  51. completion(false)
  52. }
  53. case .failure(let error):
  54. print("AppSaManager asa用户 error: \(error)")
  55. completion(false)
  56. }
  57. }
  58. }
  59. func addEventAttribution(eventDict: [String: Any]) {
  60. if self.payDataNotExist() {
  61. return
  62. }
  63. var dict: [String: Any] = [String: Any]()
  64. if let payLoad: [String: Any] = UserDefaults.standard.object(forKey: "ASA_ATTRIBUTION_PAYLOAD") as? [String : Any] {
  65. if let campaignId = payLoad["campaignId"] as? Int {
  66. dict["campaign_id"] = campaignId
  67. }
  68. if let adGroupId = payLoad["adGroupId"] as? Int {
  69. dict["ad_group_id"] = adGroupId
  70. }
  71. if let keywordId = payLoad["keywordId"] as? Int {
  72. dict["keyword_id"] = keywordId
  73. }
  74. let formatter = DateFormatter()
  75. formatter.timeZone = TimeZone.autoupdatingCurrent
  76. formatter.dateFormat = "yyyy-MM-dd"
  77. let todayDate = formatter.string(from: Date())
  78. dict["date"] = todayDate
  79. dict["timezone"] = "ORTZ"
  80. if let idfa = KeyboardSharedDataManager.shared.getInitIDFA() {
  81. dict["unique_device"] = idfa
  82. } else {
  83. dict["unique_device"] = KeyboardSharedDataManager.shared.getInitIDFV()
  84. }
  85. }
  86. for (key, value) in eventDict {
  87. dict[key] = value
  88. }
  89. let urlString = String(format: "%@/asabackendDataDetail/add?org_id=%@&sign=%@", hostUrl, orgId, sign )
  90. let headers = ["Content-Type": "application/json"]
  91. let parameters = ["backend_data_detail": dict]
  92. // 使用Alamofire发送POST请求
  93. AF.request(urlString, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: HTTPHeaders(headers)).response { response in
  94. switch response.result {
  95. case .success(let value):
  96. let json = try? JSON(data: value ?? Data())
  97. print("AppSaManager responseObject: \(String(describing: json))")
  98. if json?["code"] == 10000 {
  99. print("AppSaManager asa用户 提交成功")
  100. } else {
  101. print("AppSaManager asa用户 提交失败")
  102. }
  103. case .failure(let error):
  104. print("AppSaManager asa用户 error: \(error)")
  105. }
  106. }
  107. }
  108. func payDataNotExist() -> Bool {
  109. guard UserDefaults.standard.object(forKey: "ASA_ATTRIBUTION_PAYLOAD") is [String: Any] else {
  110. return true
  111. }
  112. return false
  113. }
  114. }