-
Notifications
You must be signed in to change notification settings - Fork 20
Telemetry
For clients that have "send usage data" enabled, Scryer sends a "core" ping and an "event" ping to Mozilla's telemetry service. Sending telemetry can be disabled in the app's settings. Builds of "Scryer" have telemetry enabled by default ("opt-out").
Note: Scryer is still in development and this documentation is subject to change.
We use Adjust SDK to evaluate the effectiveness of our campaign channel. What data has been collected can be found in the code here. The evaluation process is accomplished by 1. Receive INSTALL_REFERRER Intent from Google Play; 2. Send the referrer string back to adjust server(https://app.adjust.com) when the application is alive.
Scryer also uses Google’s Firebase platform to help us improve performance, support crashes, understand your experience with Scryer and improve the user experience through A/B testing and in-product messaging. Below are the specific Firebase Products we use
- Google Analytics; to analyze anonymous user attributions and behavior to make informed decisions on our product roadmap.
- Remote Config; to customize your Scryer experience such as changing the look and feel, rolling out features gradually, running A/B tests, delivering customized content, or making other updates without deploying a new version.
- Cloud Messaging; to send messages and notifications so we can bring contextual hints to you to help you use Scryer better
- Crashlytics; to understand crashes better so you can use Scryer without problems
- Performance Monitoring; to diagnose app performance issues so we can keep Scryer really fast
Learn more about Firebase data collection here or you have the option to turn off Firebase by disabling “Send Usage Data” in your Settings. For events automatically collected by Firebase, see here
Scryer creates and tries to send a "core" ping whenever the app goes to the background. This core ping uses the same format as Firefox for Android and is documented on firefox-source-docs.mozilla.org.
In addition to the core ping an event ping for UI telemetry is generated and sent as soon as the app is sent to the background. All the telemetry mechanism is leverage from the library telemetry-android which is also been used in Firefox Focus for Android.
As part of the event ping the most recent state of the user's setting is sent (default values in bold):
Setting | Key | Value |
---|---|---|
Enable Capture Service | pref_key_enable_capture_service | true / false |
Enable Floating Screenshot Button | pref_key_enable_floating_screenshot_button | true / false |
Enable Add to Collection | pref_key_enable_add_to_collection | true / false |
The event ping contains a list of events (see event format on firefox-source-docs.mozilla.org) for the following actions:
Event | category | method | object | value |
---|---|---|---|---|
Click on search bar | action | click | home_search_bar |
- An event ping will contain up to but no more than 500 events
- No more than 40 pings per type (core/event) are stored on disk for upload at a later time
- No more than 100 pings are sent per day
-
Event pings are generated (and stored on disk) whenever the onStop() callback of the main activity is triggered. This happens whenever the main screen of the app is no longer visible (The app is in the background or another screen is displayed on top of the app).
-
Whenever we are storing pings we are also scheduling an upload. We are using Android’s JobScheduler API for that. This allows the system to run the background task whenever it is convenient and certain criteria are met. The only criteria we are specifying is that we require an active network connection. In most cases, this job is executed immediately after the app is in the background.
-
Whenever an upload fails we are scheduling a retry. The first retry will happen after 30 seconds (or later if there’s no active network connection at this time). For further retries a exponential backoff policy is used: [30 seconds] * 2 ^ (num_failures - 1)
-
An earlier retry of the upload can happen whenever the app is coming to the foreground and sent to the background again (the previously scheduled job is reset and we are starting all over again).