Post

Replies

Boosts

Views

Activity

Reply to ATT - requestTrackingAuthorization returns notDetermined without presenting the prompt on iOS 27.0 beta
Built a minimal test project and attached it to FB24689594 (ATTPromptProbe, one Swift file, no dependencies, no app UI in front of the prompt). The request is issued from a button tap, so the app is active by construction. Result on iOS 27.0 beta 8 (24A5430a), trimmed of unrelated system logging: system version: Version 27.0 (Build 24A5430a) status at launch: notDetermined --- applicationState before request: active status before request: notDetermined returned notDetermined after 0.002s status after request: notDetermined advertisingIdentifier: 00000000-0000-0000-0000-000000000000 --- applicationState before request: active status before request: notDetermined returned notDetermined after 0.009s status after request: notDetermined advertisingIdentifier: 00000000-0000-0000-0000-000000000000 Two things this settles. The call returns in 2 ms and 9 ms, which is not the timing of a prompt that was presented and dismissed: nothing is displayed at all. And the second block is the "additional call" that requestTrackingAuthorization(completionHandler:) instructs an app to make when the status is still notDetermined; it behaves identically, and so does every subsequent attempt, so the documented remedy has no effect on this device. On the documented preconditions, the same page lists them explicitly: "Calls to the API only prompt when the application state is UIApplicationStateActive. The authorization prompt doesn't display if another permission request is pending user confirmation. Concurrent requests aren't preserved by iOS, and calls to the API through an app extension don't prompt." None of them apply here: the app is active, no other permission request is pending, this is not an app extension, and there is a single request per tap. The same behaviour occurs in unrelated third-party App Store apps on this device, which this test project cannot influence, so whatever is preventing the presentation is not specific to our code. The single most important finding: the only variable that changes the outcome is the Apple Account. Same device, same physical location, same build 24A5430a, same test project, no other change: signed in with an Italian Apple Account the prompt is never presented and the status stays notDetermined, while signed in with a Spanish Apple Account the prompt is presented correctly and the returned status reflects the user's choice. Nothing in the app, in its Info.plist, in the app state or in the device settings differs between the two runs. So the question from my original post stands, and it is the only one I need answered: is it expected on iOS 27.0 that requestTrackingAuthorization() never presents the ATT prompt for an Italian Apple Account while presenting it normally for a Spanish one, leaving the status permanently at notDetermined? If this is expected behaviour, please point me to the reference that documents it, because none of the conditions listed in the requestTrackingAuthorization(completionHandler:) documentation or in https://support.apple.com/en-us/102420 apply here, and an app has no supported way to tell this state apart from "the user has not been asked yet". If it is not expected, then it is a bug, and FB24689594 contains the test project and the full details.
Topic: Privacy & Security SubTopic: General Tags:
17h
Reply to ATT - requestTrackingAuthorization returns notDetermined without presenting the prompt on iOS 27.0 beta
Thanks Albert. Both of those are already excluded, and I should have included the details in the original post. Filed as FB24689594 with a sysdiagnose attached. App state: the request is issued only after the app is active, and this is asserted immediately before the call. The call is not made from didFinishLaunching, and no other permission prompt is pending at that moment. Info.plist: NSUserTrackingUsageDescription is present in every build of both apps, and these are shipping App Store apps where the prompt worked correctly on iOS 26 and earlier. It is not specific to our apps. On the same device, unrelated third-party App Store apps also fail to present the prompt. Settings > Privacy & Security > Tracking > "Allow Apps to Request to Track" is ON I can provide anything further through FB24689594 rather than here.
Topic: Privacy & Security SubTopic: General Tags:
18h
Reply to ATT - requestTrackingAuthorization returns notDetermined without presenting the prompt on iOS 27.0 beta
Built a minimal test project and attached it to FB24689594 (ATTPromptProbe, one Swift file, no dependencies, no app UI in front of the prompt). The request is issued from a button tap, so the app is active by construction. Result on iOS 27.0 beta 8 (24A5430a), trimmed of unrelated system logging: system version: Version 27.0 (Build 24A5430a) status at launch: notDetermined --- applicationState before request: active status before request: notDetermined returned notDetermined after 0.002s status after request: notDetermined advertisingIdentifier: 00000000-0000-0000-0000-000000000000 --- applicationState before request: active status before request: notDetermined returned notDetermined after 0.009s status after request: notDetermined advertisingIdentifier: 00000000-0000-0000-0000-000000000000 Two things this settles. The call returns in 2 ms and 9 ms, which is not the timing of a prompt that was presented and dismissed: nothing is displayed at all. And the second block is the "additional call" that requestTrackingAuthorization(completionHandler:) instructs an app to make when the status is still notDetermined; it behaves identically, and so does every subsequent attempt, so the documented remedy has no effect on this device. On the documented preconditions, the same page lists them explicitly: "Calls to the API only prompt when the application state is UIApplicationStateActive. The authorization prompt doesn't display if another permission request is pending user confirmation. Concurrent requests aren't preserved by iOS, and calls to the API through an app extension don't prompt." None of them apply here: the app is active, no other permission request is pending, this is not an app extension, and there is a single request per tap. The same behaviour occurs in unrelated third-party App Store apps on this device, which this test project cannot influence, so whatever is preventing the presentation is not specific to our code. The single most important finding: the only variable that changes the outcome is the Apple Account. Same device, same physical location, same build 24A5430a, same test project, no other change: signed in with an Italian Apple Account the prompt is never presented and the status stays notDetermined, while signed in with a Spanish Apple Account the prompt is presented correctly and the returned status reflects the user's choice. Nothing in the app, in its Info.plist, in the app state or in the device settings differs between the two runs. So the question from my original post stands, and it is the only one I need answered: is it expected on iOS 27.0 that requestTrackingAuthorization() never presents the ATT prompt for an Italian Apple Account while presenting it normally for a Spanish one, leaving the status permanently at notDetermined? If this is expected behaviour, please point me to the reference that documents it, because none of the conditions listed in the requestTrackingAuthorization(completionHandler:) documentation or in https://support.apple.com/en-us/102420 apply here, and an app has no supported way to tell this state apart from "the user has not been asked yet". If it is not expected, then it is a bug, and FB24689594 contains the test project and the full details.
Topic: Privacy & Security SubTopic: General Tags:
Replies
Boosts
Views
Activity
17h
Reply to ATT - requestTrackingAuthorization returns notDetermined without presenting the prompt on iOS 27.0 beta
Thanks Albert. Both of those are already excluded, and I should have included the details in the original post. Filed as FB24689594 with a sysdiagnose attached. App state: the request is issued only after the app is active, and this is asserted immediately before the call. The call is not made from didFinishLaunching, and no other permission prompt is pending at that moment. Info.plist: NSUserTrackingUsageDescription is present in every build of both apps, and these are shipping App Store apps where the prompt worked correctly on iOS 26 and earlier. It is not specific to our apps. On the same device, unrelated third-party App Store apps also fail to present the prompt. Settings > Privacy & Security > Tracking > "Allow Apps to Request to Track" is ON I can provide anything further through FB24689594 rather than here.
Topic: Privacy & Security SubTopic: General Tags:
Replies
Boosts
Views
Activity
18h