Skip to content
This repository was archived by the owner on Jun 27, 2023. It is now read-only.

Commit 40be1ab

Browse files
feat: plugin-idfa: Add support for iOS 13 and below (segmentio#554)
1 parent 420600e commit 40be1ab

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

packages/plugins/plugin-idfa/ios/AnalyticsReactNativePluginIdfa.swift

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,36 +8,38 @@ class AnalyticsReactNativePluginIdfa: RCTEventEmitter {
88
override static func requiresMainQueueSetup() -> Bool {
99
return true
1010
}
11-
12-
@available(iOS 14, *)
1311

1412
@objc
1513
func getTrackingAuthorizationStatus(
1614
_ resolve: RCTPromiseResolveBlock,
1715
rejecter reject: RCTPromiseRejectBlock
1816
) -> Void {
19-
let status = ATTrackingManager.trackingAuthorizationStatus
20-
if status == .notDetermined {
21-
// we don't know, so should ask the user.
22-
askForPermission()
23-
}
24-
25-
let trackingStatus = statusToString(status)
26-
var idfa = fallbackValue
27-
var adTrackingEnabled = false
28-
29-
if status == .authorized {
30-
adTrackingEnabled = true
31-
idfa = ASIdentifierManager.shared().advertisingIdentifier.uuidString
17+
let adTrackingEnabled: Bool
18+
let trackingStatus: String
19+
20+
if #available(iOS 14, *) {
21+
let status = ATTrackingManager.trackingAuthorizationStatus
22+
if status == .notDetermined {
23+
// we don't know, so should ask the user.
24+
askForPermission()
25+
}
26+
27+
adTrackingEnabled = status == .authorized
28+
trackingStatus = statusToString(status)
29+
} else {
30+
adTrackingEnabled = ASIdentifierManager.shared().isAdvertisingTrackingEnabled
31+
trackingStatus = adTrackingEnabled ? "authorized" : "denied"
3232
}
33+
34+
let idfa = adTrackingEnabled ? ASIdentifierManager.shared().advertisingIdentifier.uuidString : fallbackValue
3335

3436
let context: [String: Any] = [
3537
"adTrackingEnabled": adTrackingEnabled,
3638
"advertisingId": idfa!,
3739
"trackingStatus": trackingStatus
3840
]
3941

40-
_ = JSONSerialization.isValidJSONObject(context)
42+
assert(JSONSerialization.isValidJSONObject(context))
4143

4244
resolve(context);
4345
}

0 commit comments

Comments
 (0)