Side-by-side comparison of every public API symbol on Android and iOS.
1. Core SDK Entry Point
| API |
Android (AutoMobileSDK) |
iOS (AutoMobileSDK) |
Notes |
| Singleton |
INSTANCE (object) |
shared (static let) |
Platform idiom |
initialize |
initialize(Context) |
initialize(bundleId:) |
Android uses Context; iOS uses optional bundleId |
initialize (config) |
initialize(Context, Configuration) |
initialize(bundleId:configuration:) |
Aligned |
setEnabled |
setEnabled(Boolean) |
setEnabled(Bool) |
Aligned |
isEnabled |
isEnabled() |
isEnabled (property) |
Aligned |
addNavigationListener |
addNavigationListener(NavigationListener) |
addNavigationListener(NavigationListener) |
Aligned |
removeNavigationListener |
removeNavigationListener(NavigationListener) |
removeNavigationListener(NavigationListener) |
Aligned |
clearNavigationListeners |
clearNavigationListeners() |
clearNavigationListeners() |
Aligned |
notifyNavigationEvent |
notifyNavigationEvent(NavigationEvent) |
notifyNavigationEvent(NavigationEvent) |
Aligned |
listenerCount |
getListenerCount() |
listenerCount (property) |
Aligned |
currentSessionId |
currentSessionId() |
currentSessionId() |
Aligned |
addBreadcrumb |
addBreadcrumb(String, BreadcrumbCategory, Map) |
addBreadcrumb(message:category:metadata:) |
Aligned |
shutdown |
shutdown() |
shutdown() |
Aligned |
setUserId |
setUserId(String?) |
setUserId(String?) |
Aligned |
setTag |
setTag(String, String) |
setTag(String, value: String) |
Aligned |
removeTag |
removeTag(String) |
removeTag(String) |
Aligned |
dropReport |
getDropReport() |
dropReport (property) |
Aligned |
trackEvent |
trackEvent(String, Map) |
– |
Android-only convenience; iOS uses event buffer directly |
contextSnapshot |
getContextSnapshot() |
sdkContext?.snapshot() |
Android exposes directly; iOS via SdkContext |
configuration |
getConfiguration() (internal) |
configuration (property) |
Both available |
2. Configuration
| API |
Android (AutoMobileConfiguration) |
iOS (AutoMobileConfiguration) |
Notes |
bufferSize |
bufferSize: Int |
bufferSize: Int |
Aligned |
flushIntervalMs |
flushIntervalMs: Long |
flushIntervalMs: Int |
Aligned (type difference is platform idiom) |
maxBreadcrumbs |
maxBreadcrumbs: Int |
maxBreadcrumbs: Int |
Aligned |
sessionTimeoutMs |
sessionTimeoutMs: Long |
sessionTimeoutMs: Int |
Aligned |
eventProcessors |
eventProcessors: List<EventProcessor> |
eventProcessors: [EventProcessing] |
Aligned |
maxPendingEvents |
maxPendingEvents: Int |
maxPendingEvents: Int |
Aligned |
| Builder |
Builder class |
init(...) with defaults |
Platform idiom: Kotlin uses builder, Swift uses default params |
3. Navigation
| API |
Android |
iOS |
Notes |
NavigationEvent |
data class |
struct |
Aligned fields: destination, timestamp, source, arguments, metadata |
NavigationListener |
interface |
protocol (class-bound) |
Aligned |
NavigationSource |
enum (6 values) |
enum NavigationSourceType (4 values) |
Platform-specific sources; see below |
Platform-specific navigation sources (correctly different):
- Android: NAVIGATION_COMPONENT, COMPOSE_NAVIGATION, CIRCUIT, CUSTOM, DEEP_LINK, ACTIVITY
- iOS: swiftUINavigation, uiKitNavigation, deepLink, custom
4. Biometrics
| API |
Android (AutoMobileBiometrics) |
iOS (AutoMobileBiometrics) |
Notes |
| Singleton |
INSTANCE (object) |
shared (static let) |
Platform idiom |
initialize |
initialize(Context) |
– |
iOS needs no Context; no explicit init needed |
overrideResult |
overrideResult(BiometricResult, Long) |
overrideResult(BiometricResult, ttlMs: Double) |
Aligned |
consumeOverride |
consumeOverride() |
consumeOverride() |
Aligned |
clearOverride |
clearOverride() |
clearOverride() |
Aligned |
hasOverride |
hasOverride (property) |
hasOverride (property) |
Aligned |
BiometricResult variants: Success, Failure, Cancel, Error(code, message) – aligned on both platforms.
5. Breadcrumbs
| API |
Android |
iOS |
Notes |
BreadcrumbCategory |
enum (6 values) |
enum (6 values) |
Aligned: navigation, tap, lifecycle, network, log, custom |
Breadcrumb |
data class |
struct |
Aligned fields: timestamp, category, message, metadata |
BreadcrumbTracking |
interface |
protocol |
Aligned: add, snapshot, clear |
BreadcrumbTrail |
class |
class |
Aligned |
writeToDisk / loadFromDisk / clearDisk |
– |
iOS-only |
iOS persists breadcrumbs to disk for crash resilience |
6. Crashes
| API |
Android (AutoMobileCrashes) |
iOS (AutoMobileCrashes) |
Notes |
initialize |
initialize(Context) |
initialize(bundleId:buffer:) |
Internal on both |
isInitialized |
isInitialized() |
isInitialized (property) |
Aligned |
currentScreenProvider |
property |
property |
Aligned |
uninstall |
uninstall() |
– |
Android-only; iOS uses reset() internally |
enableSignalHandlers |
– |
enableSignalHandlers() |
iOS-only: POSIX signal handlers for SIGABRT/SIGSEGV etc. |
breadcrumbTrail |
property (assignable) |
– |
Android wires breadcrumbs to crashes; iOS could add this |
7. Failures (Handled Exceptions)
| API |
Android (AutoMobileFailures) |
iOS (AutoMobileFailures) |
Notes |
recordHandledException |
recordHandledException(Throwable, String?) |
recordHandledException(Error, message:, currentScreen:) |
Aligned concept; types differ per platform |
getRecentEvents |
getRecentEvents() |
getRecentEvents() |
Aligned |
clearEvents |
clearEvents() |
clearEvents() |
Aligned |
eventCount |
getEventCount() |
eventCount (property) |
Aligned |
8. Logging
| API |
Android (AutoMobileLog) |
iOS (AutoMobileLog) |
Notes |
| Log levels |
v, d, i, w, e, wtf |
v, d, i, w, e, fault |
wtf (Android) vs fault (iOS) – platform idiom |
addFilter / removeFilter / clearFilters |
Yes |
– |
Android-only log filtering; iOS uses os.Logger subsystem filtering |
| Throwable overloads |
v(tag, msg, Throwable) etc. |
– |
Android has error-chaining overloads; iOS relies on os.Logger |
9. Network
| API |
Android (AutoMobileNetwork) |
iOS (AutoMobileNetwork) |
Notes |
interceptor |
interceptor() (OkHttp) |
– |
Android-only: OkHttp interceptor |
protocolClass |
– |
protocolClass() (URLProtocol) |
iOS-only: URLSession protocol |
recordRequest |
– |
recordRequest(...) |
iOS manual recording; Android uses interceptor |
recordWebSocketFrame |
– |
recordWebSocketFrame(...) |
iOS manual; Android wraps listener |
wrapWebSocketListener |
wrapWebSocketListener(...) |
– |
Android-only |
setCaptureHeaders |
– |
setCaptureHeaders(Bool) |
iOS-only config |
setCaptureBodies |
– |
setCaptureBodies(Bool) |
iOS-only config |
setMaxBodyBytes |
– |
setMaxBodyBytes(Int) |
iOS-only config |
setEnabled |
– |
setEnabled(Bool) |
iOS-only toggle |
NetworkMockRuleStore |
Yes (with BroadcastReceiver) |
– |
Android-only network mocking |
Why these differ: Network interception is inherently platform-specific. Android uses OkHttp interceptors; iOS uses URLProtocol. The mock rule store on Android uses broadcast intents which have no iOS equivalent.
10. ANR / Hang Detection
| API |
Android (AutoMobileAnr) |
iOS (AutoMobileHangs) |
Notes |
| Correctly different names |
AutoMobileAnr |
AutoMobileHangs |
ANR is Android terminology; “hang” is the iOS/Apple equivalent |
initialize |
initialize(Context) |
initialize(bundleId:buffer:) |
Internal |
isAvailable |
isAvailable() |
– |
Android-only (checks if ANR detection is supported) |
startMonitoring / stopMonitoring |
– |
startMonitoring() / stopMonitoring() |
iOS manages watchdog thread directly |
isMonitoring |
– |
isMonitoring (property) |
iOS-only |
hangThresholdMs / pollIntervalMs |
– |
public properties |
iOS-only configuration |
setEnabled |
– |
setEnabled(Bool) |
iOS-only toggle |
11. OS Events
| API |
Android (AutoMobileOsEvents) |
iOS (AutoMobileOsEvents) |
Notes |
| Events tracked |
Activity lifecycle, battery, connectivity, screen on/off |
App lifecycle, battery, connectivity, screen brightness |
Platform-appropriate events |
setEnabled |
– |
setEnabled(Bool) |
iOS-only toggle |
12. Interaction Tracking
| API |
Android (AutoMobileClickTracker) |
iOS (AutoMobileInteractionTracker) |
Notes |
| Correctly different names |
AutoMobileClickTracker |
AutoMobileInteractionTracker |
Android auto-instruments via Window.Callback; iOS requires manual recordTap |
initialize |
internal |
internal |
Aligned |
setEnabled |
– |
setEnabled(Bool) |
iOS-only |
recordTap |
– |
recordTap(x:y:...) |
iOS manual tracking |
13. Notifications
| API |
Android (AutoMobileNotifications) |
iOS (AutoMobileNotifications) |
Notes |
post |
post(title, body, style, imagePath, actions, channelId) |
post(title:body:style:imagePath:actions:categoryId:) |
Aligned; channelId (Android) vs categoryId (iOS) |
installActionHandler |
– |
installActionHandler(on:) |
iOS-only: installs UNUserNotificationCenterDelegate |
| Broadcast actions |
via BroadcastReceiver intents |
via NotificationCenter posts |
Platform idiom |
14. Storage Inspection
| API |
Android (SharedPreferencesInspector) |
iOS (UserDefaultsInspector) |
Notes |
| Correctly different names |
SharedPreferencesInspector |
UserDefaultsInspector |
SharedPreferences (Android) vs UserDefaults (iOS) |
isEnabled |
isEnabled (property) |
isEnabled (property) |
Aligned |
setEnabled |
setEnabled(Boolean) |
setEnabled(Bool) |
Aligned |
getDriver |
getDriver() (internal) |
getDriver() |
iOS public |
| Change listeners |
via SharedPreferencesDriver |
addChangeListener / removeChangeListener |
Aligned concept |
15. Database Inspection
| API |
Android (DatabaseInspector) |
iOS (DatabaseInspector) |
Notes |
isEnabled |
isEnabled (property) |
isEnabled (property) |
Aligned |
setEnabled |
setEnabled(Boolean) |
setEnabled(Bool) |
Aligned |
getDriver |
getDriver() (internal) |
getDriver() |
Aligned |
closeAll |
closeAll() |
– |
Android-only |
| Driver interface |
DatabaseDriver |
DatabaseDriver |
Aligned methods |
16. Compose / SwiftUI View Tracking
| API |
Android (RecompositionTracker) |
iOS (ViewBodyTracker) |
Notes |
| Correctly different names |
Tracks Compose recomposition |
Tracks SwiftUI body evaluation |
Platform idiom |
isEnabled / setEnabled |
Yes |
Yes |
Aligned |
| Compose-specific |
TrackRecomposition, autoMobileRecomposition modifier |
TrackViewBody modifier |
Platform idiom |
EnableComposeObservableApi |
Yes |
– |
Android Compose-only |
17. Session Tracking
| API |
Android (SessionTracker) |
iOS (SessionTracker) |
Notes |
SessionTracking |
interface |
protocol |
Aligned |
currentSessionId |
currentSessionId() |
currentSessionId() |
Aligned |
onForeground / onBackground |
Yes |
Yes |
Aligned |
shutdown |
shutdown() |
shutdown() |
Aligned |
18. Event System
| API |
Android |
iOS |
Notes |
SdkEvent |
interface |
protocol |
Aligned |
SdkEventBuffer |
class |
class |
Aligned: add, flush, start, shutdown |
EventProcessor |
interface |
EventProcessing protocol |
Aligned concept |
DropCounter / DropReason |
interface + enum |
DropCounting protocol + enum |
Aligned |
EventPersistence |
interface |
EventPersisting protocol |
Aligned |
SdkEventBroadcaster |
broadcasts via Android Intents |
broadcasts via persistence |
Platform-specific delivery |
RetryPolicy |
data class |
struct |
Aligned |
These APIs exist on only one platform due to inherent platform differences:
Android-Only
ComposeObservableApi / EnableComposeObservableApi – Jetpack Compose observation hooks
autoMobileRecomposition / autoMobileRecompositionId modifiers – Compose semantics
CircuitAdapter, Navigation3Adapter – Android navigation framework adapters
SdkConstants (CTRL_PROXY_PACKAGE, PERMISSION_NETWORK_CONTROL) – Android IPC
ConfigurationOverrideHelper – Android Configuration override for testing
NetworkMockRuleStore – Uses Android BroadcastReceiver for mock rule delivery
AutoMobileNetworkInterceptor / AutoMobileWebSocketListener – OkHttp specific
iOS-Only
AutoMobileURLProtocol – URLSession interception
BreadcrumbTrail.writeToDisk / loadFromDisk / clearDisk – Disk persistence for crash resilience
AutoMobileCrashes.enableSignalHandlers – POSIX signal handler installation
SwiftUINavigationAdapter – SwiftUI navigation tracking
NavigationFrameworkAdapter protocol – Pluggable navigation framework support
AutoMobileNotificationObserver – Notification.Name observation (vs Android BroadcastReceiver)
Summary of Gaps Fixed
| Gap |
Platform |
Resolution |
Missing addBreadcrumb(message:category:metadata:) |
iOS |
Added to AutoMobileSDK.swift |
Missing shutdown() |
iOS |
Added to AutoMobileSDK.swift |
Missing hasOverride property |
Android |
Added to AutoMobileBiometrics.kt |