import { Injectable } from '@angular/core'; import { Cordova, AwesomeCordovaNativePlugin, Plugin } from '@awesome-cordova-plugins/core'; declare let clevertap: any; /** * @name CleverTap * @description * Cordova Plugin that wraps CleverTap SDK for Android and iOS * @usage * ```typescript * import { CleverTap } from '@awesome-cordova-plugins/clevertap/ngx'; * * constructor(private clevertap: CleverTap) { } * * ``` */ @Plugin({ pluginName: 'CleverTap', plugin: 'clevertap-cordova', pluginRef: 'CleverTap', repo: 'https://github.com/CleverTap/clevertap-cordova', platforms: ['Android', 'iOS'], }) @Injectable() export class CleverTap extends AwesomeCordovaNativePlugin { /** * notify device ready * NOTE: in iOS use to be notified of launch Push Notification or Deep Link * in Android use only in android phonegap build projects * * @returns {Promise} */ @Cordova() notifyDeviceReady(): Promise { return; } /******************* * Personalization ******************/ /** * Personalization * Enables the Personalization API * * @returns {Promise} */ @Cordova() enablePersonalization(): Promise { return; } /** * Personalization * Disables the Personalization API * * @returns {Promise} */ @Cordova() disablePersonalization(): Promise { return; } /** * Enables tracking opt out for the currently active user. * * @param optOut {boolean} * @returns {Promise} */ @Cordova() setOptOut(optOut: boolean): Promise { return; } /** * Sets CleverTap SDK to offline mode. * * @param offline {boolean} * @returns {Promise} */ @Cordova() setOffline(offline: boolean): Promise { return; } /** * Enables the reporting of device network related information, including IP address. This reporting is disabled by default. * * @param enable {boolean} * @returns {Promise} */ @Cordova() enableDeviceNetworkInfoReporting(enable: boolean): Promise { return; } /** * Call this method to set a custom locale for the clevertap instance. * @param locale {string} * @returns {Promise} */ @Cordova() setLocale(locale: string): Promise { return; } /******************* * Push ******************/ /** * Registers for push notifications * * @returns {Promise} */ @Cordova() registerPush(): Promise { return; } /** * Sets the device's push token * * @param token {string} * @returns {Promise} */ @Cordova() setPushToken(token: string): Promise { return; } /** * Sets the device's Baidu push token * * @param token {string} * @returns {Promise} */ @Cordova() setPushBaiduToken(token: string): Promise { return; } /** * Sets the device's Huawei push token * * @param token {string} * @returns {Promise} */ @Cordova() setPushHuaweiToken(token: string): Promise { return; } /** * Create Notification Channel for Android O+ * * @param extras {any} * @returns {Promise} */ @Cordova() createNotification(extras: any): Promise { return; } /** * Create Notification Channel for Android O+ * * @param channelID {string} * @param channelName {string} * @param channelDescription {string} * @param importance {number} * @param showBadge {boolean} * @returns {Promise} */ @Cordova() createNotificationChannel( channelID: string, channelName: string, channelDescription: string, importance: number, showBadge: boolean ): Promise { return; } /** * Create Notification Channel for Android O+ * * @param channelID {string} * @param channelName {string} * @param channelDescription {string} * @param importance {number} * @param showBadge {boolean} * @param sound {string} * @returns {Promise} */ @Cordova() createNotificationChannelWithSound( channelID: string, channelName: string, channelDescription: string, importance: number, showBadge: boolean, sound: string ): Promise { return; } /** * Create Notification Channel with Group ID for Android O+ * * @param channelID {string} * @param channelName {string} * @param channelDescription {string} * @param importance {number} * @param groupId {string} * @param showBadge {boolean} * @param sound {string} * @returns {Promise} */ @Cordova() createNotificationChannelWithGroupId( channelID: string, channelName: string, channelDescription: string, importance: number, groupId: string, showBadge: boolean ): Promise { return; } /** * Create Notification Channel with Group ID for Android O+ * * @param channelID {string} * @param channelName {string} * @param channelDescription {string} * @param importance {number} * @param groupId {string} * @param showBadge {boolean} * @param sound * @returns {Promise} */ @Cordova() createNotificationChannelWithGroupIdAndSound( channelID: string, channelName: string, channelDescription: string, importance: number, groupId: string, showBadge: boolean, sound: string ): Promise { return; } /** * Create Notification Channel Group for Android O+ * * @param groupID {string} * @param groupName {string} * @returns {Promise} */ @Cordova() createNotificationChannelGroup(groupID: string, groupName: string): Promise { return; } /** * Delete Notification Channel for Android O+ * * @param channelID {string} * @returns {Promise} */ @Cordova() deleteNotificationChannel(channelID: string): Promise { return; } /** * Delete Notification Group for Android O+ * * @param groupID {string} * @returns {Promise} */ @Cordova() deleteNotificationChannelGroup(groupID: string): Promise { return; } /******************* * Events ******************/ /** * Record Screen View * * @param screenName {string} * @returns {Promise} */ @Cordova() recordScreenView(screenName: string): Promise { return; } /** * Record Event with Name * * @param eventName {string} * @returns {Promise} */ @Cordova() recordEventWithName(eventName: string): Promise { return; } /** * Record Event with Name and Event properties * * @param eventName {string} * @param eventProps {any} * @returns {Promise} */ @Cordova() recordEventWithNameAndProps(eventName: string, eventProps: any): Promise { return; } /** * Record Charged Event with Details and Items * * @param details {any} object with transaction details * @param items {any} array of items purchased * @returns {Promise} */ @Cordova() recordChargedEventWithDetailsAndItems(details: any, items: any): Promise { return; } /** * Get Event First Time * * @param eventName {string} * callback returns epoch seconds or -1 * @returns {Promise} */ @Cordova() eventGetFirstTime(eventName: string): Promise { return; } /** * Get Event Last Time * * @param eventName {string} * callback returns epoch seconds or -1 * @returns {Promise} */ @Cordova() eventGetLastTime(eventName: string): Promise { return; } /** * Get Event Number of Occurrences * * @param eventName {string} * calls back with int or -1 * @returns {Promise} */ @Cordova() eventGetOccurrences(eventName: string): Promise { return; } /** * Get Event Details * * @param eventName {string} * calls back with object {"eventName": , "firstTime":, "lastTime": , "count": } or empty object * @returns {Promise} */ @Cordova() eventGetDetails(eventName: string): Promise { return; } /** * Get Event History * calls back with object {"eventName1":, "eventName2":} * * @returns {Promise} */ @Cordova() getEventHistory(): Promise { return; } /******************* * Profiles ******************/ /** * Get the device location if available. * On iOS: * Calling this will prompt the user location permissions dialog. * Please be sure to include the NSLocationWhenInUseUsageDescription key in your Info.plist. * Uses desired accuracy of kCLLocationAccuracyHundredMeters. * If you need background location updates or finer accuracy please implement your own location handling. * On Android: * Requires Location Permission in AndroidManifest e.g. "android.permission.ACCESS_COARSE_LOCATION" * You can use location to pass it to CleverTap via the setLocation API * for, among other things, more fine-grained geo-targeting and segmentation purposes. * Note: on iOS the call to CleverTapSDK must be made on the main thread due to LocationManager restrictions, but the CleverTapSDK method itself is non-blocking. * calls back with {lat:lat, lon:lon} lat and lon are floats * * @returns {Promise} */ @Cordova() getLocation(): Promise { return; } /** * Set location * * @param lat {number} * @param lon {number} * @returns {Promise} */ @Cordova() setLocation(lat: number, lon: number): Promise { return; } /** * Creates a separate and distinct user profile identified by one or more of Identity, Email, FBID or GPID values, * and populated with the key-values included in the profile dictionary. * If your app is used by multiple users, you can use this method to assign them each a unique profile to track them separately. * If instead you wish to assign multiple Identity, Email, FBID and/or GPID values to the same user profile, * use profileSet rather than this method. * If none of Identity, Email, FBID or GPID is included in the profile dictionary, * all properties values will be associated with the current user profile. * When initially installed on this device, your app is assigned an "anonymous" profile. * The first time you identify a user on this device (whether via onUserLogin or profileSet), * the "anonymous" history on the device will be associated with the newly identified user. * Then, use this method to switch between subsequent separate identified users. * Please note that switching from one identified user to another is a costly operation * in that the current session for the previous user is automatically closed * and data relating to the old user removed, and a new session is started * for the new user and data for that user refreshed via a network call to CleverTap. * In addition, any global frequency caps are reset as part of the switch. * * @param profile {any} object * @returns {Promise} */ @Cordova() onUserLogin(profile: any): Promise { return; } /** * Set profile attributes * * @param profile {any} object * @returns {Promise} */ @Cordova() profileSet(profile: any): Promise { return; } /** * Get User Profile Property * * @param propertyName {string} * calls back with value of propertyName or false * @returns {Promise} */ @Cordova() profileGetProperty(propertyName: string): Promise { return; } /** * @deprecated This method is deprecated. Use getCleverTapID() instead. * Get a unique CleverTap identifier suitable for use with install attribution providers. * calls back with unique CleverTap attribution identifier * * @returns {Promise} */ @Cordova() profileGetCleverTapAttributionIdentifier(): Promise { return; } /** * @deprecated This method is deprecated. Use getCleverTapID() instead. * Get User Profile CleverTapID * calls back with CleverTapID or false * * @returns {Promise} */ @Cordova() profileGetCleverTapID(): Promise { return; } /** * Get User Profile CleverTapID * calls back with CleverTapID * * @returns {Promise} */ @Cordova() getCleverTapID(): Promise { return; } /** * Remove the property specified by key from the user profile * * @param key {string} * @returns {Promise} */ @Cordova() profileRemoveValueForKey(key: string): Promise { return; } /** * Method for setting a multi-value user profile property * * @param key {string} * @param values {any} array of strings * @returns {Promise} */ @Cordova() profileSetMultiValues(key: string, values: any): Promise { return; } /** * Method for adding a value to a multi-value user profile property * * @param key {string} * @param value {string} * @returns {Promise} */ @Cordova() profileAddMultiValue(key: string, value: string): Promise { return; } /** * Method for adding values to a multi-value user profile property * * @param key {string} * @param values {any} array of strings * @returns {Promise} */ @Cordova() profileAddMultiValues(key: string, values: any): Promise { return; } /** * Method for removing a value from a multi-value user profile property * * @param key {string} * @param value {string} * @returns {Promise} */ @Cordova() profileRemoveMultiValue(key: string, value: string): Promise { return; } /** * Method for removing a value from a multi-value user profile property * * @param key {string} * @param values {any} array of strings * @returns {Promise} */ @Cordova() profileRemoveMultiValues(key: string, values: any): Promise { return; } /** * Method for incrementing a value for a single-value profile property (if it exists). * * @param key {string} * @param value {number} * @returns {Promise} */ @Cordova() profileIncrementValueBy(key: string,value: number): Promise { return; } /** * Method for decrementing a value for a single-value profile property (if it exists). * * @param key {string} * @param value {number} * @returns {Promise} */ @Cordova() profileDecrementValueBy(key: string,value: number): Promise { return; } /******************* * In-App Controls ******************/ /** * Suspends and saves inApp notifications until 'resumeInAppNotifications' is called for current session. * Automatically resumes InApp notifications display on CleverTap shared instance creation. * Pending inApp notifications are displayed only for current session. * * @returns {Promise} */ @Cordova() suspendInAppNotifications(): Promise { return; } /** * Discards inApp notifications until 'resumeInAppNotifications' is called for current session. * Automatically resumes InApp notifications display on CleverTap shared instance creation. * Pending inApp notifications are not displayed. */ @Cordova() discardInAppNotifications(): Promise { return; } /** * Resumes displaying inApps notifications and shows pending inApp notifications if any. * * @returns {Promise} */ @Cordova() resumeInAppNotifications(): Promise { return; } /** * Deletes all images and gifs which are preloaded for inapps in cs mode. * * @param expiredOnly {boolean} - to clear only assets which will not be needed further for inapps * @returns {Promise} */ @Cordova() clearInAppResources(expiredOnly: boolean): Promise { return; } /** * Fetches In Apps from server. * * @returns {Promise} */ @Cordova() fetchInApps(): Promise { return; } /******************* * Session ******************/ /** * Get Session Elapsed Time * calls back with seconds * * @returns {Promise} */ @Cordova() sessionGetTimeElapsed(): Promise { return; } /** * Get Session Total Visits * calls back with with int or -1 * * @returns {Promise} */ @Cordova() sessionGetTotalVisits(): Promise { return; } /** * Get Session Screen Count * calls back with with int * * @returns {Promise} */ @Cordova() sessionGetScreenCount(): Promise { return; } /** * Get Session Previous Visit Time * calls back with with epoch seconds or -1 * * @returns {Promise} */ @Cordova() sessionGetPreviousVisitTime(): Promise { return; } /** * Get Sesssion Referrer UTM details * object {"source": , "medium": , "campaign": } or empty object * * @returns {Promise} */ @Cordova() sessionGetUTMDetails(): Promise { return; } /** * Call this to manually track the utm details for an incoming install referrer * * @param source {string} * @param medium {string} * @param campaign {string} * @returns {Promise} */ @Cordova() pushInstallReferrer(source: string, medium: string, campaign: string): Promise { return; } /**************************** * Notification Inbox methods ****************************/ /** * Call this method to initialize the App Inbox */ @Cordova() initializeInbox(): Promise { return; } /** * Call this method to get the count of unread Inbox messages */ @Cordova() getInboxMessageUnreadCount(): Promise { return; } /** * Call this method to get the count of total Inbox messages */ @Cordova() getInboxMessageCount(): Promise { return; } /** * Call this method to open the App Inbox * * @param styleConfig : any or empty object */ @Cordova() showInbox(styleConfig: any): Promise { return; } /** * Call this to Fetch all Inbox Messages * * @returns {Promise} */ @Cordova() getAllInboxMessages(): Promise { return; } /** * Call this to Fetch all Unread Inbox Messages * * @returns {Promise} */ @Cordova() getUnreadInboxMessages(): Promise { return; } /** * Call this to Fetch Inbox Message For Id * * @param messageId {string} * @returns {Promise} */ @Cordova() getInboxMessageForId(messageId: string): Promise { return; } /** * Call this to Delete Inbox Message For Id * * @param messageId {string} * @returns {Promise} */ @Cordova() deleteInboxMessageForId(messageId: string): Promise { return; } /** * Call this method to delete bulk Inbox Messages for Given Message Ids * * @param messageIds {any} array of strings * @returns {Promise} */ @Cordova() deleteInboxMessagesForIds(messageIds: any): Promise { return; } /** * Call this to Mark Read Inbox Message For Id * * @param messageId {string} * @returns {Promise} */ @Cordova() markReadInboxMessageForId(messageId: string): Promise { return; } /** * Call this to Mark Read Inbox Messages For Ids in bulk * * @param messageIds {any} array of strings * @returns {Promise} */ @Cordova() markReadInboxMessagesForIds(messageIds: any): Promise { return; } /** * Call this to dismiss Inbox * * @returns {Promise} */ @Cordova() dismissInbox(): Promise { return; } /** * Call this to Mark Push Inbox Notification Viewed Event for Id * * @param messageId {string} * @returns {Promise} */ @Cordova() pushInboxNotificationViewedEventForId(messageId: string): Promise { return; } /** * Call this to Mark Push Inbox Notification Clicked Event for Id * * @param messageId {string} * @returns {Promise} */ @Cordova() pushInboxNotificationClickedEventForId(messageId: string): Promise { return; } /** * Call this to Get All Display Units * * @returns {Promise} */ @Cordova() getAllDisplayUnits(): Promise { return; } /** * Call this to Get Display Unit For Id * * @param id {string} * @returns {Promise} */ @Cordova() getDisplayUnitForId(id: string): Promise { return; } /** * Call this to Push DisplayUnit Viewed Event for ID * * @param id {string} * @returns {Promise} */ @Cordova() pushDisplayUnitViewedEventForID(id: string): Promise { return; } /** * Call this to Push DisplayUnit Clicked Event for ID * * @param id {string} * @returns {Promise} */ @Cordova() pushDisplayUnitClickedEventForID(id: string): Promise { return; } /** * @deprecated - Since version 2.7.0 and will be removed in the future versions of this SDK. * Call this to Get Feature Flag for key * * @param key {string} * @param defaultValue {string} * @returns {Promise} */ @Cordova() getFeatureFlag(key: string, defaultValue: string): Promise { return; } /** * @deprecated - Since version 2.7.0 and will be removed in the future versions of this SDK. * Call this to Set Defaults for Product Config * * @param defaults {any} * @returns {Promise} */ @Cordova() setDefaultsMap(defaults: any): Promise { return; } /** * @deprecated - Since version 2.7.0 and will be removed in the future versions of this SDK. * Call this for Product Config Fetch * * @param defaults {any} * @returns {Promise} */ @Cordova() fetch(): Promise { return; } /** * @deprecated - Since version 2.7.0 and will be removed in the future versions of this SDK. * Call this for Product Config Fetch with Min Interval * * @param timeInterval {number} * @returns {Promise} */ @Cordova() fetchWithMinimumFetchIntervalInSeconds(timeInterval: number): Promise { return; } /** * @deprecated - Since version 2.7.0 and will be removed in the future versions of this SDK. * Call this for Product Config Activate * * @returns {Promise} */ @Cordova() activate(): Promise { return; } /** * @deprecated - Since version 2.7.0 and will be removed in the future versions of this SDK. * Call this for Product Config Fetch and Activate * * @returns {Promise} */ @Cordova() fetchAndActivate(): Promise { return; } /** * @deprecated - Since version 2.7.0 and will be removed in the future versions of this SDK. * Call this to set Product Config Fetch with Min Interval * * @param timeInterval {number} * @returns {Promise} */ @Cordova() setMinimumFetchIntervalInSeconds(timeInterval: number): Promise { return; } /** * @deprecated - Since version 2.7.0 and will be removed in the future versions of this SDK. * Call this to Get Last Fetch Time Interval * * @returns {Promise} */ @Cordova() getLastFetchTimeStampInMillis(): Promise { return; } /** * @deprecated - Since version 2.7.0 and will be removed in the future versions of this SDK. * Call this to Get String * * @param key {string} * @returns {Promise} */ @Cordova() getString(key: string): Promise { return; } /** * @deprecated - Since version 2.7.0 and will be removed in the future versions of this SDK. * Call this to Get Boolean * * @param key {string} * @returns {Promise} */ @Cordova() getBoolean(key: string): Promise { return; } /** * @deprecated - Since version 2.7.0 and will be removed in the future versions of this SDK. * Call this to Get Long * * @param key {string} * @returns {Promise} */ @Cordova() getLong(key: string): Promise { return; } /** * @deprecated - Since version 2.7.0 and will be removed in the future versions of this SDK. * Call this to Get Double * * @param key {string} * @returns {Promise} */ @Cordova() getDouble(key: string): Promise { return; } /** * @deprecated - Since version 2.7.0 and will be removed in the future versions of this SDK. * Call this to Reset Product Config * * @returns {Promise} */ @Cordova() reset(): Promise { return; } /**************************** * Product Experiences methods ****************************/ /** * * Uploads variables to the server. Requires Development/Debug build/configuration. * @returns {Promise} */ @Cordova() syncVariables(): Promise { return; } /** * Uploads variables to the server. * @param {boolean} isProduction Provide `true` if variables must be sync in Productuon build/configuration. * @returns {Promise} * * * Note: This is NO-OP in Android */ @Cordova() syncVariablesinProd(isProduction: boolean): Promise { return; } /** * Forces variables to update from the server. * @returns {Promise} */ @Cordova() fetchVariables(): Promise { return; } /** * Create variables. * @returns {Promise} * @param {object} variables The JSON Object specifying the varibles to be created. */ @Cordova() defineVariables(variables: any): Promise { return; } /** * Get a variable or a group for the specified name. * @param {string} name - name. * @returns {Promise} */ @Cordova() getVariable(name: string): Promise { return; } /** * Get all variables via a JSON object. * @returns {Promise} */ @Cordova() getVariables(): Promise { return; } /** * Adds a callback to be invoked when variables are initialised with server values. Will be called each time new values are fetched. * @returns {Promise} */ @Cordova() onVariablesChanged(): Promise { return; } /** * Called when the value of the variable changes. * @param {name} string the name of the variable * @returns {Promise} */ @Cordova() onValueChanged(name: string): Promise { return; } /**************************** * Android 13 Push Primer ****************************/ /** * Method to prompt the push primer for android 13 onwards. * @param {object} value - key-value belongs to the localInApp properties. Refer documentation for details. * @returns {Promise} */ @Cordova() promptPushPrimer(localInAppObject: any): Promise { return; } /** * Method to prompt the hard permission dialog directly, if the push primer is not required. * @param {string} showFallbackSettings - If the value is true then SDK shows an alert dialog which routes to app's notification settings page. * @returns {Promise} */ @Cordova() promptForPushPermission(showFallbackSettings: boolean): Promise { return; } /** * Returns true/false based on whether push permission is granted or denied. * * @returns {Promise} */ @Cordova() isPushPermissionGranted(): Promise { return; } /******************* * Developer Options ******************/ /** * 0 is off, 1 is info, 2 is debug, default is 1 * * @param level {number} * @returns {Promise} */ @Cordova() setDebugLevel(level: number): Promise { return; } }