Fix iOS analytics behaviour in contention with ComposePreference - #1035
Merged
Conversation
Three issues that all surfaced when Firebase Analytics + Crashlytics
started running on iOS:
- compose-preference's iOS backend assumed exclusive ownership of the
app's NSUserDefaults persistent domain, throwing IllegalArgumentException
on Settings composition when Firebase Crashlytics's cached remote
settings (nested NSDictionary) sat in the same domain, and wiping that
cache on every user preference change via setPersistentDomain. Introduce
a Soundscape-scoped preferences flow (expect/actual: Android delegates
to the library default; iOS filters foreign value types on read and
merges them back on write) and pass it into ProvidePreferenceLocals.
- UnhandledExceptionLogger's NSLog("%@", ...) crashed on
objc_opt_respondsToSelector because Kotlin/Native's NSLog vararg binding
cannot reliably bridge Kotlin String to NSString for %@ formatters,
turning every uncaught coroutine exception into an app termination.
Switch to println so exceptions actually surface in Console.app.
- Crashlytics dSYM upload script assumed the standard DerivedData layout
where BUILD_DIR sits under DerivedData. Add a `find` fallback for
custom Xcode build locations, skip the phase entirely on Debug (Firebase
is gated off there), and move DEBUG_INFORMATION_FORMAT: dwarf-with-dsym
to Release-only so Debug builds are not slowed generating unused dSYMs.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Apple's HIG forbids apps from quitting themselves, and iOS never wired an onExitApp callback — so the drawer item silently did nothing when tapped. Make the callback nullable and skip rendering the item when it is null; Android still passes a lambda so its behavior is unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Search results for roads (e.g. "Craigdhu Road, Milngavie") were rendering
as just the city ("Milngavie"). Photon returns highway hits with the road
in the "name" property and no "street" property, so AddressFormatter only
sees the city. The line that copied "name" into nameLocal had been
accidentally commented out (along with two debug printlns) during the iOS
Geocoder work, so the fallback dropped the road entirely.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.