IDFAManager.swift 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. //
  2. // IDFAManager.swift
  3. // sunoAi
  4. //
  5. // Created by leon on 2024/4/9.
  6. //
  7. import Foundation
  8. import AppTrackingTransparency
  9. import AdSupport
  10. import Flutter
  11. class IDFAManager{
  12. static func getIDFA(call: FlutterMethodCall, result: @escaping FlutterResult) {
  13. if #available(iOS 14.0, *){//ios14以上系统 请求用户授权
  14. ATTrackingManager.requestTrackingAuthorization { status in
  15. switch status {
  16. case .authorized:
  17. let idfa = ASIdentifierManager.shared().advertisingIdentifier
  18. DebugPrint("IDFA 用户同意了授权: \(idfa.uuidString)")
  19. initGravityEngineSDK(call: call, result: result, idfa: idfa.uuidString)
  20. case .denied:
  21. DebugPrint("IDFA 用户拒绝了授权")
  22. initGravityEngineSDK(call: call, result: result, idfa: "")
  23. case .restricted:
  24. DebugPrint("IDFA 应用无法请求授权,可能由于限制")
  25. initGravityEngineSDK(call: call, result: result, idfa: "")
  26. case .notDetermined:
  27. DebugPrint("IDFA 用户尚未做出选择")
  28. initGravityEngineSDK(call: call, result: result, idfa: "")
  29. @unknown default:
  30. break
  31. }
  32. }
  33. }else{//ios14以下系统 请求用户授权
  34. if ASIdentifierManager.shared().isAdvertisingTrackingEnabled {
  35. let idfa = ASIdentifierManager.shared().advertisingIdentifier
  36. DebugPrint("ios14以下系统 IDFA 用户同意了授权: \(idfa)")
  37. initGravityEngineSDK(call: call, result: result, idfa: idfa.uuidString)
  38. } else {
  39. DebugPrint("ios14以下系统 IDFA 用户拒绝了授权")
  40. initGravityEngineSDK(call: call, result: result, idfa: "")
  41. }
  42. }
  43. }
  44. //四种情况下都在这里初始化引力引擎sdk
  45. static func initGravityEngineSDK(call: FlutterMethodCall, result: @escaping FlutterResult, idfa:String){
  46. //引力引擎调用的时候需返回主线程加载 否则程序会崩溃
  47. DispatchQueue.main.async {
  48. if (GravityEnginePlugin.gravityEngineSDK == nil){
  49. GravityEnginePlugin.initialize(call: call, result: result, idfa: idfa)
  50. }
  51. }
  52. }
  53. }