summaryrefslogtreecommitdiffstats
path: root/mobile/android/docs/adjust.rst
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/docs/adjust.rst')
-rw-r--r--mobile/android/docs/adjust.rst179
1 files changed, 0 insertions, 179 deletions
diff --git a/mobile/android/docs/adjust.rst b/mobile/android/docs/adjust.rst
deleted file mode 100644
index 16cb85b2b..000000000
--- a/mobile/android/docs/adjust.rst
+++ /dev/null
@@ -1,179 +0,0 @@
-.. -*- Mode: rst; fill-column: 100; -*-
-
-======================================
- Install tracking with the Adjust SDK
-======================================
-
-Fennec (Firefox for Android) tracks certain types of installs using a third party install tracking
-framework called Adjust. The intention is to determine the origin of Fennec installs by answering
-the question, "Did this user on this device install Fennec in response to a specific advertising
-campaign performed by Mozilla?"
-
-Mozilla is using a third party framework in order to answer this question for the Firefox for
-Android 38.0.5 release. We hope to remove the framework from Fennec in the future.
-
-The framework consists of a software development kit (SDK) built into Fennec and a
-data-collecting Internet service backend run by the German company `adjust GmbH`_. The Adjust SDK
-is open source and MIT licensed: see the `github repository`_. Fennec ships a copy of the SDK
-(currently not modified from upstream) in ``mobile/android/thirdparty/com/adjust/sdk``. The SDK is
-documented at https://docs.adjust.com.
-
-Data collection
-~~~~~~~~~~~~~~~
-
-When is data collected and sent to the Adjust backend?
-======================================================
-
-Data is never collected (or sent to the Adjust backend) unless
-
-* the Fennec binary is an official Mozilla binary [#official]_; and
-* the release channel is Release or Beta [#channel]_.
-
-If both of the above conditions are true, then data is collected and sent to the Adjust backend in
-the following two circumstances: first, when
-
-* Fennec is started on the device [#started]_.
-
-Second, when
-
-* the Fennec binary was installed from the Google Play Store; and
-* the Google Play Store sends the installed Fennec binary an `INSTALL_REFERRER Intent`_, and the
- received Intent includes Google Play Store campaign tracking information. This happens when thea
- Google Play Store install is in response to a campaign-specific Google Play Store link. For
- details, see the developer documentation at
- https://developers.google.com/analytics/devguides/collection/android/v4/campaigns.
-
-In these two limited circumstances, data is collected and sent to the Adjust backend.
-
-Where does data sent to the Adjust backend go?
-==============================================
-
-The Adjust SDK is hard-coded to send data to the endpoint https://app.adjust.com. The endpoint is
-defined by ``com.adjust.sdk.Constants.BASE_URL`` at
-https://hg.mozilla.org/mozilla-central/file/f76f02793f7a/mobile/android/thirdparty/com/adjust/sdk/Constants.java#l27.
-
-The Adjust backend then sends a limited subset of the collected data -- limited but sufficient to
-uniquely identify the submitting device -- to a set of advertising network providers that Mozilla
-elects to share the collected data with. Those advertising networks then confirm or deny that the
-identifying information corresponds to a specific advertising campaign performed by Mozilla.
-
-What data is collected and sent to the Adjust backend?
-======================================================
-
-The Adjust SDK collects and sends two messages to the Adjust backend. The messages have the
-following parameters::
-
- V/Adjust ( 6508): Parameters:
- V/Adjust ( 6508): screen_format normal
- V/Adjust ( 6508): device_manufacturer samsung
- V/Adjust ( 6508): session_count 1
- V/Adjust ( 6508): device_type phone
- V/Adjust ( 6508): screen_size normal
- V/Adjust ( 6508): package_name org.mozilla.firefox
- V/Adjust ( 6508): app_version 39.0a1
- V/Adjust ( 6508): android_uuid <guid>
- V/Adjust ( 6508): display_width 720
- V/Adjust ( 6508): country GB
- V/Adjust ( 6508): os_version 18
- V/Adjust ( 6508): needs_attribution_data 0
- V/Adjust ( 6508): environment sandbox
- V/Adjust ( 6508): device_name Galaxy Nexus
- V/Adjust ( 6508): os_name android
- V/Adjust ( 6508): tracking_enabled 1
- V/Adjust ( 6508): created_at 2015-03-24T17:53:38.452Z-0400
- V/Adjust ( 6508): app_token <private>
- V/Adjust ( 6508): screen_density high
- V/Adjust ( 6508): language en
- V/Adjust ( 6508): display_height 1184
- V/Adjust ( 6508): gps_adid <guid>
-
- V/Adjust ( 6508): Parameters:
- V/Adjust ( 6508): needs_attribution_data 0
- V/Adjust ( 6508): app_token <private>
- V/Adjust ( 6508): environment production
- V/Adjust ( 6508): android_uuid <guid>
- V/Adjust ( 6508): tracking_enabled 1
- V/Adjust ( 6508): gps_adid <guid>
-
-The available parameters (including ones not exposed to Mozilla) are documented at
-https://partners.adjust.com/placeholders/.
-
-Notes on what data is collected
--------------------------------
-
-The *android_uuid* uniquely identifies the device.
-
-The *gps_adid* is a Google Advertising ID. It is capable of uniquely identifying a device to any
-advertiser, across all applications. If a Google Advertising ID is not available, Adjust may fall
-back to an Android ID, or, as a last resort, the device's WiFi MAC address.
-
-The *tracking_enabled* flag is only used to allow or disallow contextual advertising to be sent to a
-user. It can be, and is, ignored for general install tracking of the type Mozilla is using the
-Adjust SDK for. (This flag might be used by consumers using the Adjust SDK to provide in-App
-advertising.)
-
-It is not clear how much entropy their is in the set of per-device parameters that do not
-*explicitly* uniquely identify the device. That is, it is not known if the device parameters are
-likely to uniquely fingerprint the device, in the way that user agent capabilities are likely to
-uniquely fingerprint the user.
-
-Technical notes
-~~~~~~~~~~~~~~~
-
-Build flags controlling the Adjust SDK integration
-==================================================
-
-Add the following to your mozconfig to compile with the Adjust SDK::
-
- export MOZ_INSTALL_TRACKING=1
- export MOZ_NATIVE_DEVICES=1
- export RELEASE_OR_BETA=1
- ac_add_options --with-adjust-sdk-keyfile="$topsrcdir/mobile/android/base/adjust-sdk-sandbox.token"
-
-``MOZ_NATIVE_DEVICES`` && ``RELEASE_OR_BETA`` are required for an unknown
-reason. If you build without them, the ``StubAdjustHelper`` will be
-returned.
-
-No trace of the Adjust SDK should be present in Fennec if
-``MOZ_INSTALL_TRACKING`` is not defined.
-
-Access to the Adjust backend is controlled by a private App-specific
-token. Fennec's token is managed by Release Engineering and should not
-be exposed if at all possible; for example, it should *not* leak to build
-logs. The value of the token is read from the file specified using the
-``configure`` flag ``--with-adjust-sdk-keyfile=KEYFILE`` and stored in
-the build variable ``MOZ_ADJUST_SDK_KEY``. The mozconfig specified above
-defaults to submitting data to a special Adjust sandbox allowing a
-developer to test Adjust without submitting false data to our backend.
-
-We throw an assertion if ``MOZ_INSTALL_TRACKING`` is specified but
-``--with-adjust-sdk-keyfile`` is not to ensure our builders have a proper
-adjust token for release and beta builds. It's great to catch some
-errors at compile-time rather than in release. That being said, ideally
-we'd specify a default ``--with-adjust-sdk-keyfile`` for developer builds
-but I don't know how to do that.
-
-Technical notes on the Adjust SDK integration
-=============================================
-
-The *Adjust install tracking SDK* is a pure-Java library that is conditionally compiled into Fennec.
-It's not trivial to integrate such conditional feature libraries into Fennec without pre-processing.
-To minimize such pre-processing, we define a trivial ``AdjustHelperInterface`` and define two
-implementations: the real ``AdjustHelper``, which requires the Adjust SDK, and a no-op
-``StubAdjustHelper``, which has no additional requirements. We use the existing pre-processed
-``AppConstants.java.in`` to switch, at build-time, between the two implementations.
-
-Notes and links
-===============
-
-.. _adjust GmbH: http://www.adjust.com
-.. _github repository: https://github.com/adjust/android_sdk
-.. [#official] Data is not sent for builds not produced by Mozilla: this would include
- redistributors such as the Palemoon project.
-.. [#channel] Data is not sent for Aurora, Nightly, or custom builds.
-.. [#started] *Started* means more than just when the user taps the Fennec icon or otherwise causes
- the Fennec user interface to appear directly. It includes, for example, when a Fennec service
- (like the Update Service, or Background Sync), starts and Fennec was not previously running on the
- device. See http://developer.android.com/reference/android/app/Application.html#onCreate%28%29
- for details.
-.. _INSTALL_REFERRER Intent: https://developer.android.com/reference/com/google/android/gms/tagmanager/InstallReferrerReceiver.html