juce-framework / JUCE

JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, LV2 and AAX audio plug-ins.
https://juce.com
Other
6.3k stars 1.67k forks source link

[Bug]: submitting to ios app store results in ITMS-91053: Missing API declaration error #1365

Open modosc opened 3 months ago

modosc commented 3 months ago

Detailed steps on how to reproduce the bug

  1. submit to the ios app store
  2. get an email like this:
ITMS-91053: Missing API declaration - Your app’s code in the “NNN” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategorySystemBootTime. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.
ITMS-91053: Missing API declaration - Your app’s code in the “NNN” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryUserDefaults. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.
ITMS-91053: Missing API declaration - Your app’s code in the “NNN” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryFileTimestamp. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.

What is the expected behaviour?

  1. there should be no errors (this is the first time i've seen these in 3+ years of publishing this app)
  2. juce should either: a. stop using these apis, or b. add projucer settings to configure these to quiet the errors

Operating systems

iOS

What versions of the operating systems?

any, this is specific to the app store

Architectures

ARM

Stacktrace

No response

Plug-in formats (if applicable)

No response

Plug-in host applications (DAWs) (if applicable)

No response

Testing on the develop branch

I have not tested against the develop branch

Code of Conduct

marcussatellite commented 3 months ago

This is not a bug in JUCE, but rather a new requirement from Apple.

Great tutorial here, with Apple documentation:

https://mastodon.social/@chockenberry/112095424613859371

modosc commented 3 months ago

This is not a bug in JUCE, but rather a new requirement from Apple.

Great tutorial here, with Apple documentation:

https://mastodon.social/@chockenberry/112095424613859371

i understand how to make this work, but this happens because juce is using these APIs, not because an end user explicitly called them. the ios exporter should automatically generate the privacy manifest for the APIs it is using.

chriscope-RODE commented 3 months ago

Also started to encounter this new requirement from Apple App Store Connect. I do feel like the JUCER IOS exporter should be making these arrangements as the warning is generated when using a very vanilla default PROJUCER setup

phraemer commented 2 months ago

There needs to be a way to specify a PrivacyInfo.xcprivacy from CMake too. Tried using PLIST_TO_MERGE but that doesn't work.