@@ -10,34 +10,36 @@ public struct FacebookButtonView {
10
10
@Environment ( AuthService . self) private var authService
11
11
@State private var errorMessage = " "
12
12
@State private var showCanceledAlert = false
13
- @State private var showUserTrackingAlert = false
14
13
@State private var limitedLogin = true
14
+ @State private var showUserTrackingAlert = false
15
+ @State private var trackingAuthorizationStatus : ATTrackingManager
16
+ . AuthorizationStatus = . notDetermined
15
17
16
- public init ( ) { }
18
+ public init ( ) {
19
+ _trackingAuthorizationStatus = State ( initialValue: ATTrackingManager
20
+ . trackingAuthorizationStatus)
21
+ }
17
22
18
23
private var limitedLoginBinding : Binding < Bool > {
19
24
Binding (
20
25
get: { self . limitedLogin } ,
21
26
set: { newValue in
22
- let trackingStatus = ATTrackingManager . trackingAuthorizationStatus
23
- if newValue == true , trackingStatus != . authorized {
24
- self . showUserTrackingAlert = true
25
- } else {
27
+ if trackingAuthorizationStatus == . authorized {
26
28
self . limitedLogin = newValue
29
+ } else {
30
+ self . limitedLogin = false
27
31
}
28
32
}
29
33
)
30
34
}
31
35
32
36
func requestTrackingPermission( ) {
33
37
ATTrackingManager . requestTrackingAuthorization { status in
34
- switch status {
35
- case . authorized:
36
- print ( " Tracking authorized " )
37
- case . denied, . restricted, . notDetermined:
38
- print ( " Tracking not authorized " )
39
- @unknown default :
40
- print ( " Unknown status " )
38
+ Task { @MainActor in
39
+ trackingAuthorizationStatus = status
40
+ if status != . authorized {
41
+ showUserTrackingAlert = true
42
+ }
41
43
}
42
44
}
43
45
}
0 commit comments