iOS
My app links the Rust library fine — so why can't the Notification Service Extension call it?
iOS platform internals from real integration problems: processes, linking, extensions, and what Xcode is actually doing under the build button.
The App Links CryptoCore Fine — So Why Can't the Notification Extension Call It?
An iOS app and its Notification Service Extension are two executables. What sharing one Rust library really takes: ABI, packaging, linking, and shared state.
Two Frameworks Need SQLCipher, So Does the Extension — How Many Copies Does the iPhone End Up With?
E2EE and Feature X both need SQLCipher. The app links both, the notification extension links one. Counting the copies — in the graph, the bundle, and at runtime — is three different questions.
The Rust Core Is Done — So How Do Kotlin and Swift Actually Call It?
UniFFI, cbindgen, or hand-written FFI? Choosing the binding layer that lets Kotlin and Swift call a Rust library — with Firefox, Element X, and Signal as evidence.
The App Went to the Background — Is My Code Still Running?
A background queue is not background execution. Building the iOS lifecycle mental model — foreground, background, suspended — from an E2EE core that persists sessions to SQLCipher.
iOS Has Six Ways to Run in the Background — Which One Actually Delivers My Message?
beginBackgroundTask, BGTaskScheduler, URLSession, silent push, PushKit, NSE — a decision guide to iOS background execution, tested against an E2EE messaging core.
Coming in this series
- Two Processes, One Ratchet: Crypto State in an App Group
- From cargo build to XCFramework: the Rust-to-iOS Pipeline