Flutter SDK API Reference

HydraCore Class APIs

SignUp

This API enables reporting of a SignUp (user registration) event to the SDK.

static Future<bool> signUp({
 required HydraUserDetails userDetails,
 Map<String, dynamic>? customData,
});

Parameters

ParameterTypeRequired/OptionalDescription
userDetailsHydraUserDetailsrequiredRead more about this class here
customDataMap<String, dynamic>?optionalCustom attributes for analytics

Returns: Future<bool> indicating if sign up was successfully requested

Usage:

bool signUpResult = await HydraCore.signUp(
 userDetails: userDetails,
);

Sign In

This API enables reporting of a SignIn event to the SDK.

static Future<bool> signIn({
 required HydraUserDetails userDetails,
 Map<String, dynamic>? customData,
});

Parameters

ParameterTypeRequired/OptionalDescription
userDetailsHydraUserDetailsrequiredRead more about this class here
customDataMap<String, dynamic>?optionalCustom attributes for analytics

Returns: Future<bool> indicating if sign in was successfully requested

Usage:

bool signInResult = await HydraCore.signIn(
 userDetails: userDetails,
);

Sign Out

This API enables reporting of a SignOut event to the SDK.

static Future<bool> signOut({
 required String customerId,
});

Parameters

ParameterTypeRequired/OptionalDescription
customerIdStringrequiredUser's customer ID

Returns: Future<bool> indicating if sign out was successful

Usage:

bool signOutResult = await HydraCore.signOut(
 customerId: "8888888888",
);

Update User

This API enables reporting of a user details update event to the SDK.

static Future<bool> updateUser({
 required HydraUserDetails userDetails,
 Map<String, dynamic>? customData,
 List<Map<String, dynamic>>? subscriptions,
});

Parameters

ParameterTypeRequired/OptionalDescription
userDetailsHydraUserDetailsrequiredRead more about this class here
customDataMap<String, dynamic>?optionalCustom attributes for analytics
subscriptionsList<Map<String, dynamic>>?optionalList of Subscriptions with channel, accountId, priority, type and sourcename

Returns: Future<bool> indicating if update was successfully requested

Usage:

bool updateUserResult = await HydraCore.updateUser(
 userDetails: updatedUserDetails,
 customData: {"Key" : "Value"},
 subscriptions: [
   {"channel": "channel1", "type": "topic1", "priority": 1},
 ],
);

Update Geo Config

This API enables reporting of a geo configuration update event to the SDK.

static Future<bool> updateGeoConfig({
 required HydraGeoConfig config,
});

Parameters

ParameterTypeRequired/OptionalDescription
configHydraGeoConfigrequiredRead more about this class here

Returns: Future<bool> indicating if geo config update was successful

Usage:

bool updateGeoConfigResult = await HydraCore.updateGeoConfig(
    config: config,
);

Update User Push Preferences

This API enables reporting of a user push preferences update event to the SDK.

static Future<bool> updatePushPreferences({
 required String customerId,
 required HydraPushPreferences preferences,
});

Parameters

ParameterTypeRequired/OptionalDescription
customerIdStringrequiredUser's customer ID
preferencesHydraPushPreferencesrequiredRead more about this class here

Returns: Future<bool> indicating if preferences update was successful

Usage:

bool result = await HydraCore.updatePushPreferences(
 preferences: pushPreferences,
 customerId: "8888888888",
);

Report custom user events

This API enables reporting of custom user events to the SDK.

static Future<bool> reportUserEvent({
 required String eventName,
 Map<String, dynamic>? attributes,
});

Parameters

ParameterTypeRequired/OptionalDescription
eventNameStringrequiredName of the event
attributesMap<String, dynamic>?optionalAdditional event data

Returns: Future<bool> indicating if event reporting was successful

Usage:

bool sendEventResult = await HydraCore.reportUserEvent(
 eventName: "TestEvent",
 attributes:  {"Key" : "Value"},
);

HydraPushNotification class APIs

Get FCM Token

static Future<String> getFCMToken();

Returns: Future<String> containing FCM token (throws error if unavailable)

Usage:

String fcmToken = await HydraPushNotification.getFCMToken();

Request Permission for Push notifications

static Future<bool> requestPermission();

Returns: Future<bool> indicating if permission was granted

Usage:

bool granted = await HydraPushNotification.requestPermission();

HydraInbox class APIs

Get list of Hydra Notifications

static Future<List<HydraNotification>> getInboxMessages();

Returns: Future<List<HydraNotification>>

Usage:

List<HydraNotification> notifications = await HydraInbox.getInboxMessages();

Get Unread Hydra Notifications Count

static Future<int> getUnreadInboxMessagesCount();

Returns: Future<int> with unread count

Usage:

int unreadNotificationCount = await HydraInbox.getUnreadInboxMessagesCount();

Mark a Hydra Notification as read

static Future<bool> markInboxMessageAsRead({
 required HydraNotification notification,
});

Parameters

ParameterTypeRequired/OptionalDescription
notificationHydraNotificationrequiredNotification to mark as read. The list of Hydra Notifications are obtained from here.

Returns: Future<bool> indicating success

Usage:

bool marked = await HydraInbox.markInboxMessageAsRead(notification: notification);

Delete a Hydra Notification

static Future<bool> deleteInboxMessage({
 required HydraNotification notification,
});

Parameters

ParameterTypeRequired/OptionalDescription
notificationHydraNotificationrequiredNotification to delete. The list of Hydra Notifications are obtained from here.

Returns: Future<bool> indicating success

Usage:

bool deleted = await HydraInbox.deleteInboxMessage(notification: notification);

Delete all Hydra Notifications

static Future<bool> deleteAllInboxMessages();

Returns: Future<bool> indicating success

Usage:

bool deleted = await HydraInbox.deleteAllInboxMessages();

HydraInboxUI class APIs

Show In-Built Notification Center

static Future<void> showNotificationCenter();

Usage:

HydraInboxUI.showNotificationCenter();

Hide In-Built Notification Center if Showing

static Future<void> hideNotificationCenterIfShowing();

Usage:

await HydraInboxUI.hideNotificationCenterIfShowing();

HydraNativeEvent class APIs

Add event handler

static void addEventHandler(HydraNativeEventHandler handler);

Parameters

ParameterTypeRequired/OptionalDescription
handlerHydraNativeEventHandlerrequiredHandler instance

Usage:

HydraNativeEvents.addEventHandler(handler);

Remove event handler

static void removeEventHandler(HydraNativeEventHandler handler);

Parameters

ParameterTypeRequired/OptionalDescription
handlerHydraNativeEventHandlerrequiredHandler instance

Usage:

HydraNativeEvents.removeEventHandler(handler);

Remove all event handlers

static void removeAllEventHandlers();

Usage:

HydraNativeEvents.removeAllEventHandlers();

HydraNativeEventHandler class

class HydraNativeEventHandler {
 void onTokenAvailable({required String token}) {}
 void onHydraNotificationReceived({required HydraNotification notification}) {}
 void onHydraNotificationClicked({HydraNotificationCTA? cta, HydraNotification? notification}) {}
 void onHydraNotificationDismissed({required HydraNotification notification}) {}
 void onHydraNotificationShown({required HydraNotification notification}) {}
 void onNotificationCenterDismissed() {}
 void onHydraSdkInitializationResult({required bool success, String? error}) {}
}

Callback Descriptions

  • onTokenAvailable: New FCM token available
  • onHydraNotificationReceived: Notification received
  • onHydraNotificationClicked: Notification/CTA clicked
  • onHydraNotificationDismissed: Notification dismissed
  • onHydraNotificationShown: Notification shown
  • onNotificationCenterDismissed: Notification center closed
  • onHydraSDKInitializationResult: SDK initialization result

HydraCore Model Classes and Enumerations

HydraUserDetails

HydraUserDetails({
 required this.customerId,
 this.email,
 this.phoneNumber,
 this.firstName,
 this.lastName,
});

Parameters

ParameterTypeRequired/OptionalDescription
customerIdStringrequiredUser identifier
firstNameString?optionalUser's first name
lastNameString?optionalUser's last name
emailString?optionalUser's email
phoneNumberString?optionalUser's phone number

Usage:

HydraUserDetails userDetails = HydraUserDetails(
 customerId: '8888888888',
 firstName: 'FirstName',
 lastName: 'LastName',
 email: '[email protected]',
 phoneNumber: '918888888888',
);

HydraGeoConfig

HydraGeoConfig({
 required this.city,
 required this.country,
 required this.countryCode,
 this.timezone,
});

Parameters

ParameterTypeRequired/OptionalDescription
cityStringrequiredUser's city
countryStringrequiredUser's country
countryCodeStringrequiredCountry code
timezoneString?optionalTimezone

Usage:

HydraGeoConfig geoConfig = HydraGeoConfig(
 city: "Bangalore",
 country: "India",
 countryCode: "IN",
 timezone: "Asia/Kolkata",
);

HydraPushPreferences

HydraPushPreferences({
 required this.promPushEnabled,
 required this.transPushEnabled,
});

Parameters

ParameterTypeRequired/OptionalDescription
promPushEnabledboolrequiredPromotional pushes
transPushEnabledboolrequiredTransactional pushes

Usage:

HydraPushPreferences pushPreferences = HydraPushPreferences(
     promPushEnabled: false,
     transPushEnabled: true,
);

HydraNotification Model Classes

HydraNotification Structure

class HydraNotification {
 final String? cuid;
 final String? scope;
 final String? campaignId;
 final String? variationId;
 // ... (other properties)
 final HydraNotificationGateway? gateway;
 final HydraNotificationBody? body;
 final HydraNotificationExpandedDetails? expandableDetails;
 // ... (other properties)
}

HydraNotificationBody

class HydraNotificationBody {
 final String? title;
 final String? message;
 final String? image;
 final HydraNotificationCTA? cta;
}

HydraNotificationCTA

class HydraNotificationCTA {
 final HydraNotificationCTAType? type;
 final String? action;
 final String? actionText;
}

HydraNotificationCTAType Enum

enum HydraNotificationCTAType {
 external,
 deepLink,
 rating,
 feedback,
 appRating,
 unknown,
}

HydraNotificationExpandedDetails

class HydraNotificationExpandedDetails {
 final List<HydraNotificationCTA>? ctas;
 final String? message;
 final String? image;
 final String? style;
}

HydraNotificationGateway Enum

enum HydraNotificationGateway {
 fcm,
 xiaomi,
 unknown,
}