You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter项目集成Ad Support获取iOS UUID遇问题求助

问题:Flutter集成Ad Support获取iOS广告标识符失败

尝试通过以下Swift代码在Flutter项目中集成Ad Support框架获取广告UUID,但执行sudo pod install后仍报错,环境信息如下:

  • Flutter版本:2.10.5
  • Xcode版本:13.4.1
  • 系统:macOS Mojave 10.14.6

原生端实现代码

import AdSupport
import Flutter
import UIKit

public class FlutterAndroididPlugin: NSObject, FlutterPlugin {
  public static func register(with registrar: FlutterPluginRegistrar) {
    let channel = FlutterMethodChannel(name: "flutter_IosUUid", binaryMessenger: registrar.messenger())
    let instance = FlutterAndroididPlugin()
    registrar.addMethodCallDelegate(instance, channel: channel)
  }

  public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
    switch call.method {
    case "getPlatformVersion":
      result("iOS " + UIDevice.current.systemVersion)
    case "getAdvertisingIdentifier":
      let identifierManager = ASIdentifierManager.shared()
      if identifierManager.isAdvertisingTrackingEnabled {
        let deviceId = identifierManager.advertisingIdentifier.uuidString
          result(deviceId)
      }  
      else {
        result(nil)
      }
    default:
      result(FlutterMethodNotImplemented)
    }
  }
}

排查与解决步骤

  • 检查Podfile配置:确认Podfile的iOS target块内添加了pod 'AdSupport',示例配置:
    target 'Runner' do
      use_frameworks!
      use_modular_headers!
    
      flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
      pod 'AdSupport' # 确保该行存在于target内部
    end
    
  • 修复Pod安装权限问题:避免使用sudo pod install(权限过高可能导致依赖加载异常),执行以下命令重新安装依赖:
    rm -rf Pods/ Podfile.lock
    pod deintegrate
    pod install
    
  • 验证Xcode项目链接配置:
    1. 打开Xcode项目,进入Build Phases -> Link Binary With Libraries,确认AdSupport.framework已添加(可通过+按钮搜索添加)。
    2. 检查Build Settings -> Other Linker Flags,确保包含-ObjC(部分场景下需此配置保证框架符号正确加载)。
  • 添加iOS追踪权限配置:在Info.plist中添加NSUserTrackingUsageDescription键,值为向用户说明追踪用途的文本(iOS 14+强制要求,缺失会导致isAdvertisingTrackingEnabled返回false,甚至框架加载异常):
    <key>NSUserTrackingUsageDescription</key>
    <string>需要获取广告标识符以提供个性化广告服务</string>
    
  • 清理Xcode缓存:执行以下命令清理DerivedData,然后重新打开项目编译:
    rm -rf ~/Library/Developer/Xcode/DerivedData
    
  • 核对MethodChannel名称:确保Flutter端调用的通道名称与原生端的flutter_IosUUid完全一致(大小写敏感)。

内容的提问来源于stack exchange,提问作者user21218693

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 21:28:29