From fcfb5d5feb3210e9c55442b9ec8406b52975e1a0 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 15 May 2026 09:16:06 +0000 Subject: [PATCH] Document iOS permission strings override in mobile v3 config --- .../mobile/3/getting-started/configuration.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/resources/views/docs/mobile/3/getting-started/configuration.md b/resources/views/docs/mobile/3/getting-started/configuration.md index 3674f056..5cc588c6 100644 --- a/resources/views/docs/mobile/3/getting-started/configuration.md +++ b/resources/views/docs/mobile/3/getting-started/configuration.md @@ -303,6 +303,35 @@ Set your Apple Developer Team ID for code signing: This is typically detected from your installed certificates, but you can override it here. Find your Team ID in your Apple Developer account under Membership details. +## iOS Permission Strings + +Plugins declare their own iOS `Info.plist` usage descriptions through their manifests (see +[Permissions & Dependencies](../plugins/permissions-dependencies)). When you install multiple plugins that +claim the same key — for example, `mobile-camera` and `mobile-scanner` both setting +`NSCameraUsageDescription` — the merged result is whichever plugin loaded last, which isn't always what you +want to show App Store reviewers. + +The top-level `permissions` array in `config/nativephp.php` lets you override those merged values. Anything +you set here is applied **after** all plugin manifests are merged, so it always wins: + +```php +'permissions' => [ + 'NSCameraUsageDescription' => 'Used to take a profile photo.', + 'NSMicrophoneUsageDescription' => 'Used to record audio with your videos.', + 'NSPhotoLibraryUsageDescription' => 'Used to select photos for your post.', +], +``` + +Use this when you want a single, explicit usage string for App Store review, or when you need to tailor a +plugin-provided description to match how your app actually uses the permission. + + + ## App Store Connect Configure automated iOS uploads with the App Store Connect API: