You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Facebook SDK v11.0.0在iOS14+设备上事件无法在Events Manager中记录的技术问题咨询

解决Facebook SDK v11.0.0在iOS14.1设备上事件不显示在Dashboard的问题

我之前在调试Facebook SDK v11.x版本适配iOS14的时候,也遇到过一模一样的问题——日志明明显示事件发出去了,但Dashboard里就是看不到数据。结合你的环境(iPhone X、iOS14.1、SDK v11.0.0),给你几个实用的排查方向:

1. 确认ATT授权的实际生效状态

虽然你调用了Settings.setAdvertiserTrackingEnabled(true),但在iOS14+系统里,这个设置必须经过用户同意ATT授权弹窗后才会真正生效。很多时候我们以为代码设置了就没问题,但实际用户可能点了拒绝,或者代码调用时机不对(比如在授权弹窗弹出前就设置了)。

你可以加一段代码确认实际的权限状态:

import AppTrackingTransparency
import FacebookCore

// 在合适的时机(比如用户打开APP后)请求授权
ATTrackingManager.requestTrackingAuthorization { status in
    DispatchQueue.main.async {
        print("ATT授权状态: \(status.rawValue)")
        print("Facebook SDK 实际跟踪状态: \(Settings.shared.isAdvertiserTrackingEnabled)")
    }
}

如果返回的状态不是authorized,那即使日志显示请求发送成功,事件也会被Facebook标记为「受限数据」,不会出现在常规的Dashboard里,只能在测试事件工具中查看。

2. 用测试事件工具查看实时数据

Facebook针对iOS14+的测试设备事件,默认不会直接同步到常规的事件Dashboard(正式环境的数据可能会延迟几小时甚至更久),你需要通过专门的测试工具查看:

  • 登录Facebook事件管理面板,找到你的应用
  • 切换到「测试事件」标签页
  • 选择你的iPhone X对应的测试设备(可以通过设备ID匹配)
  • 这里会实时显示该设备发送的所有标准事件和自定义事件,包括那些因为ATT授权问题被标记的受限数据

3. 检查事件发送的合规性

日志显示请求发送成功不代表事件符合Facebook的规则,你可以重点检查:

  • 自定义事件名称:不能包含特殊字符、空格,也不能和Facebook的标准事件重名(比如不能叫Purchase
  • 标准事件参数:比如Purchase事件必须包含value(数值类型)和currency(字符串类型,比如USD),缺少必填参数的事件会被过滤
  • 请求返回状态:在SDK调试日志里,找到事件请求的HTTP响应,确认状态码是200,并且没有error字段

4. 核对Facebook后台的配置

  • 确认应用的iOS平台Bundle ID和Xcode项目里的完全一致(包括大小写),后台配置错了的话事件会被拒收
  • 检查事件管理面板的「设置」里,有没有开启「事件接收」,有没有误将某些事件加入了过滤列表
  • 对于iOS14+,如果是正式环境,需要在后台上传ATT授权弹窗的描述并通过审核;测试环境虽然不强制,但最好确认配置无误

最后总结

如果以上排查都没问题,大概率是ATT授权未生效导致事件被归类为受限数据,这时候去测试事件工具里就能看到数据了。另外,Facebook的常规Dashboard数据有延迟,测试阶段优先用测试事件工具查看实时结果会更高效。

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

火山引擎 最新活动