Summary
At the moment, despite patching out the analytics upload consent, setting the entire app to offline state, Affinity Cloud Services (acs) still attempts to deliver analytics to Canva server via api.canva.com via Snowplow. This appears to be handled by libacs and is called via Affinity.CloudServices.
Expected Behavior
Creating a document and/or other actions that may trigger a telemetry send should not reach Canva API or third-party analytics services.
Current Behavior
Creating a document and/or other actions triggers a telemetry send to Canva API.
Additional Details
- Below is an example of the analytics sent when creating a new document - note that some strings have been manually replaced with variable-like names to redact information of the testing environment.
Main blob
{
"data": [
{
"aid": "com.seriflabs.affinity.analytics.env-production",
"cx": dataBlob1,
"dtm": currentTimestamp,
"e": "ue",
"eid": eventId,
"ip": "xxx.xxx.xxx.xxx",
"lang": "en-US",
"p": "pc",
"stm": currentTimeStamp,
"tna": "com.seriflabs.affinityv3",
"tv": "cpp-2.0.0",
"tz": currentTimezone,
"ua": "Affinity v3/3.0.1.3808 (Retail)",
"ue_px": dataBlob2,
"uid": "urn:affinitycloud:anon-device:<uid>"
}
],
"schema": "iglu:com.snowplowanalytics.snowplow/payload_data/jsonschema/1-0-4"
}
DataBlob1
{
"data": [
{
"data": {
"isCritical": true
},
"schema": "iglu:com.seriflabs.affinity.analytics/event_description/jsonschema/1-0-0"
},
{
"data": {
"build": "AffinityRetail",
"product": "V3",
"version": "3.0.1.3808"
},
"schema": "iglu:com.seriflabs.affinity.analytics/app_description/jsonschema/2-0-0"
},
{
"data": {
"interfaceAppearance": "dark",
"isPostCrash": false,
"languageCode": "en-US"
},
"schema": "iglu:com.seriflabs.affinity.analytics/app_session_description/jsonschema/1-1-0"
},
{
"data": {
"experiments": null
},
"schema": "iglu:com.seriflabs.affinity.analytics/experiment_enrolments/jsonschema/1-0-0"
},
{
"data": {
"eventIndex": 9,
"firstEventId": firstEventId,
"firstEventTimestamp": firstEventTimestamp,
"previousSessionId": previousSessionId,
"sessionId": sessionId,
"sessionIndex": 8,
"storageMechanism": "SQLITE",
"userId": userId
},
"schema": "iglu:com.snowplowanalytics.snowplow/client_session/jsonschema/1-0-2"
},
{
"data": {
"deviceManufacturer": "",
"deviceModel": "",
"deviceProcessorCount": processorCount,
"osIs64Bit": true,
"osServicePack": "0.0",
"osType": "Windows",
"osVersion": osVersion
},
"schema": "iglu:com.snowplowanalytics.snowplow/desktop_context/jsonschema/1-0-0"
}
],
"schema": "iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-1"
}
DataBlob2
{
"data": {
"data": {
"verb": "organise"
},
"schema": "iglu:com.seriflabs.affinity.analytics/activity_detected/jsonschema/2-0-0"
},
"schema": "iglu:com.snowplowanalytics.snowplow/unstruct_event/jsonschema/1-0-0"
}
Summary
At the moment, despite patching out the analytics upload consent, setting the entire app to offline state, Affinity Cloud Services (acs) still attempts to deliver analytics to Canva server via
api.canva.comvia Snowplow. This appears to be handled bylibacsand is called viaAffinity.CloudServices.Expected Behavior
Creating a document and/or other actions that may trigger a telemetry send should not reach Canva API or third-party analytics services.
Current Behavior
Creating a document and/or other actions triggers a telemetry send to Canva API.
Additional Details
Main blob
{ "data": [ { "aid": "com.seriflabs.affinity.analytics.env-production", "cx": dataBlob1, "dtm": currentTimestamp, "e": "ue", "eid": eventId, "ip": "xxx.xxx.xxx.xxx", "lang": "en-US", "p": "pc", "stm": currentTimeStamp, "tna": "com.seriflabs.affinityv3", "tv": "cpp-2.0.0", "tz": currentTimezone, "ua": "Affinity v3/3.0.1.3808 (Retail)", "ue_px": dataBlob2, "uid": "urn:affinitycloud:anon-device:<uid>" } ], "schema": "iglu:com.snowplowanalytics.snowplow/payload_data/jsonschema/1-0-4" }DataBlob1
{ "data": [ { "data": { "isCritical": true }, "schema": "iglu:com.seriflabs.affinity.analytics/event_description/jsonschema/1-0-0" }, { "data": { "build": "AffinityRetail", "product": "V3", "version": "3.0.1.3808" }, "schema": "iglu:com.seriflabs.affinity.analytics/app_description/jsonschema/2-0-0" }, { "data": { "interfaceAppearance": "dark", "isPostCrash": false, "languageCode": "en-US" }, "schema": "iglu:com.seriflabs.affinity.analytics/app_session_description/jsonschema/1-1-0" }, { "data": { "experiments": null }, "schema": "iglu:com.seriflabs.affinity.analytics/experiment_enrolments/jsonschema/1-0-0" }, { "data": { "eventIndex": 9, "firstEventId": firstEventId, "firstEventTimestamp": firstEventTimestamp, "previousSessionId": previousSessionId, "sessionId": sessionId, "sessionIndex": 8, "storageMechanism": "SQLITE", "userId": userId }, "schema": "iglu:com.snowplowanalytics.snowplow/client_session/jsonschema/1-0-2" }, { "data": { "deviceManufacturer": "", "deviceModel": "", "deviceProcessorCount": processorCount, "osIs64Bit": true, "osServicePack": "0.0", "osType": "Windows", "osVersion": osVersion }, "schema": "iglu:com.snowplowanalytics.snowplow/desktop_context/jsonschema/1-0-0" } ], "schema": "iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-1" }DataBlob2
{ "data": { "data": { "verb": "organise" }, "schema": "iglu:com.seriflabs.affinity.analytics/activity_detected/jsonschema/2-0-0" }, "schema": "iglu:com.snowplowanalytics.snowplow/unstruct_event/jsonschema/1-0-0" }