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.

Home Page:https://juce.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

modosc opened this issue · comments

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

  • I agree to follow the Code of Conduct

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

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.

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

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