0

I have the following in my AppDelegate

 //added these 3 methods
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        window?.makeKeyAndVisible()
        
        GIDSignIn.sharedInstance()?.clientID = Environment.googleClientId
        
        FirebaseApp.configure()
        
        ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions);
        
        
        let adjustAppToken = Environment.adjustToken
        
        var environment = ADJEnvironmentSandbox
        
        if (Environment.environment == "prod") {
            environment = ADJEnvironmentProduction
        }
        let adjustConfig = ADJConfig(
            appToken: adjustAppToken,
            environment: environment)
        adjustConfig?.logLevel = ADJLogLevelVerbose
        adjustConfig?.delayStart = 2.5
        adjustConfig?.delegate = self
        Adjust.appDidLaunch(adjustConfig)
        
        var configFlurryAPIKey = "x";
        if (!isDev) {
            configFlurryAPIKey = "x";
        }
        FlurryMessaging.setAutoIntegrationForMessaging()
        
        // Step2 : (Optional) Get a callback
        FlurryMessaging.setMessagingDelegate(self)
        
        let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.0"
        
        // Step3 : Start Flurry session
        let builder = FlurrySessionBuilder.init()
            .withAppVersion(version)
            .withIncludeBackgroundSessions(inMetrics: true)
            .withCrashReporting(true)
            .withSessionContinueSeconds(10)
            .withLogLevel(FlurryLogLevelAll)
        Flurry.startSession(configFlurryAPIKey, with: builder)
        
        // registerForPushNotifications()
    
        
        Purchases.debugLogsEnabled = true
        Purchases.configure(withAPIKey: Environment.revenueCatKey)
        
        Amplitude.instance().trackingSessionEvents = true
        // Initialize SDK
        let amplitudeKey = Environment.amplitudeKey
        Amplitude.instance().initializeApiKey(amplitudeKey)
        
        if #available(iOS 14, *) {
            print("status notDetermined == \(ATTrackingManager.trackingAuthorizationStatus == .notDetermined)")
            print("status authorized == \(ATTrackingManager.trackingAuthorizationStatus == .authorized)")
            print("IDFA == \(ASIdentifierManager.shared().advertisingIdentifier)")
            
            ATTrackingManager.requestTrackingAuthorization { (status) in
                var statusStr = "";
                
                if (status == .authorized) {
                    statusStr  = "authorized"
                } else if (status == .denied) {
                    statusStr = "denied"
                } else {
                    statusStr = "restricted"
                }
                let identify = AMPIdentify().set("att", value: statusStr as NSObject)
                Amplitude.instance().identify(identify!)
            }
        }

Even though I'm calling App Transparency, Apple Review sent me this message

Starting with iOS 14.5, apps on the App Store need to receive the user’s permission through the AppTrackingTransparency framework before collecting data used to track them. This requirement protects the privacy of App Store users.

Next Steps

Here are two ways to resolve this issue:

  • If you do not currently track, or decide to stop tracking, update your app privacy information in App Store Connect. You must have the Account Holder or Admin role to update app privacy information.

  • If you track users, you must implement App Tracking Transparency and request permission before collecting data used to track. When you resubmit, indicate in the Review Notes where the permission request is located.

Does anyone know what I'm doing wrong?

Rue Vitale
  • 1,549
  • 4
  • 17
  • 24

1 Answers1

0

You can follow this link to know how to update AppStore privacy if your app does not tracking user for third-party service purpose, otherwise you must implement App Transparency framework.
App Store Rejection - Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing