feat(ios): add settings-navigation:// support for iOS 26+ - #45
Conversation
Add the new settings-navigation:// URL scheme introduced in iOS 26, with automatic version detection to fall back to legacy App-prefs: URLs on older versions. Changes: - Add getIOSVersion method channel for iOS version detection - Add lazy version cache with resetIOSVersionCache() for testing - 5 existing methods now version-switch between old and new URLs: accountSettings, iCloud, storageAndBackup, privacy, locationServices - 38 new methods for iOS 26+ settings-navigation:// routes: Apple Account (20), Privacy & Security (21), Apps (20), Home, Search, TV Provider - Simplify Swift plugin: remove redundant iOS 10 availability check, return success via completion handler - Expand test suite from 6 to 54 tests covering all iOS methods
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b004147206
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| } else { | ||
| UIApplication.shared.openURL(url) | ||
| } | ||
| if let url = URL(string: argument), UIApplication.shared.canOpenURL(url) { |
There was a problem hiding this comment.
Declare the new scheme before querying it
For host apps that do not list settings-navigation in LSApplicationQueriesSchemes—including the repository's example app—iOS rejects this canOpenURL query, so execution returns false before open is attempted. Consequently, the newly added iOS 26 routes, including the five version-switched existing APIs, do not work with the default setup; either avoid this preflight check and use the open completion result or require and document the host Info.plist entry.
Useful? React with 👍 / 👎.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Status
READY
Description
Add the new
settings-navigation://URL scheme introduced in iOS 26, with automatic version detection to fall back to legacyApp-prefs:URLs on older versions.What changed
Version-aware routing (5 existing methods):
accountSettings()—App-prefs:ACCOUNT_SETTINGS→settings-navigation://com.apple.Settings.AppleAccountiCloud()—App-prefs:CASTLE→settings-navigation://.../ICLOUD_SERVICEstorageAndBackup()—App-prefs:CASTLE&path=STORAGE_AND_BACKUP→settings-navigation://.../STORAGE_AND_BACKUPprivacy()—App-prefs:Privacy→settings-navigation://.../PrivacyAndSecuritylocationServices()—App-prefs:LOCATION_SERVICES→settings-navigation://.../LOCATION38 new methods for iOS 26+ only:
contactKeyVerification,iCloudDrive,iCloudPhotos,iCloudMail,iCloudContacts,iCloudCalendar,iCloudReminders,iCloudSafari,iCloudNotes,iCloudNews,iCloudBackup,iCloudHealth,iCloudPasswordsAndKeychain,iCloudHideMyEmail,findMyDevice,appleAccountContact,appleAccountPasswordAndSecurity,appleAccountPaymentAndShipping,appleAccountSubscriptions,appleAccountFamilyprivacyHealth,privacyHealthData,privacyShareMyLocation,privacyContacts,privacyCalendars,privacyReminders,privacyPhotos,privacyBluetoothSharing,privacyMicrophone,privacySpeechRecognition,privacyCamera,privacyHomeKit,privacyMediaAndAppleMusic,privacyAnalytics,privacyAdvertising,privacyFilesAndFolders,privacyTracking,privacyAppPrivacyReport,privacySafetyCheck,privacyLockdownMode,privacySensitiveContentapps,safari,safariExtensions,safariBlockPopUps,safariPreventCrossSiteTracking,safariAutoFill,safariDownloads,passwords,passwordsSecurityRecommendations,notes(+ 8 sub-methods),measure,measureUnitshome,search,tvProviderArchitecture:
Other changes:
getIOSVersionmethod channel for version detectionresetIOSVersionCache()for testingType of Change