Skip to content

Tracking and Analytics

Cagri Cetin edited this page Mar 4, 2015 · 14 revisions

iOS

OneBusAway iOS currently uses Google Analytics for iOS, v3 for production in-app tracking statistics. We use the TestFlight SDK 3.0 for beta testing analytics. The same manually-tracked views/events are tracked in both TestFlight and Google Analytics. Data collected is anonymous and does not contain identifying information. The following is a summary of the interactions we track:

  • Sessions: Google Analytics automatically tracks user sessions, or a single period of user interaction. The tracker is initialized upon loading the app, and is set to dispatch every 120 seconds (the suggested GA default to balance battery life/timely dispatch). Hits that take place within a 30 minute period are grouped into the same session by default. We also use the GA default timeout interval of 30 seconds (i.e. the tracker will stop dispatching after the app has been in the background for over 30 seconds). We also send the current region set upon load as an event, even though it is not a user action.

  • Views: We track each time a unique view within the app is loaded. The tracking code executes within the viewDidAppear() or viewDidLoad() methods, and sends the name of the view along with the hit.

  • Events: We track certain events and button presses within the app. These are currently centered around newer features, but will soon be extended to track other user interactions. We currently track:

    • Button Presses:
      • When the information button or 'About this Stop' tab is tapped in the stop details view, along with the region that is set when the button is pressed (e.g., "Loaded StopInfo from set_region_name")
      • When the user taps "Feature Requests" from the Info tab ("Clicked Feature Request Link")
      • When the user turns on the 'Experimental Regions' option ("Turned on Experimental Regions")
      • When the user turns off the 'Experimental Regions' option ("Turned off Experimental Regions")
      • When the user clicks Facebook/Twitter/Email link under "Contact Us" ("Clicked Facebook/Twitter/Email Link")
    • Accessibility:
      • When the user is running VoiceOver, Apple's native screen-reader, on the Stop Details view ("VoiceOver running")
      • When information button is pressed while running VoiceOver ("StopInfo accessed with VoiceOver")
      • When user turns on "Increase Contrast" setting (forthcoming)
    • Actions:
      • When the user sets a new region (including upon first installation, as well as custom API URLs) along with the region name ("Set Region: region_name")
      • When the user submits a problem report ("Reported Problem")
      • When the user edits a bookmark ("Edited Bookmark")
      • When the user sets a bookmark group ("Edited Bookmark Group")
  • Device/Version Information (collected by GA by default):

    • Device information such as model and current software version (no unique device identifiers are stored)
    • Network name
    • Current app version (e.g., "OBA iOS v2.2")

Google Analytics stores location information to the level of what city the user is in. It does not store exact latitude/longitude. No demographic information such as age or gender is tracked.

Android

OneBusAway Android will use Google Analytics for Android, v4 for production in-app tracking statistics (this has not yet been deployed to production). All data is collected in aggregate, and without identifying information. The following is a summary of the interactions we track:

  • Sessions: Google Analytics automatically tracks user sessions, or a single period of user interaction. The tracker is initialized upon loading the app, and is set to dispatch every 120 seconds (the suggested GA default to balance battery life/timely dispatch). Hits that take place within a 30 minute period are grouped into the same session by default. We also use the GA default timeout interval of 30 seconds (i.e. the tracker will stop dispatching after the app has been in the background for over 30 seconds). We also send the current region set upon load as an event, even though it is not a user action.

  • Views: We track each time a unique view within the app is loaded. The tracking code executes within the onStart() method, and sends the name of the view along with the hit.

    • Tracked Views:
      • HomeActivity
      • SearchActivity
      • RouteInfoActivity
      • TripInfoActivity
      • MyStopsActivity
      • ArrivalsListActivity
      • PreferencesActivity
      • ArrivalsListFragment
      • MyRecentRoutesFragment
      • MyRecentStopsFragment
      • MyRemindersFragment
      • MyStarredStopsFragment
  • Events: We track certain events and button presses within the app. We currently track:

    • Button Presses:
      • When the information button or 'About this Stop' tab is tapped in the stop details view, along with the region that is set when the button is pressed (e.g., "Loaded StopInfo from set_region_name")
      • When the user taps "Feature Requests" from the Info tab ("Clicked Feature Request Link")
      • When the user turns on the 'Experimental Regions' option ("Turned on Experimental Regions")
      • When the user turns off the 'Experimental Regions' option ("Turned off Experimental Regions")
      • When the user clicks Facebook/Twitter/Email link under "Contact Us" ("Clicked Facebook/Twitter/Email Link")
    • Actions:
      • When the user sets a new region (including upon first installation, as well as custom API URLs) along with the region name ("Set Region: region_name")
      • When the user submits a problem report ("Reported Problem")
      • When the user edits a bookmark ("Edited Bookmark")
      • When the user sets a bookmark group ("Edited Bookmark Group")
    • Stop Search:
      • When the user taps the stop from the HomeActivity
      • Tracking paramters:
        • Region

        • Stop Id

        • Stop distance -> We track the distance between users' current location and the selected stop:

          | User Distance: | | :-------------: | |00000-00050m| |00050-00100m| |00100-00200m| |00200-00400m| |00400-00800m| |00800-01600m| |01600-03200m| |03200-INFINITY| We **do not** store or collect any private location (e.g., exact latitude/longitude) information.

  • Device/Version Information (collected by GA by default):

    • Device information such as model and current software version (no unique device identifiers are stored)
    • Network name
    • Current app version (e.g., "OBA Android v21.1")

Google Analytics stores location information to the level of what city the user is in. It does not store exact latitude/longitude. No demographic information such as age or gender is tracked.

###Difference between IOS and Android

IOS Android
- stop_metrics
app_settings -> startup -
accessibility -> increase_contrast -
accessibility -> increase_contrast -
accessibility -> voice_over accessibility -> touch_exploration_on
ui_action -> button_press -> Out of region alert -
ui_action -> app_switch -> facebook -
ui_action -> button_press -> Cancel search button clicked -
- ui_action -> button_press -> Clicked MapStopIcon