{"id":19584725,"url":"https://github.com/oracle-samples/pushiomanager-flutter","last_synced_at":"2025-07-28T21:08:22.395Z","repository":{"id":163950108,"uuid":"607616955","full_name":"oracle-samples/pushiomanager-flutter","owner":"oracle-samples","description":"Flutter plugin for Responsys Mobile SDK","archived":false,"fork":false,"pushed_at":"2024-09-30T19:13:03.000Z","size":1172,"stargazers_count":7,"open_issues_count":1,"forks_count":5,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-27T11:42:03.705Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"upl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oracle-samples.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-02-28T10:38:40.000Z","updated_at":"2024-10-08T07:49:17.000Z","dependencies_parsed_at":"2024-05-30T11:57:48.788Z","dependency_job_id":"5dbc1ebd-323e-49c7-a0bc-92d3393dc685","html_url":"https://github.com/oracle-samples/pushiomanager-flutter","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":"oracle/template-repo","purl":"pkg:github/oracle-samples/pushiomanager-flutter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-samples%2Fpushiomanager-flutter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-samples%2Fpushiomanager-flutter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-samples%2Fpushiomanager-flutter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-samples%2Fpushiomanager-flutter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oracle-samples","download_url":"https://codeload.github.com/oracle-samples/pushiomanager-flutter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-samples%2Fpushiomanager-flutter/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267585610,"owners_count":24111575,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"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":[],"created_at":"2024-11-11T07:49:29.756Z","updated_at":"2025-07-28T21:08:22.370Z","avatar_url":"https://github.com/oracle-samples.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flutter Plugin for Responsys Mobile SDK\n\nThis plugin makes it easy to integrate the Responsys Mobile SDK with your Flutter app. \n\n## Table of Contents\n- [Requirements](#requirements)\t\n  * [For Android](#for-android)\n  * [For iOS](#for-ios)\n- [Setup](#setup)\n  * [For Android](#for-android-1)\n  * [For iOS](#for-ios-1)\n  \t\t* [Location SDK](#location-sdk)\n- [Installation](#installation)\n- [Integration](#integration)\n  * [For Android](#for-android-2)\n  * [For iOS](#for-ios-2)\n- [Usage](#usage)\n  * [Configure And Register](#configure-and-register)\n  * [User Identification](#user-identification)\n  * [Engagements And Conversion](#engagements-and-conversion)\n  * [In-App Messages](#in-app-messages)\n  * [Message Center](#message-center)\n  * [Geofences And Beacons](#geofences-and-beacons)\n  * [Notification Preferences](#notification-preferences)\n  * [Handling Deeplink](#handling-deeplink)\n- [Support](#support)\n- [License](#license)\n\n\u003cbr/\u003e\n\n## Requirements\n\n- Flutter \u003e= 2.0.3\n\n### For Android\n- Android SDK Tools \u003e= 28.0.3\n\n### For iOS\n- iOS 12 or later\n\n\u003cbr/\u003e\n\n## Setup\n\nBefore installing the plugin, you must setup your app to receive push notifications.\n\n\u003cbr/\u003e\n\n### For Android\n- [Get FCM Credentials](https://docs.oracle.com/en/cloud/saas/marketing/responsys-develop-mobile/android/fcm-credentials.htm) \n- Log in to the [Responsys Mobile App Developer Console](https://docs.oracle.com/en/cloud/saas/marketing/responsys-develop-mobile/dev-console/login/) and enter your FCM credentials (Project ID and Server API Key) for your Android app.\n- Get the `pushio_config.json` file generated from your credentials and place it in your project's `android/app/src/main/assets` folder. You might have to create the directory if it is not already present.\n- Download the latest SDK binary from [here](https://www.oracle.com/downloads/applications/cx/responsys-mobile-sdk.html). \n- Create a new directory  - `PushIOManager` inside your app's `android` directory.\n- Inside the `android/PushIOManager` directory, create a file `build.gradle` with the following code:\n\n\t```gradle\n\tconfigurations.maybeCreate(\"default\")\n\tartifacts.add(\"default\", file('oracle-cx-mobile-base-7.0.1.aar'))\n\n\t//Optional\n\t//artifacts.add(\"default\", file('oracle-cx-mobile-location-7.0.0.aar'))\n\t```\t\t\n\n- Add the following to your project-wide `settings.gradle` file:\n\n\t```gradle\n\tinclude ':PushIOManager'\n\tproject(':PushIOManager').projectDir = new File(rootProject.projectDir, './PushIOManager')\n\t```\n\u003cbr/\u003e\n\n### For iOS\n- [Generate Auth Key](https://docs.oracle.com/en/cloud/saas/marketing/responsys-develop-mobile/ios/auth-key/) \n- Log in to the [Responsys Mobile App Developer Console](https://docs.oracle.com/en/cloud/saas/marketing/responsys-develop-mobile/dev-console/login/) and enter your Auth Key and other details for your iOS app.\n- Download the `pushio_config.json` file generated from your credentials.\n- Download the SDK binary from [here](https://www.oracle.com/downloads/applications/cx/responsys-mobile-sdk.html).\n- After adding the plugin in your app, copy `CX_Mobile_SDK.xcframework` and place it in the plugin ios directory - `pushiomanager-flutter/ios/`. Make sure to remove the `PushIOManager.xcframework` if previously copied to this path\n\n![framework Image](./img/ios_framework.png \"framework Image\")\n\n- Run `pod install` in the `your_app_directory/ios/` directory.\n\n\n\n#### Location SDK\n\nNow the Location APIs are part of `OracleCXLocationSDK.xcframework`.  If app developer need to track the location info only then app need to include the location API in the app and then follow the App Store guideline.\n\n##### Setup\n  - After adding the plugin in your app, copy `OracleCXLocationSDK.xcframework` and place it in the plugin ios directory - `pushiomanager-flutter/ios/`. \n  - App Developers need to update authorization level of access for Location authorization request. add related Privacy Location descriptiions in Info.plist of xcode project, refer this for more info [Location Descriptions](https://developer.apple.com/documentation/corelocation/requesting-authorization-to-use-location-services#Provide-descriptions-of-how-you-use-location-services)\n\n\n ```xml\n\t\u003ckey\u003eNSLocationAlwaysUsageDescription\u003c/key\u003e\n\t\u003cstring\u003eAdd description for background location usage\u003c/string\u003e\n\t\u003ckey\u003eNSLocationWhenInUseUsageDescription\u003c/key\u003e\n\t\u003cstring\u003eAdd description for foreground only location usage.\u003c/string\u003e\n```\n\n- The flutter `permission_handler` plugin use macros to control whether a permission is enabled. App Developers must list the permission want to use in  application. refer this for more information [permission_handler](https://pub.dev/packages/permission_handler)\n       * Add the following to your Podfile file:\n\n\t\n\t  ```text\n\t   post_install do |installer|\n  \t   \tinstaller.pods_project.targets.each do |target|\n       \t\tflutter_additional_ios_build_settings(target)\n    \t\t\ttarget.build_configurations.each do |config|\n\t\t\t\t\t\t## You can remove unused permissions here\n      \t\t\t\t\t## for more information: https://github.com/BaseflowIT/flutter-permission-handler/blob/master/permission_handler/ios/Classes/PermissionHandlerEnums.h\n\n      \t\t\t\t\tconfig.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [\n        \t\t\t\t'$(inherited)',\n\n        \t\t\t\t## The 'PERMISSION_LOCATION' macro enables the `locationWhenInUse` and `locationAlways` permission. If\n        \t\t\t\t## the application only requires `locationWhenInUse`, only specify the `PERMISSION_LOCATION_WHENINUSE`\n       \t\t\t\t    ## macro.\n        \t\t\t\t##\n       \t\t\t\t\t## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]\n        \t\t\t\t'PERMISSION_LOCATION=1',\n        \t\t\t\t'PERMISSION_LOCATION_WHENINUSE=0'\n      \t\t\t\t\t] \n\t  \t\t\tend\n  \t  \tend\t\n\t  end\n\t\t```\n\n\n\n- In iOS, the registration API accept boolean input for Location. refer   [Configure And Register](#configure-and-register) for Register API implementation.\n\t\t* true - `OracleCXLocationSDK.xcframework` request for Location authorization and  Location permission popup will be displayed to user.\n\t\t* false -  SDK will not use Location and Location pop will not be displayed to user.\n\n\u003cbr/\u003e\n\n## Installation\n\nAdd the following dependency to your `pubspec.yaml`,\n\n```yaml\ndependencies:\npushiomanager_flutter:\n  \tgit:\n  \t\turl: https://github.com/oracle-samples/pushiomanager-flutter.git\n```\n\nand run `flutter pub get` from command-line.\n\n\n\n## Integration\n\n### For Android\n\n- Open the `build.gradle` file located in `android/app/` and add the following dependency,\n\t\n\t```gradle\n\timplementation 'com.google.firebase:firebase-messaging:18.0.0' \n\t```\n\t\n\t**NOTE**: If your app uses the native `firebase-messaging` library version 21.0.0 or later, it is required to add the following dependency as well,\n\t\n\t```gradle\n\timplementation 'com.google.android.gms:play-services-base:16.1.0' \n\t```\n\n- Open the `AndroidManifest.xml` file located in `android/app/src/main` and add the following,\n\t* Permissions above the `\u003capplication\u003e` tag,\n\n\t\t```xml\n\t\t\u003c!-- If your app requires user location --\u003e\n\t\t\u003cuses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" /\u003e\n\t\t\n\t\t\u003cuses-permission android:name=\"${applicationId}.permission.PUSHIO_MESSAGE\" /\u003e\n\t\t\u003cuses-permission android:name=\"${applicationId}.permission.RSYS_SHOW_IAM\" /\u003e\n\t\t\u003cpermission android:name=\".permission.PUSHIO_MESSAGE\" android:protectionLevel=\"signature\" /\u003e\n\t\t\u003cpermission android:name=\"${applicationId}.permission.RSYS_SHOW_IAM\" android:protectionLevel=\"signature\" /\u003e\n\t\t```\n\t\n\t* Intent-filter for launching app when the user taps on a push notification. Add it inside the `\u003cactivity\u003e` tag of `MainActivity`,\n\n\t\t```xml\n\t\t\u003cintent-filter\u003e\n\t\t\t\u003caction android:name=\"${applicationId}.NOTIFICATIONPRESSED\" /\u003e\n\t   \t\t\u003ccategory android:name=\"android.intent.category.DEFAULT\" /\u003e\n\t\t\u003c/intent-filter\u003e\n\t\t```\n\t\t\n\t* Add the following code inside `\u003capplication\u003e` tag,\n\n\t\t```xml\n\t\t \u003creceiver android:enabled=\"true\" android:exported=\"false\" android:name=\"com.pushio.manager.PushIOUriReceiver\"\u003e\n            \u003cintent-filter\u003e\n                \u003caction android:name=\"android.intent.action.VIEW\" /\u003e\n                \u003ccategory android:name=\"android.intent.category.DEFAULT\" /\u003e\n                \u003cdata android:scheme=\"@string/uri_identifier\" /\u003e\n            \u003c/intent-filter\u003e\n        \u003c/receiver\u003e\n        \u003cactivity android:name=\"com.pushio.manager.iam.ui.PushIOMessageViewActivity\" android:permission=\"${applicationId}.permission.SHOW_IAM\" android:theme=\"@android:style/Theme.Translucent.NoTitleBar\"\u003e\n            \u003cintent-filter\u003e\n                \u003caction android:name=\"android.intent.action.VIEW\" /\u003e\n                \u003ccategory android:name=\"android.intent.category.BROWSABLE\" /\u003e\n                \u003ccategory android:name=\"android.intent.category.DEFAULT\" /\u003e\n                \u003cdata android:scheme=\"@string/uri_identifier\" /\u003e\n            \u003c/intent-filter\u003e\n        \u003c/activity\u003e\n\t\t```\n\t* (Optional) Intent-filter for [Android App Links](https://developer.android.com/training/app-links) setup. Add it inside the `\u003cactivity\u003e` tag of `MainActivity`,\n\n\t\t```xml\n\t\t\u003cintent-filter android:autoVerify=\"true\"\u003e\n\t\t\t\u003caction android:name=\"android.intent.action.VIEW\" /\u003e\n\t\t\t\u003ccategory android:name=\"android.intent.category.DEFAULT\" /\u003e\n\t\t\t\u003ccategory android:name=\"android.intent.category.BROWSABLE\" /\u003e\n\t\t\t\u003cdata android:host=\"@string/app_links_url_host\" android:pathPrefix=\"/pub/acc\" android:scheme=\"https\" /\u003e\n       \u003c/intent-filter\u003e\n\t\t```\n\t\t\n\n- Open the `strings.xml` file located at `android/app/src/main/res/values` and add the following properties,\n\n\t* Custom URI scheme for displaying In-App Messages and Rich Push content,\n\n\t\t```xml\n\t\t\u003cstring name=\"uri_identifier\"\u003epio-YOUR_API_KEY\u003c/string\u003e\n\t\t```\n\tYou can find the API key in the `pushio_config.json` that was placed in `android/app/src/main/assets` earlier during setup.\n\t\t\n\t* (Optional) If you added the `\u003cintent-filter\u003e` for Android App Links in the steps above, then you will need to declare the domain name,\n\t\n\t\t```xml\n\t\t\u003cstring name=\"app_links_url_host\"\u003eYOUR_ANDROID_APP_LINKS_DOMAIN\u003c/string\u003e\n\t\t```\n\n\n### For iOS\n- Open the **Xcode project workspace** in your `ios` directory of flutter app. \n- Drag and Drop your `pushio_config.json` in Xcode project.\n- Select the root project and Under Capabilites add the \"Push Notifications\" and \"Background Modes\". \n![Capability Image](./img/ios_config_file.png \"Capabilty Image\")\n- For In-App Messages and Rich Push Content follow the below steps :\n  * To Enable Custom URI scheme for displaying In-App Messages and Rich Push content follow the [Step 1](https://docs.oracle.com/en/cloud/saas/marketing/responsys-develop-mobile/ios/in-app-msg/). You don't need to add the code.\n  You can find the API key in the `pushio_config.json` that was placed in your Xcode project earlier during setup.\n  \n  * Follow  [Step 2](https://docs.oracle.com/en/cloud/saas/marketing/responsys-develop-mobile/ios/in-app-msg/) to  add the required capabilites in your Xcode project for In-App messages. You don't need to add the code.\n\n- For Media Attachments you can follow the following [guide](https://docs.oracle.com/en/cloud/saas/marketing/responsys-develop-mobile/ios/media-attachments/). Copy and paste the code provided in guide in respective files.\t\n\n- For Carousel Push you can follow the following [guide](https://docs.oracle.com/en/cloud/saas/marketing/responsys-develop-mobile/ios/carousel-push/). Copy and paste the code provided in guide in respective files.    \n\n### Usage\n\nThe plugin can be accessed in your app as follows,\n\n```dart\nimport 'package:pushiomanager_flutter/pushiomanager_flutter.dart';\n```\n\n\n### Configure And Register\n\n- Configure the SDK,\n\n\t```dart\n\tPushIOManager.configure(\"pushio_config.json\")\n        .then((_) =\u003e print(\"SDK configured successfully\"))\n        .catchError((error) =\u003e print(\"SDK configure error: $error\"));\n\t```\n\t\n- Once the SDK is configured, register the app with Responsys,\n\t- Use `Platform` from `dart:io` package to detect the platform.        \n\n   ```dart\n   if (Platform.isAndroid) {\n   \t\tPushIOManager.registerAppForPush(true, false)\n   \t\t\t.then((_) =\u003e print(\"Registration Successful\"))\n   \t\t\t.catchError((error) =\u003e print(\"Registration error: $error\"));\n  \t} else if (Platform.isIOS) {\n      PushIOManager.registerForAllRemoteNotificationTypes().then((_) =\u003e { \n        PushIOManager.registerApp(useLocation: true) \n      }).then((_) =\u003e print(\"Registration Successful\"))\n          .catchError((error) =\u003e print(\"Registration error: $error\"));\n    }  \t\n   ```\n   - For iOS Register API, registerApp will have boolean input which will used to pass Location Attributes in Registration Payload,\n      * true - SDK will use Core Location and Location permission popup will be displayed to user only if `OracleCXLocationSDK.xcframework` copied to ios folder.\n\t  * false -  SDK will not use Location and Location pop will not be displayed to user.\n\n\n\n### User Identification\n\n- Associate an app installation with a user (usually after login),\n\n\t```dart\n\tPushIOManager.registerUserId(\"userID\");\n\t```\n\t\n- When the user logs out,\n\n\t```dart\n\tPushIOManager.unregisterUserId();\n\t```\n\t\n\n### Engagements And Conversion\n\nUser actions can be attributed to a push notification using,\n\n```dart\nPushIOManager.trackEngagement(EngagementType.PURCHASE)\n\t.then((_) =\u003e print(\"Engagement Reported Successfully\"))\n\t.catchError((error) =\u003e print(\"Engagement not reported: $error\"));\n```\n\n### In-App Messages\n\nIn-App Message (IAM) are displayed in a popup window via system-defined triggers like `$ExplicitAppOpen` or custom triggers. IAM that use system-defined triggers are displayed automatically.\n\nIAM can also be displayed on-demand using custom triggers.\n\n- Your marketing team defines a custom trigger in Responsys system and shares the trigger-event name with you.\n- Marketer launches the campaign and the IAM is delivered to the device via push or pull mechanism (depending on your Responsys Account settings)\n- When you wish to display the IAM popup, use,\n\n\t```dart\n\tPushIOManager.trackEvent(\"custom_event_name\");\n\t```\n\n#### For iOS\n\nThese below steps are required for iOS In-App Messages.\n\n  * To Enable Custom URI scheme for displaying In-App Messages and Rich Push content follow the [Step 1](https://docs.oracle.com/en/cloud/saas/marketing/responsys-develop-mobile/ios/in-app-msg.htm).\n  You can find the API key in the `pushio_config.json` that was placed in your Xcode project earlier during setup.\n  \n  * Follow  [Step 2](https://docs.oracle.com/en/cloud/saas/marketing/responsys-develop-mobile/ios/in-app-msg.htm) to add the required capabilities in your Xcode project for In-App messages.\n\n### Message Center\n\n- Get the Message Center messages list using,\n\nEach Message Center message now supports an additional property called custom key-value pairs, it is a variable sized object with key value pairs and can be accessed like any other property of that message.\n\n```dart\n\tPushIOManager.fetchMessagesForMessageCenter(\"Primary\")\n\t\t.then((messages) =\u003e { \n\t\t\t// messages is a list of MessageCenterMessage\n            for (var message in messages) {\n                print(message.messageID);\n                print(message.message);\n                print(message.customKeyValuePairs);\n            }\n\t\t}\n\t);\n```\n\t\n- To get the message content call,\n\n\t```dart\n\tPushIOManager.fetchRichContentForMessage(message.messageID)\n        .then((response) =\u003e { \n        \t\t// response['richContent'] has the content \n        })\n        .catchError((error) =\u003e print(\"Error fetching rich content: $error\"));\n\t```\n\t\n\tRemember to store these messages, since the SDK cache is purgeable.\n\t\n\n### Geofences And Beacons\n\nIf your app is setup to monitor geofence and beacons, you can record in Responsys when a user enters/exits a geofence/beacon zone.\n\nFollowing is a sample code for recording a geofency-entry event.\n\n```dart\nPushIOManager.onGeoRegionEntered(region)\n\t.then((response) =\u003e print(\n            \"$response['regionType'] with ID - $response['regionID'] successfully reported\"))\n    .catchError((error) =\u003e\n    \tprint(\"Unable to report \\$GEOFENCE_ENTRY event: $error\"));\n\nPushIOManager.onGeoRegionExited(region)\n\t.then((response) =\u003e print(\n            \"$response['regionType'] with ID - $response['regionID'] successfully reported\"))\n    .catchError((error) =\u003e\n    \tprint(\"Unable to report \\$onGeoRegionExited event: $error\"));\n\nPushIOManager.onBeaconRegionEntered(region)\n\t.then((response) =\u003e print(\n            \"$response['regionType'] with ID - $response['regionID'] successfully reported\"))\n    .catchError((error) =\u003e\n    \tprint(\"Unable to report \\$onBeaconRegionEntered event: $error\"));\n\nPushIOManager.onBeaconRegionExited(region)\n\t.then((response) =\u003e print(\n            \"$response['regionType'] with ID - $response['regionID'] successfully reported\"))\n    .catchError((error) =\u003e\n    \tprint(\"Unable to report \\$onBeaconRegionExited event: $error\"));\n```\n\n\n### Notification Preferences\n\nPreferences are used to record user-choices for push notifications. The preferences should be [pre-defined in Responsys](https://docs.oracle.com/en/cloud/saas/marketing/responsys-develop-mobile/dev-console/app-design/#notification-preferences) before being used in your app.\n\n- Declare the preference beforehand in the app,\n\n\t```dart\n\tPushIOManager.declarePreference(key, \"Label to show in UI\", PreferenceType.STRING)\n\t\t.then((_) =\u003e print(\"Preference declared successfully\"))\n\t\t.catchError((error) =\u003e { print(\"Preference could not be declared: $error\") });\n\t```\n\n- Once a preference is declared successfully, you may save the preference using,\n\n\t```dart\n\tPushIOManager.setPreference(key, \"Test Value\")\n\t\t.then((_) =\u003e print(\"Preference set successfully\"))\n\t\t.catchError((error) =\u003e print(\"Preference not set: $error\"));\n\t```\n\t\nDo not use this as a persistent (key/value) store since this data is purgeable.\n\n### Handling Deeplink\n\nWhen the user taps on a push notification (having a deeplink), the plugin passes the deeplink to the app.\n\n#### For iOS\n\nBy Default, Plugin open Deeplink url in browser.Your app must implement the following native code for default handling of Deeplink url. \nEnsure that you have implemented `openURL` method in your `AppDelegate.m`, as follows,\n\n```objective-c\n- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary\u003cUIApplicationOpenURLOptionsKey,id\u003e *)options {\n\n\t[[PushIOManager sharedInstance] openURL:url options:options];\n\t\n  return YES;\n}\n```\n or\n \nRefer this [intercepting-deeplink](https://docs.oracle.com/en/cloud/saas/marketing/responsys-develop-mobile/ios/intercepting-deeplink.htm) to handle Deeplink URL in iOS Native code.\n\n#### For Android\n\n- In `AndroidManifest.xml`, change the `launchMode` of `MainActivity` to `singleTask` and add the following Intent-filter,\n\n\t```xml\n\t\u003cactivity\n\t  android:name=\".MainActivity\"\n\t  android:launchMode=\"singleTask\"\u003e\n\t  \n\t  \u003cintent-filter\u003e\n            \u003caction android:name=\"${applicationId}.intent.action.PROCESS_RSYS_DEEPLINK\" /\u003e\n            \u003ccategory android:name=\"android.intent.category.DEFAULT\" /\u003e\n            \u003cdata android:scheme=\"YOUR_CUSTOM_URL_SCHEME\" /\u003e\n          \u003c/intent-filter\u003e\n\t \n\t\u003c/activity\u003e\n\t```\n\n#### Dart Code\n\nTo handle Deeplink url in dart code, Implement the following code\n\n```dart\nPushIOManager.setInterceptDeepLink(true);\n```\n\nOnce 'InterceptDeeplink' is set, Deeplink is recieved in following code\n\n```dart\nPushIOManager.setNotificationDeepLinkHandler((String url) {\n        print(\"DeepLink: $url\");\n})\n.then((_) =\u003e)\n.catchError((error) =\u003e print(\"DeepLink url is not present: $error\"));\n\n```\n\n\n\n## Support\n\nIf you have access to My Oracle Support, please raise a request [here](http://support.oracle.com/), otherwise open an issue in this repository. \n\nPlease consult the [security guide](./SECURITY.md) for our responsible security vulnerability disclosure process\n\n## Contributing\n\nThis project welcomes contributions from the community. Before submitting a pull request, please [review our contribution guide](./CONTRIBUTING.md)\n\n## Security\n\nPlease consult the [security guide](./SECURITY.md) for our responsible security vulnerability disclosure process\n\n## License\n\nCopyright (c) 2024 Oracle and/or its affiliates.\nReleased under the Universal Permissive License v1.0 as shown at\n\u003chttps://oss.oracle.com/licenses/upl/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foracle-samples%2Fpushiomanager-flutter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foracle-samples%2Fpushiomanager-flutter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foracle-samples%2Fpushiomanager-flutter/lists"}