资讯详情

Apple ASA归因技术支持

看到你捡到了宝,直接用就行了

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 = "https://api-adservices.apple.com/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()
    }
}

标签: asa系列磁性传感器ah023asa系列磁性传感器ah002

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台