0

I implemented the Apple Privacy Tracking Request on my app, and I appears whenever I test it in my real device - it appears over the first screen of the OnBoarding. However, after I archive and send it to beta testing, it just doesn't show-up. I thought it might just be a bug due to the first screens of the TestFlight beta-test, but the people from the App Store keep rejecting it on the basis that I supposedly don't have the Apple Tracking Request in place. Can you help?

Here is what I've done.

import Foundation
import SwiftUI
import GoogleMobileAds
import AppTrackingTransparency
import AdSupport

@main struct ERappApp: App {
    @StateObject private var store = PatientStore()
    @StateObject private var profstore = ProfileStore()
    @AppStorage("_shouldShowOnboarding") var shouldShowOnboarding: Bool = true
    var body: some Scene {
        WindowGroup {
            TabView {
                [...]
            }
            .onAppear {
                if #available(iOS 14, *) {
                    // Display permission to track
                    ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
                        switch status {
                        case .notDetermined:
                            print("Unknown consent")
                        case .restricted:
                            print("Device has an MDM solution applied")
                        case .denied:
                            print("Denied consent")
                        case .authorized:
                            print("Granted consent")
                        default:
                            print("Unknown")
                        }
                    })
                }
                PatientStore.load { result in
                    switch result {
                    case .failure(let error):
                        fatalError(error.localizedDescription)
                    case .success(let cards):
                        store.cards = cards
                    }
                }
                ProfileStore.load { result in
                    switch result {
                    case .failure(let error):
                        fatalError(error.localizedDescription)
                    case .success(let prof):
                        profstore.prof = prof
                    }
                }
            }
            .fullScreenCover(isPresented: $shouldShowOnboarding,content: {
                OnBoardingView(shouldShowOnboarding: $shouldShowOnboarding)
            })
            
        }
    }
}


torrinha
  • 1
  • 2

1 Answers1

0

Changed this way, works fine now.

.onAppear {
                if #available(iOS 14, *) {
                    DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
                        ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
                            switch status {
                            case .notDetermined:
                                print("Unknown consent")
                            case .restricted:
                                print("Device has an MDM solution applied")
                            case .denied:
                                print("Denied consent")
                            case .authorized:
                                print("Granted consent")
                            default:
                                print("Unknown")
                            }
                        })
                    }
                        
                }
                PatientStore.load { result in
                    switch result {
                    case .failure(let error):
                        fatalError(error.localizedDescription)
                    case .success(let cards):
                        store.cards = cards
                    }
                }
                ProfileStore.load { result in
                    switch result {
                    case .failure(let error):
                        fatalError(error.localizedDescription)
                    case .success(let prof):
                        profstore.prof = prof
                    }
                }
            }
torrinha
  • 1
  • 2