From 1e7545a86c85314997dda0c5852a0df08755a603 Mon Sep 17 00:00:00 2001 From: Arnab Pal Date: Thu, 13 Jun 2024 19:59:52 +0530 Subject: [PATCH] feat: added device-mode support for customer.io (#1430) --- .../destinations/customerio/db-config.json | 18 +++++-- .../destinations/customerio/schema.json | 48 +++++++++++++++++-- .../destinations/customerio/ui-config.json | 29 +++++++++++ 3 files changed, 86 insertions(+), 9 deletions(-) diff --git a/src/configurations/destinations/customerio/db-config.json b/src/configurations/destinations/customerio/db-config.json index 67f0355ed..063ca4663 100644 --- a/src/configurations/destinations/customerio/db-config.json +++ b/src/configurations/destinations/customerio/db-config.json @@ -10,6 +10,9 @@ "apiKey", "siteID", "datacenter", + "autoTrackDeviceAttributes", + "backgroundQueueMinNumberOfTasks", + "backgroundQueueSecondsDelay", "blacklistedEvents", "whitelistedEvents", "oneTrustCookieCategories", @@ -39,8 +42,8 @@ }, "supportedConnectionModes": { "web": ["cloud", "device"], - "android": ["cloud"], - "ios": ["cloud"], + "android": ["cloud", "device"], + "ios": ["cloud", "device"], "unity": ["cloud"], "amp": ["cloud"], "cloud": ["cloud"], @@ -62,8 +65,15 @@ "oneTrustCookieCategories", "ketchConsentPurposes" ], - "android": ["consentManagement", "connectionMode"], - "ios": ["consentManagement", "connectionMode"], + "android": [ + "useNativeSDK", + "autoTrackDeviceAttributes", + "backgroundQueueMinNumberOfTasks", + "backgroundQueueSecondsDelay", + "consentManagement", + "connectionMode" + ], + "ios": ["useNativeSDK", "autoTrackDeviceAttributes", "consentManagement", "connectionMode"], "web": [ "connectionMode", "dataUseInApp", diff --git a/src/configurations/destinations/customerio/schema.json b/src/configurations/destinations/customerio/schema.json index e1ba039bc..7cc6a5ad7 100644 --- a/src/configurations/destinations/customerio/schema.json +++ b/src/configurations/destinations/customerio/schema.json @@ -17,15 +17,52 @@ "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" }, "datacenter": { "type": "string", "enum": ["US", "EU"], "default": "US" }, - "sendPageNameInSDK": { "type": "object", "properties": { "web": { "type": "boolean" } } }, - "useNativeSDK": { "type": "object", "properties": { "web": { "type": "boolean" } } }, + "sendPageNameInSDK": { + "type": "object", + "properties": { + "web": { "type": "boolean" } + } + }, + "backgroundQueueMinNumberOfTasks": { + "type": "object", + "properties": { + "android": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + }, + "backgroundQueueSecondsDelay": { + "type": "object", + "properties": { + "android": { + "type": "string", + "pattern": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$" + } + } + }, + "autoTrackDeviceAttributes": { + "type": "object", + "properties": { + "android": { "type": "boolean" }, + "ios": { "type": "boolean" } + } + }, + "useNativeSDK": { + "type": "object", + "properties": { + "web": { "type": "boolean" }, + "android": { "type": "boolean" }, + "ios": { "type": "boolean" } + } + }, "dataUseInApp": { "type": "object", "properties": { "web": { "type": "boolean" } } }, "connectionMode": { "type": "object", "properties": { "web": { "type": "string", "enum": ["cloud", "device"] }, - "android": { "type": "string", "enum": ["cloud"] }, - "ios": { "type": "string", "enum": ["cloud"] }, + "android": { "type": "string", "enum": ["cloud", "device"] }, + "ios": { "type": "string", "enum": ["cloud", "device"] }, "unity": { "type": "string", "enum": ["cloud"] }, "amp": { "type": "string", "enum": ["cloud"] }, "cloud": { "type": "string", "enum": ["cloud"] }, @@ -523,6 +560,7 @@ } } } - } + }, + "additionalProperties": false } } diff --git a/src/configurations/destinations/customerio/ui-config.json b/src/configurations/destinations/customerio/ui-config.json index 445c6edb3..6a92fbcbc 100644 --- a/src/configurations/destinations/customerio/ui-config.json +++ b/src/configurations/destinations/customerio/ui-config.json @@ -286,6 +286,35 @@ "note": "Turn it ON if you want to send in-app messages to your website.", "configKey": "dataUseInApp", "default": false + }, + { + "type": "checkbox", + "label": "Automatically track device attributes in SDK mode", + "note": "Turn it OFF if you don't want Customer.io to track device attributes automatically.", + "configKey": "autoTrackDeviceAttributes", + "default": true + }, + { + "type": "textInput", + "label": "Minimum number of tasks in Background Queue", + "configKey": "backgroundQueueMinNumberOfTasks", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "regexErrorMessage": "Invalid value. Must be neumeric", + "secret": false, + "default": 10, + "note": ["The number of tasks kept in Background Queue"], + "placeholder": "e.g: 10" + }, + { + "type": "textInput", + "label": "Delay in seconds for Background Queue", + "configKey": "backgroundQueueSecondsDelay", + "regex": "(^\\{\\{.*\\|\\|(.*)\\}\\}$)|(^env[.].+)|^(.{0,100})$", + "regexErrorMessage": "Invalid value. Must be neumeric", + "secret": false, + "default": 30, + "note": ["Amount of delay for events to keep in Background Queue"], + "placeholder": "e.g: 30" } ] },