{"id":18724558,"url":"https://github.com/erxes/erxes-ios-sdk","last_synced_at":"2026-06-12T05:00:51.385Z","repository":{"id":56910067,"uuid":"133488330","full_name":"erxes/erxes-ios-sdk","owner":"erxes","description":"erxes IOS SDK, for integrating erxes messenger to your iOS application","archived":false,"fork":false,"pushed_at":"2026-06-11T09:17:51.000Z","size":4405,"stargazers_count":33,"open_issues_count":4,"forks_count":28,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-06-11T11:11:26.903Z","etag":null,"topics":["erxes","erxes-ios-sdk","hacktoberfest"],"latest_commit_sha":null,"homepage":"https://erxes.io","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erxes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"erxes","open_collective":"erxes"}},"created_at":"2018-05-15T08:53:38.000Z","updated_at":"2026-06-11T09:17:51.000Z","dependencies_parsed_at":"2023-02-08T09:01:41.833Z","dependency_job_id":null,"html_url":"https://github.com/erxes/erxes-ios-sdk","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/erxes/erxes-ios-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erxes%2Ferxes-ios-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erxes%2Ferxes-ios-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erxes%2Ferxes-ios-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erxes%2Ferxes-ios-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erxes","download_url":"https://codeload.github.com/erxes/erxes-ios-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erxes%2Ferxes-ios-sdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34229624,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["erxes","erxes-ios-sdk","hacktoberfest"],"created_at":"2024-11-07T14:07:07.303Z","updated_at":"2026-06-12T05:00:51.377Z","avatar_url":"https://github.com/erxes.png","language":"Swift","funding_links":["https://github.com/sponsors/erxes","https://opencollective.com/erxes"],"categories":[],"sub_categories":[],"readme":"# MessengerSDK - iOS\n\nMessengerSDK is a secure, lightweight, and customizable iOS SDK that lets you embed a fully-featured customer messenger into your iOS application. Built on Swift and SwiftUI, it connects to the erxes platform and gives your users real-time chat, AI agent support, knowledge base access, and more — all inside your app.\n\n\u003ca href=\"https://docs.erxes.io/docs/intro\"\u003eDocumentation\u003c/a\u003e \u003cb\u003e| \u003c/b\u003e \u003ca href=\"https://discord.com/invite/aaGzy3gQK5\"\u003eJoin our community\u003c/a\u003e\n\n## Status\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/erxes/erxes/blob/master/LICENSE.md\"\u003e\n    \u003cimg alt=\"License Badge\" src=\"https://img.shields.io/badge/license-AGPLv3-brightgreen\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"#\"\u003e\n    \u003cimg alt=\"iOS 16+\" src=\"https://img.shields.io/badge/iOS-16%2B-blue\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"#\"\u003e\n    \u003cimg alt=\"Swift 5.9+\" src=\"https://img.shields.io/badge/Swift-5.9%2B-orange\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"#\"\u003e\n    \u003cimg alt=\"SPM Compatible\" src=\"https://img.shields.io/badge/SPM-compatible-brightgreen\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://discord.com/invite/aaGzy3gQK5\"\u003e\n    \u003cimg alt=\"Discord\" src=\"https://img.shields.io/badge/Discord-Community-blueviolet\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://twitter.com/erxeshq\"\u003e\n    \u003cimg alt=\"Twitter\" src=\"https://img.shields.io/badge/twitter-blue\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/home.png\" width=\"220\" alt=\"Home\"\u003e\n  \u003cimg src=\"screenshots/messages.png\" width=\"220\" alt=\"Messages\"\u003e\n  \u003cimg src=\"screenshots/tickets.png\" width=\"220\" alt=\"Tickets\"\u003e\n\u003c/p\u003e\n\n## Features\n\n- **Real-time Messenger** — Live chat powered by WebSocket with automatic reconnection and exponential backoff\n- **AI Agent Support** — Integrated bot conversations with typing indicators and persistent menus\n- **Floating Launcher Button** — Draggable `MessengerLaunchButton` that snaps to top-right or bottom-right corner\n- **Attachment Uploads** — Photo picker with upload progress thumbnails shown inline before the message sends\n- **Instagram-style Timestamps** — Swipe left to reveal per-message timestamps without leaving the conversation\n- **Knowledge Base \u0026 FAQ** — Browse and search your erxes knowledge base articles in-app\n- **Tickets** — Create and track support tickets directly from the messenger\n- **Offline Caching** — `CachedAsyncImage` with NSCache + off-thread ImageIO downsampling; no UI-thread decode\n- **Keyboard Native** — Zero-lag keyboard avoidance via `.safeAreaInset`; no custom `KeyboardObserver`\n\n## Requirements\n\n**Platform:**\n- iOS 16.0+\n- Xcode 15+\n\n**Swift:**\n- Swift 5.9+\n\n**Dependencies (resolved via SPM):**\n- [Apollo iOS](https://github.com/apollographql/apollo-ios) `\u003e= 1.0.0`\n- [SDWebImageSwiftUI](https://github.com/SDWebImage/SDWebImageSwiftUI) `\u003e= 3.0.0`\n\n**erxes backend:**\n- A running erxes instance with a configured Messenger integration\n- Your `integrationId` and server URL from the erxes admin panel\n\n## Installation\n\n### Swift Package Manager\n\nIn Xcode: **File → Add Package Dependencies…** and enter:\n\n```\nhttps://github.com/Munkhorgilb/ios-sdk\n```\n\nOr add it directly to your `Package.swift`:\n\n```swift\ndependencies: [\n    .package(url: \"https://github.com/Munkhorgilb/ios-sdk\", from: \"0.30.0\")\n],\ntargets: [\n    .target(\n        name: \"YourApp\",\n        dependencies: [\"MessengerSDK\"]\n    )\n]\n```\n\n## Getting Started\n\n### 1. Configure the SDK\n\nCall this once at app launch (e.g. in your `App` initializer or `AppDelegate`):\n\n```swift\nimport MessengerSDK\n\nMessengerSDK.configure(\n    MessengerConfig(\n        endpoint: \"https://your.erxes.instance\",\n        integrationId: \"YOUR_INTEGRATION_ID\"\n    )\n)\n```\n\n### 2. Identify the user (optional)\n\n```swift\nMessengerSDK.setUser(MessengerUser(\n    email: \"user@example.com\",\n    name: \"Jane Doe\"\n))\n```\n\n### 3. Add the floating launcher button\n\nThe easiest way to expose the messenger is the draggable `MessengerLaunchButton`. Drop it as an overlay on your root view:\n\n```swift\nimport MessengerSDK\n\nstruct ContentView: View {\n    @ObservedObject private var sdk = MessengerSDK.shared\n\n    var body: some View {\n        YourRootView()\n            .overlay {\n                if sdk.isReady {\n                    MessengerLaunchButton()\n                        .transition(.scale(scale: 0.5).combined(with: .opacity))\n                }\n            }\n            .animation(.spring(response: 0.4, dampingFraction: 0.7), value: sdk.isReady)\n    }\n}\n```\n\nThe button snaps to the top-right or bottom-right corner — users can drag it between the two positions.\n\n### 4. Or float the launcher from a UIKit / non-SwiftUI host\n\nIf your app isn't SwiftUI (UIKit, React Native, Flutter), call `showLauncher()` to float the same draggable button in a transparent overlay window above your content. Touches outside the button pass straight through, and it appears automatically once the connect handshake succeeds.\n\n```swift\nMessengerSDK.showLauncher()   // e.g. in AppDelegate / SceneDelegate after configure()\nMessengerSDK.hideLauncher()   // remove it (e.g. on logout)\n```\n\n### 5. Or open the messenger programmatically\n\n```swift\nMessengerSDK.showMessenger(from: yourViewController)\n```\n\n## Contributing\n\nPlease read our [contributing guide](https://github.com/erxes/erxes/blob/master/CONTRIBUTING.md) before submitting a Pull Request to the project.\n\n## Community Support\n\nFor general help using erxes, please refer to the [erxes documentation](https://docs.erxes.io). For additional help, you can use one of these channels:\n\n- **[Discord](https://discord.com/invite/aaGzy3gQK5)** — Live discussion with the community\n- **[GitHub](https://github.com/Munkhorgilb/ios-sdk)** — Bug reports and contributions\n- **[Feedback / Issues](https://github.com/Munkhorgilb/ios-sdk/issues)** — Feature requests and bug reports\n- **[Twitter](https://twitter.com/erxeshq)** — Get the news fast\n\n## License\n\nSee the [LICENSE](https://github.com/erxes/erxes/blob/master/LICENSE.md) file for licensing information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferxes%2Ferxes-ios-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferxes%2Ferxes-ios-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferxes%2Ferxes-ios-sdk/lists"}