"activation" ping (obsolete) ============================ This mobile-specific ping is intendend to track activations of distributions of mobile products with a small error rate. This will be sent at Startup. Minimally, we want to get this ping at least once from every client. Submission will be per the Edge server specification:: /submit/mobile/activation/v/docId This is a modern “structure ingestion” ping (the namespace is not telemetry). For structured ingestion, we capture the schema version as one of the URI parameters, so we don’t need to include it in the body of the message. * ``v`` is the ping format version * ``docId`` is a UUID for deduping Structure: .. code-block:: js { "identifier": , // Googled Ad ID hashed using bcrypt "clientId": , // client id, e.g. "c641eacf-c30c-4171-b403-f077724e848a" //included only if identifier was unabled to be retrieved "manufacturer": , // Build.MANUFACTURER "model": , // Build.MODEL "locale": , // application locale, e.g. "en-US" "os": , // OS name. "osversion": , // OS version. "created": , // date the ping was created // in local time, "yyyy-mm-dd" "tz": , // timezone offset (in minutes) of the // device when the ping was created "app_name": , // "Fennec" "channel": , // Android package name e.g. "org.mozilla.firefox" "distributionId": // Distribution identifier (optional) } Field details ------------- identifier ~~~~~~~~~~ The ``identifier`` field is the Google Ad ID hashed using bcrypt. Ideally we want to send this instead of the client_id but not all distributions have Google Play Services enabled. client_id ~~~~~~~~~~ The ``client_id`` field represents the telemetry client id and it is only included if the identifier is empty. channel ~~~~~~~ The ``channel`` field represents the Android package name. Version history --------------- * v1: initial version - shipped in `Fennec 68 `_. Android implementation notes ---------------------------- On Android, the uploader has a high probability of delivering the complete data for a given client but not a 100% probability. This was a conscious decision to keep the code simple. Even if we drop a ping, it will be resent on future startups until we have confirmation that it has been uploaded.