Data collection in iOS
General information about data collection can be found here.
The article below describes types and internal structure of the data collected from iOS applications.
Performance metrics
Performance monitor collects the following metrics:
- CPU
Average CPU usage for all cores available - Memory
Resident size for the app process - Network
It consists of two metrics: download and upload speed calculated as average for WiFi and WWAN interfaces - Disk
Bytes read and written - FPS
Number of frames per second calculated byCADisplayLink
attached to main run loop - Battery
Value frombatteryLevel
provided byUIDevice
class. Not applicable for AppleTV.
HTTP requests
HTTP monitor intercepts all requests made via NSURLSession
and tracks their responses, execution time etc. Please note that any network activity outside NSURLSession
APIs is not tracked at the moment.
SQLite database
We discover all databases in your app and provide their contents and schemes.
We identify database files by their extension. The following extensions are treated as database files: db
, sqlite
, sqlite2
, sqlite3
, sqlitedb
,db3
.
The following directories are scanned: NSDocumentDirectory
, NSCachesDirectory
, NSLibraryDirectory
, NSApplicationDirectory
, NSApplicationSupportDirectory
.
Screenshots
For now we support screenshots only for one window. It means you will not get a screenshot of the window displayed at Apple TV if your app uses mirroring.
Logs
Log monitor intercepts data written by app to stdout and stderr. It tracks all calls to NSLog()
, Swift print()
and other print
-family functions. Log level is set to verbose
by default.
We also provide integration with CocoaLumberjack library for better log level separation. Log monitor intercepts DDLog()
calls separately and sends them along with the log level you used.
User location
Location monitor gets a location object received by LocationManager
and sends it to backend. The resulting position is displayed on a map on frontend.
It also allows to request location services permissions from the frontend. We never request them without explicit user command, so until your app has started a location manager, location tracking will not be available.
Environment information
It includes your app info.plist contents, CLI arguments passed to the app on launch, some information about device, and environment variables defined in your project.
Analytics
Monitor tracks analytic systems initialization and usage in your app. Currently supported analytic systems are Google Analytics, Firebase, Mixpanel, Flurry, Adobe and Fabric (Answers). Once you start analytic SDK from your code AppSpector starts watching events you send. Important to remember that we track data when you send it to analytic SDK and not when it was sent via network. That's why due to throttling settings or networking issues you can see some events in the analytic monitor but still miss them in your GA dashboard. The monitor is intended to debug your code and not the analytic SDK itself.
CoreData
CoreData monitor injects deeply in CoreData stack and allows to track all data in your stores, their schemes and settings. Please note that CoreData monitor could possibly slow down your CoreData operations a bit.
NSNotificationCenter
Monitor tracks default notification center, intercepts all notification subscriptions and dispatches along with notification user info.
Updated about 6 years ago