我们的应用程序通过此API收集idfa。
这是一个简单的计算属性:
var idfa: String {
return ASIdentifierManager.shared().advertisingIdentifier.uuidString
}
但是看起来它崩溃的可能性非常低,根据我们的生产记录,它会在一百万次运行中崩溃一次。
堆栈跟踪是:
- 0 libswiftFoundation.dylib 0x0000000184c34728 0x184c1b000 + 104232
- XXXApp 0x000000010bd42d70 AdsDataCollector.idfa.getter + 156118384 (AdsDataCollector.swift:0)
可能是什么原因?
现在已经晚了几年,但这里的崩溃是在使用 Swift 4 的 iOS 11 上,如果用户拒绝跟踪权限,
advertisingIdentifier
将在运行时返回 nil。
但是由于 Swift 错误地将属性注释为非 nil,所以它会在运行时崩溃。
现在,它返回一个为零的 UUID。