# infobip/mobile-messaging-sdk-android architecture

> Architecture diagram of the GitHub repository infobip/mobile-messaging-sdk-android, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/infobip/mobile-messaging-sdk-android
- Repository: https://github.com/infobip/mobile-messaging-sdk-android

## Overview

This repository is an Android mobile-messaging SDK with separate push, in-app chat, inbox, and RTC calling capabilities. The documented setup initializes the SDK in an app and configures Firebase; the main push path receives FCM messages and queues them for SDK handling. Chat includes a web-widget layer and attachment previews, while inbox and RTC are separate product surfaces. Some source is unsampled, so edges are limited to README statements and relationships visible in excerpts or the source index.

Main entry points: [`infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/cloud/MobileMessagingCloudService.java`](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/cloud/MobileMessagingCloudService.java) (Cloud work queue), [`infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/InAppChat.java`](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/InAppChat.java) (Chat API), [`infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/core/InAppChatScreenImpl.kt`](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/core/InAppChatScreenImpl.kt) (Chat screen), [`infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/service/InfobipRtcUiFirebaseService.kt`](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/service/InfobipRtcUiFirebaseService.kt) (RTC FCM service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_push["Push Messaging"]
  node_sdk["Mobile Messaging SDK"]
  node_firebase_service["FCM adapter"]
  node_cloud_queue["Cloud work queue"]
  node_message["Message model<br/>[Message.java]"]
  node_database[("Push database")]
end

subgraph group_chat["In-App Chat"]
  node_chat_api["Chat API<br/>[InAppChat.java]"]
  node_chat_screen["Chat screen"]
  node_widget_api["Livechat widget API"]
  node_session[("Chat session state<br/>[SessionStorage.kt]")]
  node_preview["Attachment preview"]
end

subgraph group_inbox["Message Inbox"]
  node_inbox_api["Inbox API<br/>[MobileInbox.java]"]
  node_inbox_sync["Inbox synchronizer"]
  node_inbox_mapper["Inbox mapping"]
end

subgraph group_rtc["RTC Calling"]
  node_rtc_firebase["RTC FCM service"]
  node_rtc_injector["RTC component wiring<br/>[Injector.kt]"]
  node_calls["Call handling"]
  node_screen_share["Screen sharing"]
end

node_app(("Android app"))
node_firebase(("Firebase Cloud Messaging"))
node_mobile_api["Mobile API client"]

node_app -->|"initializes"| node_sdk
node_firebase -->|"delivers events"| node_firebase_service
node_firebase_service -->|"enqueues messages"| node_cloud_queue
node_cloud_queue -->|"serializes message"| node_message
node_cloud_queue -.->|"dispatches handling"| node_database
node_app -.->|"opens chat"| node_chat_api
node_chat_api -.->|"presents screen"| node_chat_screen
node_chat_screen -.->|"hosts widget"| node_widget_api
node_chat_api -->|"stores session"| node_session
node_chat_screen -.->|"opens preview"| node_preview
node_app -.->|"accesses inbox"| node_inbox_api
node_inbox_api -.->|"synchronizes"| node_inbox_sync
node_inbox_sync -.->|"maps data"| node_inbox_mapper
node_firebase -->|"delivers events"| node_rtc_firebase
node_rtc_firebase -->|"initializes"| node_rtc_injector
node_rtc_firebase -->|"routes calls"| node_calls
node_calls -.->|"starts service"| node_screen_share
node_rtc_injector -->|"creates RTC API"| node_mobile_api

click node_sdk "https://github.com/infobip/mobile-messaging-sdk-android/tree/master/infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging"
click node_firebase_service "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/cloud/firebase/MobileMessagingFirebaseService.java"
click node_cloud_queue "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/cloud/MobileMessagingCloudService.java"
click node_message "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/Message.java"
click node_database "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/dal/sqlite/PushDatabaseHelperImpl.java"
click node_chat_api "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/InAppChat.java"
click node_chat_screen "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/core/InAppChatScreenImpl.kt"
click node_widget_api "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/core/widget/LivechatWidgetApi.kt"
click node_session "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/core/SessionStorage.kt"
click node_preview "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/view/InAppChatAttachmentPreviewActivity.kt"
click node_inbox_api "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-inbox-sdk/src/main/java/org/infobip/mobile/messaging/inbox/MobileInbox.java"
click node_inbox_sync "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-inbox-sdk/src/main/java/org/infobip/mobile/messaging/inbox/MobileInboxSynchronizer.java"
click node_inbox_mapper "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-inbox-sdk/src/main/java/org/infobip/mobile/messaging/inbox/InboxDataMapper.java"
click node_rtc_firebase "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/service/InfobipRtcUiFirebaseService.kt"
click node_rtc_injector "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/internal/core/Injector.kt"
click node_calls "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/internal/service/ActiveCallService.kt"
click node_screen_share "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/internal/service/ScreenShareService.kt"
click node_mobile_api "https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-api-java/src/main/java/org/infobip/mobile/messaging/api/support/http/client/DefaultApiClient.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_sdk,node_firebase_service,node_cloud_queue,node_message,node_database,node_mobile_api toneBlue
class node_chat_api,node_chat_screen,node_widget_api,node_session,node_preview toneAmber
class node_inbox_api,node_inbox_sync,node_inbox_mapper toneMint
class node_rtc_firebase,node_rtc_injector,node_calls,node_screen_share toneRose
class node_app,node_firebase toneIndigo
```

## Components

### Push Messaging

- [Mobile Messaging SDK](https://github.com/infobip/mobile-messaging-sdk-android/tree/master/infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging): `infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging`
- [FCM adapter](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/cloud/firebase/MobileMessagingFirebaseService.java): `infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/cloud/firebase/MobileMessagingFirebaseService.java`
- [Cloud work queue](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/cloud/MobileMessagingCloudService.java): `infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/cloud/MobileMessagingCloudService.java`
- [Message model](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/Message.java): `infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/Message.java`
- [Push database](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/dal/sqlite/PushDatabaseHelperImpl.java): `infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/dal/sqlite/PushDatabaseHelperImpl.java`

### In-App Chat

- [Chat API](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/InAppChat.java): `infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/InAppChat.java`
- [Chat screen](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/core/InAppChatScreenImpl.kt): `infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/core/InAppChatScreenImpl.kt`
- [Livechat widget API](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/core/widget/LivechatWidgetApi.kt): `infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/core/widget/LivechatWidgetApi.kt`
- [Chat session state](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/core/SessionStorage.kt): `infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/core/SessionStorage.kt`
- [Attachment preview](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/view/InAppChatAttachmentPreviewActivity.kt): `infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/view/InAppChatAttachmentPreviewActivity.kt`

### Message Inbox

- [Inbox API](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-inbox-sdk/src/main/java/org/infobip/mobile/messaging/inbox/MobileInbox.java): `infobip-mobile-messaging-android-inbox-sdk/src/main/java/org/infobip/mobile/messaging/inbox/MobileInbox.java`
- [Inbox synchronizer](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-inbox-sdk/src/main/java/org/infobip/mobile/messaging/inbox/MobileInboxSynchronizer.java): `infobip-mobile-messaging-android-inbox-sdk/src/main/java/org/infobip/mobile/messaging/inbox/MobileInboxSynchronizer.java`
- [Inbox mapping](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-android-inbox-sdk/src/main/java/org/infobip/mobile/messaging/inbox/InboxDataMapper.java): `infobip-mobile-messaging-android-inbox-sdk/src/main/java/org/infobip/mobile/messaging/inbox/InboxDataMapper.java`

### RTC Calling

- [RTC FCM service](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/service/InfobipRtcUiFirebaseService.kt): `infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/service/InfobipRtcUiFirebaseService.kt`
- [RTC component wiring](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/internal/core/Injector.kt): `infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/internal/core/Injector.kt`
- [Call handling](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/internal/service/ActiveCallService.kt): `infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/internal/service/ActiveCallService.kt`
- [Screen sharing](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/internal/service/ScreenShareService.kt): `infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/internal/service/ScreenShareService.kt`

### Other components

- **Android app**
- **Firebase Cloud Messaging**
- [Mobile API client](https://github.com/infobip/mobile-messaging-sdk-android/blob/master/infobip-mobile-messaging-api-java/src/main/java/org/infobip/mobile/messaging/api/support/http/client/DefaultApiClient.java): `infobip-mobile-messaging-api-java/src/main/java/org/infobip/mobile/messaging/api/support/http/client/DefaultApiClient.java`

## Connections

- Android app → Mobile Messaging SDK: initializes
- Firebase Cloud Messaging → FCM adapter: delivers events (evidence: `infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/cloud/firebase/MobileMessagingFirebaseService.java`)
- FCM adapter → Cloud work queue: enqueues messages (evidence: `infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/cloud/firebase/MobileMessagingFirebaseService.java`)
- Cloud work queue → Message model: serializes message (evidence: `infobip-mobile-messaging-android-sdk/src/main/java/org/infobip/mobile/messaging/cloud/MobileMessagingCloudService.java`)
- Cloud work queue → Push database: dispatches handling
- Android app → Chat API: opens chat
- Chat API → Chat screen: presents screen
- Chat screen → Livechat widget API: hosts widget
- Chat API → Chat session state: stores session (evidence: `infobip-mobile-messaging-android-chat-sdk/src/main/java/org/infobip/mobile/messaging/chat/core/SessionStorage.kt`)
- Chat screen → Attachment preview: opens preview
- Android app → Inbox API: accesses inbox
- Inbox API → Inbox synchronizer: synchronizes
- Inbox synchronizer → Inbox mapping: maps data
- Firebase Cloud Messaging → RTC FCM service: delivers events (evidence: `infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/service/InfobipRtcUiFirebaseService.kt`)
- RTC FCM service → RTC component wiring: initializes (evidence: `infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/service/InfobipRtcUiFirebaseService.kt`)
- RTC FCM service → Call handling: routes calls (evidence: `infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/service/InfobipRtcUiFirebaseService.kt`)
- Call handling → Screen sharing: starts service (evidence: `infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/internal/service/ActiveCallService.kt`)
- RTC component wiring → Mobile API client: creates RTC API (evidence: `infobip-rtc-ui/src/main/java/com/infobip/webrtc/ui/internal/core/Injector.kt`)
