{"id":19923100,"url":"https://github.com/mapp-digital/mapp-engage-flutter-plugin","last_synced_at":"2026-04-23T12:01:27.803Z","repository":{"id":49980503,"uuid":"425503158","full_name":"mapp-digital/Mapp-Engage-Flutter-Plugin","owner":"mapp-digital","description":"Flutter plugin for Mapp SDK (push, inapp messages, geo targeting) with example app","archived":false,"fork":false,"pushed_at":"2026-04-22T09:28:10.000Z","size":13064,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-04-22T11:31:36.784Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mapp-digital.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-11-07T12:55:39.000Z","updated_at":"2026-03-05T15:36:32.000Z","dependencies_parsed_at":"2024-05-16T03:47:36.987Z","dependency_job_id":"8b6d7ba6-09d2-4ee3-b517-b6940a34a1bb","html_url":"https://github.com/mapp-digital/Mapp-Engage-Flutter-Plugin","commit_stats":null,"previous_names":["mapp-digital/mapp-engage-flutter-plugin","mappcloud/mapp-flutter-plugin"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/mapp-digital/Mapp-Engage-Flutter-Plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapp-digital%2FMapp-Engage-Flutter-Plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapp-digital%2FMapp-Engage-Flutter-Plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapp-digital%2FMapp-Engage-Flutter-Plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapp-digital%2FMapp-Engage-Flutter-Plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mapp-digital","download_url":"https://codeload.github.com/mapp-digital/Mapp-Engage-Flutter-Plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapp-digital%2FMapp-Engage-Flutter-Plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32179387,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-23T11:42:27.955Z","status":"ssl_error","status_checked_at":"2026-04-23T11:42:18.877Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-11-12T22:13:01.826Z","updated_at":"2026-04-23T12:01:27.798Z","avatar_url":"https://github.com/mapp-digital.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mapp_sdk\n\nMapp SDK plugin enables the usage of Mapp Engage platform, such as push notifications and InApp messages segmented sendout.\n\nFor implementation details please take a look at: \nhttps://docs.mapp.com/docs/flutter\n\n## Getting Started\n\n### 1. Add the dependency\n\nAdd `mapp_sdk` to your `pubspec.yaml`:\n\n```yaml\ndependencies:\n  mapp_sdk: ^your_version\n```\n\n### 2. Initialize the SDK\n\nInitialize the Mapp SDK in your Flutter app:\n\n```dart\nimport 'package:mapp_sdk/mapp_sdk.dart';\n\nFuture\u003cvoid\u003e main() async {\n  WidgetsFlutterBinding.ensureInitialized();\n  \n  // Initialize Mapp SDK\n  await MappSdk.engage(\n    'your_sdk_key',\n    'your_google_project_id',\n    SERVER.L3, // or your server\n    'your_app_id',\n    'your_tenant_id',\n  );\n  \n  runApp(MyApp());\n}\n```\n\n### 3. Set up Callbacks\n\nSet up callbacks to receive notifications and events:\n\n```dart\n// Push notification callbacks\nMappSdk.handledRemoteNotification = (dynamic arguments) {\n  print('Mapp notification received: $arguments');\n  // Handle notification received\n};\n\nMappSdk.handledPushOpen = (dynamic arguments) {\n  print('Mapp notification opened: $arguments');\n  // Handle notification tap\n};\n\n// InApp message callbacks\nMappSdk.didReceiveInappMessageWithIdentifier = (dynamic arguments) {\n  print('InApp message received: $arguments');\n  // Handle InApp message\n};\n\nMappSdk.didReceiveDeepLinkWithIdentifier = (dynamic arguments) {\n  print('Deep link received: $arguments');\n  // Handle deep link\n};\n```\n\n## Push Notifications\n\nBy default, the plugin handles Mapp push notifications automatically via its built-in `MappFlutterMessagingService` on Android. No additional setup is required.\n\n- Mapp messages are received, parsed, and displayed by the native Mapp SDK\n- Your Flutter app receives callbacks via `MappSdk.handledRemoteNotification`, `MappSdk.handledPushOpen`, etc.\n\n### Using with firebase_messaging Plugin\n\nIf you need to handle push messages from multiple providers (e.g., using the `firebase_messaging` plugin alongside Mapp), see **[INTEGRATION_FIREBASE_MESSAGING.md](INTEGRATION_FIREBASE_MESSAGING.md)** for detailed integration instructions.\n\n## Common API Methods\n\nBelow are short examples for the most commonly used APIs. See the online docs for full details.\n\n### SDK Initialization\n\n```dart\n// Initialize Mapp SDK with optional notificationMode\nawait MappSdk.engage(\n  sdkKey,\n  googleProjectId,\n  server,\n  appID,\n  tenantID,\n  NotificationMode.backgroundAndForeground, // or backgroundOnly, foregroundOnly, etc.\n);\n\n// Check if SDK is ready\nfinal ready = await MappSdk.isReady();\nprint('Mapp SDK ready: $ready');\n```\n\n### Push Notifications\n\n```dart\n// Enable / disable push\nawait MappSdk.setPushEnabled(true);\nawait MappSdk.setPushEnabled(false);\n\n// Check if push is enabled\nfinal isEnabled = await MappSdk.isPushEnabled();\nprint('Push enabled: $isEnabled');\n\n// Request Android 13+ POST_NOTIFICATIONS permission\nfinal granted = await MappSdk.requestPermissionPostNotifications();\nprint('Post notifications permission granted: $granted');\n\n// Remove badge number (iOS)\nfinal badgeResult = await MappSdk.removeBadgeNumber();\nprint('Remove badge result: $badgeResult');\n```\n\n### Device Management\n\n```dart\n// Set alias\nawait MappSdk.setAlias('user123');\n\n// Set alias and resend custom attributes\nawait MappSdk.setAliasWithResend('user123', true);\n\n// Get alias\nfinal alias = await MappSdk.getAlias();\nprint('Current alias: $alias');\n\n// Get device info\nfinal deviceInfo = await MappSdk.getDeviceInfo();\nprint('Device info: $deviceInfo');\n```\n\n### Tags\n\n```dart\n// Add a tag\nfinal added = await MappSdk.addTag('premium_user');\nprint('Tag added: $added');\n\n// Get all tags\nfinal tags = await MappSdk.getTags();\nprint('Tags: $tags');\n\n// Remove a tag\nfinal removed = await MappSdk.removeTag('premium_user');\nprint('Tag removed: $removed');\n```\n\n### InApp Messages \u0026 Inbox\n\n```dart\n// Trigger an InApp message by event name\nawait MappSdk.triggerInApp('app_open');\n\n// Fetch all inbox messages (JSON string)\nfinal inboxJson = await MappSdk.fetchInboxMessage();\nprint('Inbox messages: $inboxJson');\n\n// Fetch a single inbox message by id\nfinal singleJson = await MappSdk.fetchInBoxMessageWithMessageId(12345);\nprint('Inbox message: $singleJson');\n\n// Mark inbox/InApp messages as read/unread/deleted\nawait MappSdk.inAppMarkAsRead('templateId', 'eventId');\nawait MappSdk.inAppMarkAsUnread('templateId', 'eventId');\nawait MappSdk.inAppMarkAsDeleted('templateId', 'eventId');\n```\n\n### Custom Attributes\n\n```dart\n// Set custom attributes\nawait MappSdk.setCustomAttributes({\n  'firstName': 'John',\n  'lastName': 'Doe',\n  'age': 30,\n});\n\n// Get selected custom attributes\nfinal attrs = await MappSdk.getCustomAttributes(['firstName', 'age']);\nprint('Custom attributes: $attrs');\n```\n\n### Geofencing (Android)\n\n```dart\n// Start geofencing\nfinal startStatus = await MappSdk.startGeoFencing();\nprint('Start geofencing: $startStatus');\n\n// Stop geofencing\nfinal stopStatus = await MappSdk.stopGeoFencing();\nprint('Stop geofencing: $stopStatus');\n```\n\n## Troubleshooting\n\n- **SDK not ready**: Ensure `MappSdk.engage()` is called before using other methods and check with `await MappSdk.isReady()`\n- **Push notifications not working**: Verify that `MappSdk.engage()` has been called and push is enabled\n- **Callbacks not firing**: Make sure you've set up the callback handlers before initializing the SDK\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmapp-digital%2Fmapp-engage-flutter-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmapp-digital%2Fmapp-engage-flutter-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmapp-digital%2Fmapp-engage-flutter-plugin/lists"}