Skip to content

Current implementation does not eliminate Affinity analytics upload #11

@Still34

Description

@Still34

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.

Image

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"
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions