2023年11月29日发(作者:opporeno2z值得入手吗)
AppleASA归因技术⽀持
看到算你捡到宝了,直接⽤就⾏
import AdServices
import Foundation
import iAd
///ASA
归因技术⽀持
struct ASA {
static let shared = ASA()
private init() {}
func getToken() -> String? {
var adToken: String?
if #available(iOS 14.3, *) {
do {
adToken = try AAAttribution.attributionToken()
} catch {}
}
return adToken
}
/// Apple ASA
技术⽀持
func AppleASA() {
if #available(iOS 14.3, *) {
let adToken = getToken()
// POST
发送给苹果得到归因数据
sendToken(Token: adToken ?? "") { attrData in
postData(tokenData: attrData)
print("LogAds:14.3+ Dict: (attrData ?? [:])")
if let attrData = attrData {
var attrDataL: [String: Any] = attrData
// userId
添加
attrDataL["type"] = "1"
}
}
} else {
ADClient.shared().requestAttributionDetails { attrData, _ in
postData(tokenData: attrData)
print("LogAds:14- Dict: (attrData ?? [:])")
}
}
}
///
向服务端发送数据
/// - Parameter tokenData: token
发送归因后得到的数据
private func postData(tokenData: [String: Any]?) {
guard let tokenData = tokenData else {
return
}
//
转字符串
//
⽣成字典发往服务器
//
这个看具体需求,我就不实现了
}
/// token
发送归因得到数据
/// - Parameters:
/// - Token: Token
归因
/// - completeBlock:
回调
private func sendToken(Token: String, completeBlock: @escaping (_ data: [String: Any]?) -> Void) {
let url = "/api/v1/"
let url = "/api/v1/"
let postData = Token.data(using: .utf8, allowLossyConversion: true)
var request = URLRequest(url: URL(string: url)!)
request.httpMethod = "POST"
request.addValue("text/plain", forHTTPHeaderField: "Content-Type")
request.httpBody = postData
let datatask = URLSession.shared.dataTask(with: request as URLRequest) { data, _, error in
var result: [String: Any]?
guard let _ = error else {
//
请求成功
var resDic: [String: Any]?
do {
resDic = try JSONSerialization.jsonObject(with: data ?? Data(), options: []) as? [String: Any]
} catch {}
result = resDic
completeBlock(result)
return
}
//
请求失败
print("失败")
let nulldict: [String: Any] = [:]
completeBlock(nulldict)
}
datatask.resume()
}
}
发布者:admin,转转请注明出处:http://www.yc00.com/num/1701260543a1064831.html
评论列表(0条)