{"id":22264227,"url":"https://github.com/pushlytic/pushlytic-android-sdk","last_synced_at":"2026-04-19T13:32:05.381Z","repository":{"id":265559572,"uuid":"896229509","full_name":"pushlytic/pushlytic-android-sdk","owner":"pushlytic","description":"Android SDK for Pushlytic, the modern push infrastructure platform","archived":false,"fork":false,"pushed_at":"2025-02-08T06:39:46.000Z","size":201,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-25T14:14:16.077Z","etag":null,"topics":["android","bidirectional","communication","grpc","kotlin","maven","messaging","mobile","real-time","sdk"],"latest_commit_sha":null,"homepage":"https://pushlytic.com","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pushlytic.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-29T20:37:29.000Z","updated_at":"2025-02-08T06:38:48.000Z","dependencies_parsed_at":"2025-01-30T12:44:26.663Z","dependency_job_id":"c87ab56b-2420-4a5c-8dad-78fdd30dbe56","html_url":"https://github.com/pushlytic/pushlytic-android-sdk","commit_stats":null,"previous_names":["pushlytic/pushlytic-android-sdk"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/pushlytic/pushlytic-android-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pushlytic%2Fpushlytic-android-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pushlytic%2Fpushlytic-android-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pushlytic%2Fpushlytic-android-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pushlytic%2Fpushlytic-android-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pushlytic","download_url":"https://codeload.github.com/pushlytic/pushlytic-android-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pushlytic%2Fpushlytic-android-sdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32009107,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"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":["android","bidirectional","communication","grpc","kotlin","maven","messaging","mobile","real-time","sdk"],"created_at":"2024-12-03T10:08:14.881Z","updated_at":"2026-04-19T13:32:05.363Z","avatar_url":"https://github.com/pushlytic.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pushlytic Android SDK\n\nA powerful Android SDK for real-time communication, enabling seamless push messages and real-time interactions in your Android applications.\n\n## Key Features\n- Real-time bidirectional streaming\n- User targeting with IDs, tags, and metadata\n- Customizable push messages with dynamic templates\n- Automatic connection management\n- Support for experiments and A/B testing\n\n## Requirements\n- Android 6.0 (API level 24) and above\n- Java 11 or Kotlin 1.5+\n- Gradle 7.4 or later\n\n## Installation\n\nGet started with Pushlytic in your Android app - it's quick and easy!\n\n#### Available on Maven Central\nThe Pushlytic Android SDK is published on [Maven Central](https://search.maven.org/). You can add it to your project using Gradle or Maven.\n\n#### Gradle\n1. Add the Pushlytic Android SDK dependency to your `build.gradle` file:\n   ```kotlin\n   dependencies {\n       implementation(\"com.pushlytic:sdk:0.1.4\")\n   }\n   ```\n2. Sync your project with Gradle files.\n\n\u003e **Note**: We're rapidly improving Pushlytic! 🚀 During our pre-1.0 phase:\n\u003e - Minor version updates (0.x.0) may include exciting new features and improvements that could have breaking changes.\n\u003e - Using \"Up to Next Minor\" ensures you get all bug fixes while maintaining stability.\n\u003e - Once we hit 1.0.0, we'll follow strict semantic versioning with \"Up to Next Major Version.\"\n\u003e\n\u003e Join us early and help shape the future of push infrastructure! Your feedback and use cases are invaluable as we move toward our 1.0.0 release.\n\n---\n\n## Quick Start\n\n1. Configure the SDK in your `Application` class:\n   ```kotlin\n   import android.app.Application\n   import com.pushlytic.sdk.Pushlytic\n\n   class YourApplication : Application() {\n       override fun onCreate() {\n           super.onCreate()\n\n           // Configure the SDK with your API key\n           Pushlytic.configure(\n               this,\n               Pushlytic.Configuration(apiKey = \"YOUR_API_KEY\")\n           )\n       }\n   }\n   ```\n\n2. Set up a `PushlyticListener` to handle connection status and messages:\n   ```kotlin\n   Pushlytic.setListener(object : PushlyticListener {\n       override fun onConnectionStatusChanged(status: ConnectionStatus) {\n           println(\"Pushlytic Status: $status\")\n       }\n\n       override fun onMessageReceived(message: String) {\n           println(\"Pushlytic Message: $message\")\n       }\n   })\n   ```\n\n---\n\n## Basic Usage\n\n### Stream Management\nOpen a connection to start receiving messages:\n```kotlin\n// Open a message stream\nPushlytic.openMessageStream()\n\n// Later, when you want to stop receiving messages:\n// - Set clearState to false to allow automatic reconnection on app foreground\n// - Set clearState to true to clear all connection metadata and prevent automatic reconnection\nPushlytic.endStream(clearState = false)\n```\n\n### Set Up User Information\nRegister user data such as user ID, tags, and metadata:\n```kotlin\n// Register user ID\nPushlytic.registerUserID(\"unique_user_id\")\n\n// Add tags for targeting\nPushlytic.registerTags(listOf(\"premium_user\", \"electronics\"))\n\n// Set user metadata\nPushlytic.setMetadata(\n    mapOf(\n        \"first_name\" to \"John\",\n        \"account_type\" to \"premium\"\n    )\n)\n```\n\n### Handle Messages\nTo receive real-time updates from the SDK, implement `PushlyticListener` and handle connection statuses and incoming messages:\n```kotlin\n// Define message types\ndata class CustomMessage(val id: String, val content: String)\n\nPushlytic.setListener(object : PushlyticListener {\n    override fun onConnectionStatusChanged(status: ConnectionStatus) {\n        println(\"Connection status: $status\")\n    }\n\n    override fun onMessageReceived(message: String) {\n        Pushlytic.parseMessage(\n            message,\n            CustomMessage::class.java,\n            completion = { parsedMessage -\u003e\n                println(\"Received message: ${parsedMessage.content}\")\n            },\n            errorHandler = { error -\u003e\n                println(\"Error parsing message: ${error.message}\")\n            }\n        )\n    }\n})\n```\n\n---\n\n## Advanced Usage\n\n### Custom Events\nSend custom analytics events:\n```kotlin\nPushlytic.sendCustomEvent(\n    name = \"purchase\",\n    metadata = mapOf(\"item_id\" to \"12345\", \"price\" to 19.99)\n)\n```\n\n---\n\n## Example App\nAn example app demonstrating usage of Pushlytic SDK features is available in the `example/` directory. It showcases:\n- Stream connection\n- Message handling\n- User segmentation\n- Metadata-driven personalization\n\n---\n\n## Repository Structure\n- **sdk/**: Core SDK functionality\n- **example/**: Fully functional example app demonstrating SDK usage\n- **tests/**: Unit tests for SDK components\n\n---\n\n## Contributing\nContributions are welcome! Please see the `CONTRIBUTING.md` file for guidelines on submitting issues, feature requests, and pull requests.\n\n---\n\n## License\nPushlytic Android SDK is available under the MIT License. See the `LICENSE` file for more information.\n\n---\n\n## Security \u0026 Support\n- For security vulnerabilities, contact our security team at [security@pushlytic.com](mailto:security@pushlytic.com)\n- For general support, reach out to [support@pushlytic.com](mailto:support@pushlytic.com) or visit our [documentation site](https://pushlytic.com/docs)\n\n---\n\n## Related Resources\n- [Pushlytic iOS SDK](https://github.com/pushlytic/pushlytic-ios-sdk)\n- [Pushlytic API Documentation](https://pushlytic.com/docs)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpushlytic%2Fpushlytic-android-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpushlytic%2Fpushlytic-android-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpushlytic%2Fpushlytic-android-sdk/lists"}