AsaManager.swift 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  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. // if campaignId == 1234567890 {
  24. // completion(false)
  25. // return
  26. // } else {
  27. dict["campaign_id"] = campaignId
  28. // }
  29. }
  30. if let adGroupId = payLoad["adGroupId"] as? Int {
  31. dict["ad_group_id"] = adGroupId
  32. }
  33. if let keywordId = payLoad["keywordId"] as? Int {
  34. dict["keyword_id"] = keywordId
  35. }
  36. let formatter = DateFormatter()
  37. formatter.timeZone = TimeZone.autoupdatingCurrent
  38. formatter.dateFormat = "yyyy-MM-dd"
  39. let todayDate = formatter.string(from: Date())
  40. dict["date"] = todayDate
  41. dict["timezone"] = "ORTZ"
  42. }
  43. let urlString = String(format: "%@/asabackendData/add?org_id=%@&sign=%@", hostUrl, orgId, sign )
  44. let headers = ["Content-Type": "application/json"]
  45. // 使用Alamofire发送POST请求
  46. AF.request(urlString, method: .post, parameters: dict, encoding: JSONEncoding.default, headers: HTTPHeaders(headers)).response { response in
  47. switch response.result {
  48. case .success(let value):
  49. let json = try? JSON(data: value ?? Data())
  50. print("AppSaManager responseObject: \(String(describing: json))")
  51. if json?["code"] == 10000 {
  52. print("AppSaManager asa用户 提交成功")
  53. completion(true)
  54. } else {
  55. print("AppSaManager asa用户 提交失败")
  56. completion(false)
  57. }
  58. case .failure(let error):
  59. print("AppSaManager asa用户 error: \(error)")
  60. completion(false)
  61. }
  62. }
  63. }
  64. func addEventAttribution(eventDict: [String: Any]) {
  65. if self.payDataNotExist() {
  66. return
  67. }
  68. var dict: [String: Any] = [String: Any]()
  69. if let payLoad: [String: Any] = UserDefaults.standard.object(forKey: "ASA_ATTRIBUTION_PAYLOAD") as? [String : Any] {
  70. if let campaignId = payLoad["campaignId"] as? Int {
  71. // if campaignId == 1234567890 {
  72. // return
  73. // } else {
  74. dict["campaign_id"] = campaignId
  75. // }
  76. }
  77. if let adGroupId = payLoad["adGroupId"] as? Int {
  78. dict["ad_group_id"] = adGroupId
  79. }
  80. if let keywordId = payLoad["keywordId"] as? Int {
  81. dict["keyword_id"] = keywordId
  82. }
  83. let formatter = DateFormatter()
  84. formatter.timeZone = TimeZone.autoupdatingCurrent
  85. formatter.dateFormat = "yyyy-MM-dd"
  86. let todayDate = formatter.string(from: Date())
  87. dict["date"] = todayDate
  88. dict["timezone"] = "ORTZ"
  89. if let idfa = KeyboardSharedDataManager.shared.getInitIDFA() {
  90. dict["unique_device"] = KeyboardSharedDataManager.shared.getInitIDFA()
  91. } else {
  92. dict["unique_device"] = KeyboardSharedDataManager.shared.getInitIDFV()
  93. }
  94. }
  95. for (key, value) in eventDict {
  96. dict[key] = value
  97. }
  98. let urlString = String(format: "%@/asabackendDataDetail/add?org_id=%@&sign=%@&debug=true", hostUrl, orgId, sign )
  99. let headers = ["Content-Type": "application/json"]
  100. let parameters = ["backend_data_detail": dict]
  101. // 使用Alamofire发送POST请求
  102. AF.request(urlString, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: HTTPHeaders(headers)).response { response in
  103. switch response.result {
  104. case .success(let value):
  105. let json = try? JSON(data: value ?? Data())
  106. print("AppSaManager responseObject: \(String(describing: json))")
  107. if json?["code"] == 10000 {
  108. print("AppSaManager asa用户 提交成功")
  109. } else {
  110. print("AppSaManager asa用户 提交失败")
  111. }
  112. case .failure(let error):
  113. print("AppSaManager asa用户 error: \(error)")
  114. }
  115. }
  116. }
  117. func payDataNotExist() -> Bool {
  118. guard UserDefaults.standard.object(forKey: "ASA_ATTRIBUTION_PAYLOAD") is [String: Any] else {
  119. return true
  120. }
  121. return false
  122. }
  123. }