Post

Replies

Boosts

Views

Activity

Reply to ATTrackingManager.requestTrackingAuthorization stopped working in iOS 15
Unfortunately, our new app has now also been rejected twice. And is now probably waiting for the third rejection. We have several apps where App Tracking Transparency authorization prompt has been showing successfully for a year on iOS 14 or newer. We always called it in viewDidLoad. Now, the first time the new app was rejected because the App Tracking Transparency authorization prompt did not appear if called from viewDidLoad on iOS 15. That was our mistake because we unfortunately didn't test it on iOS 15. When we submitted the app for the second time, we showed the App Tracking Transparency authorization prompt in viewDidAppear and tested it on an iOS 15 device. The App Tracking Transparency authorization prompt was displayed successfully. Unfortunately, the app was rejected for the second time with the same reason. The third time we called the App Tracking Transparency authorization prompt from viewDidAppear after a 2 second delay. Now the app has been waiting for review for a bit longer and we are afraid that it will be rejected again. It is really frustrating. It works with all our test devices and we don't get any more information from the review team. Would it be possible that on the device of the review employee the "Settings -> Privacy -> Tracking" is disabled? This is our code for the App Tracking Transparency request: if (@available(iOS 14, *)) { ATTrackingManagerAuthorizationStatus status = [ATTrackingManager trackingAuthorizationStatus]; if(status == ATTrackingManagerAuthorizationStatusNotDetermined) { [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) { // Tracking authorization completed. Start loading ads here. [[NSOperationQueue mainQueue] addOperationWithBlock:^ { [self loadBannerAd]; [self createAndLoadInterstitial]; }]; }]; } else { [self loadBannerAd]; [self createAndLoadInterstitial]; } } else { // Fallback on earlier versions } Both times this was the reason for the rejection: 1.2 Legal: Privacy - Data Use and Sharing Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing The app privacy information you provided in App Store Connect indicates you collect data in order to track the user, including Advertising Data. However, you do not use App Tracking Transparency to request the user's permission before tracking their activity. 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.
Oct ’21
Reply to ATTrackingManager.requestTrackingAuthorization stopped working in iOS 15
The app has now been accepted with the 2 seconds delayed call. But since a delay is not a best solution, we have now solved it differently. As before, we now call a method from viewDidLoad without delay. In this method we check the status of the application. If the status is not active, then we call this method recursively after 0.5 seconds. As soon as the status is active, we call App Tracking Transparency authorization prompt. It should work that way and get through the review without any problems. We'll try to submit an update tomorrow. -(void)initAds { UIApplication *applicaiton = [UIApplication sharedApplication]; if (applicaiton.applicationState == UIApplicationStateActive) { if (@available(iOS 14, *)) { ATTrackingManagerAuthorizationStatus status = [ATTrackingManager trackingAuthorizationStatus]; if(status == ATTrackingManagerAuthorizationStatusNotDetermined) { [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) { // Tracking authorization completed. Start loading ads here. [[NSOperationQueue mainQueue] addOperationWithBlock:^ { [self loadBannerAd]; [self createAndLoadInterstitial]; }]; }]; } else { [self loadBannerAd]; [self createAndLoadInterstitial]; } } else { // Fallback on earlier versions } } else { [self performSelector:@selector(initAds) withObject:nil afterDelay:0.5f]; } }
Oct ’21