Permissions and the Privacy Manifest: how to request access and what to declare?
The gist
Access to the camera, photos, location, contacts and microphone is protected by the system. To request it, Info.plist needs an NS…UsageDescription key (NSCameraUsageDescription, NSPhotoLibraryUsageDescription, NSLocationWhenInUseUsageDescription) with a clear explanation; without the key the app crashes on the first call to the API. The system alert is shown once: after a refusal, a repeated request returns the denial immediately, and the user can only restore access in Settings.
Separately, since 2024 the App Store requires a privacy manifest (PrivacyInfo.xcprivacy) — a declaration of which data the app collects, whether it tracks, and why it uses APIs from the "required reason" list.
The rest of this answer, with code and interview follow-ups, is in the DevPrep app.
Read the full answer in DevPrep