5 exercises — essential vocabulary for iOS, Android, and cross-platform mobile developers: app types, lifecycle, deep links, build distribution, and SDKs.
A mobile developer is explaining architecture choices to a new team member: "We chose React Native so we can share most of the codebase between iOS and Android, but it compiles to native components — it's not running in a WebView." Which category best describes React Native?
Mobile app development has four main approaches: Native (option A): written in platform-specific languages — Swift/Objective-C for iOS, Kotlin/Java for Android. Separate codebases, maximum performance and platform integration, highest development cost. Cross-platform with native rendering (option B — React Native, Xamarin MAUI): shared codebase (JS/TS or C#) that renders to native platform components. Good performance, lower cost than full native, minor platform-specific code still needed. Hybrid / WebView-based (option C — Ionic, Cordova, Capacitor): a web app (HTML/CSS/JS) running inside a native WebView container. Easiest code sharing, but performance and UX can feel "webby". PWA (option D): a website with a service worker and manifest that can be installed on the home screen, works offline. Not a native app — lives in the browser. Flutter is a fifth category: Dart-based framework by Google that compiles to native ARM code and draws its own widgets using Skia/Impeller — not native components, but high-performance custom rendering.
2 / 5
An iOS developer says: "When the user swipes the app away, it goes to the background. If the system is low on memory it might be terminated — our app needs to save state before that happens." What concept is the developer describing?
The app lifecycle describes the states a mobile app transitions through during its lifetime. iOS app lifecycle states: Not running → Active (foreground, handling events) → Inactive (transitioning, e.g., phone call interruption) → Background (running code but not visible) → Suspended (app frozen, memory may be reclaimed). Android lifecycle (Activity/Fragment): onCreate → onStart → onResume (running) → onPause → onStop → onDestroy. Key practice: save user state in applicationWillResignActive (iOS) / onPause (Android) before the app may be killed. Background fetch (option C): a specific iOS feature allowing apps to periodically download content in the background — different from lifecycle state management. Memory leak (option A): memory that's allocated but never freed — causes the app to use increasing RAM over time, which may eventually trigger the OS to kill the app, but is a separate concept from lifecycle management. Lifecycle vocabulary in conversation: "We need to handle the onResume callback to refresh stale data after the user returns from the camera intent."
3 / 5
A product manager asks the team: "Can we open the in-app chat screen directly when the user taps the push notification — even if the app isn't open?" What is this feature called?
A deep link is a URL that navigates a user to a specific screen inside a mobile app — bypassing the home screen or app root. Types: Custom URL scheme (option D): protocol registered by the app, e.g., myapp://chat/123. Simple but limited to devices that have the app installed. Universal Links (iOS) / App Links (Android): standard HTTPS URLs (https://example.com/chat/123) that open the app if installed, or the website if not. More secure and SEO-friendly. Deferred deep link: directs users to the app store if the app isn't installed, then opens the correct screen after install — used in marketing campaigns. Intent filter (option C): the Android mechanism that declares which URL patterns an Activity handles — not the name of the end-user feature, but the implementation mechanism. Deep links usage: push notification payloads include a deep link URL; when tapped, the OS routes to the matching app screen. In conversation: "QR codes in the packaging deep-link to the product page in the app — and fall back to the mobile web page if the app isn't installed."
4 / 5
A mobile team member explains a testing process: "Before we distribute the build to testers, we run it on the Android Emulator and the iOS Simulator to catch obvious crashes, then we send the build to our beta testers via TestFlight." What is the difference between an emulator and a simulator?
The terminology distinction: Emulator (Android Emulator): simulates the entire device including the hardware layer — CPU, memory, sensors. Runs actual ARM binaries. More faithful to the real device, slower to start. Simulator (iOS Simulator): replicates the software environment and UI behaviour but runs compiled x86/x86_64 code on the Mac CPU — does not simulate ARM hardware. Faster and lighter, but may miss hardware-specific bugs (Metal GPU rendering, Bluetooth, biometrics). Practical consequence: you can test camera, cellular, and GPS edge cases more reliably on a real device or Android Emulator. iOS Simulator cannot simulate some hardware features at all (e.g., Face ID only simulates success/fail, not actual biometric processing). Related vocabulary: TestFlight (option D mentions) — Apple's official beta testing distribution platform. Firebase App Distribution — Google's equivalent for Android (and iOS). APK / IPA — Android Package / iOS App Archive (the distributable build artefacts). In conversation: "The crash only reproduces on a real device — it doesn't show up in the Simulator because it's a Metal rendering issue."
5 / 5
A mobile architect explains a decision: "We use an SDK provided by the payment provider — it handles PCI compliance, tokenisation, and the native payment sheet UI. We don't write any payment logic ourselves." What is an SDK in the context of mobile development?
An SDK (Software Development Kit) is a collection of tools, libraries, APIs, sample code, and documentation that enables developers to build on top of a platform or integrate a third party service. In mobile development, SDKs are ubiquitous: Payment SDKs: Stripe SDK, Braintree SDK, Apple Pay / Google Pay — handle payment flows without exposing raw card data to the app. Analytics SDKs: Firebase Analytics, Mixpanel, Amplitude — track user behaviour. Push notification SDKs: Firebase Cloud Messaging (FCM) — receive and display push notifications. Authentication SDKs: Auth0, Firebase Auth — handle OAuth flows, biometric login. Maps SDKs: Google Maps SDK, Mapbox — render maps and routing in-app. Crash reporting SDKs: Sentry, Crashlytics — capture crashes and exceptions automatically. SDK vs. API: An API is the interface (set of endpoints/functions). An SDK is a packaged implementation that makes using the API easier — wrapping HTTP calls, handling auth, providing platform-native UI components, and reducing boilerplate. In conversation: "Integrating the Braintree SDK took two days — building the same PCI-compliant payment flow ourselves would take months."