Engine Technical Specs

This document discusses technical details of the Engine SDK. If a topic you are interested in is not answered here, you can request it in our support forum.


Tracking Permissions and Privacy

Engine has been designed to respect user privacy. Among other things:

  • Engine respects Apple’s Limit Ad Tracking option.
  • Engine relies on the user to grant access to location services via iOS (in app or always). Engine will NOT seek to determine a user’s location through alternative methods (for example, IP lookup or SSID lookups) if the user has not granted location permissions.

Factual is committed to protecting user privacy, and we’ll include a privacy best practices section here soon. In the meantime, our current privacy policy is published here.


SDK Size

We measure the Engine SDK in terms of how much larger it would make your final shipping app, rather than the size of the binary files we deliver to you (pre-compilation). A basic Engine installation should not add more than 1.5 MB to the size of your app. Keep in mind that this isn’t a cut and dry calculation, as you may be adding additional code to your app to actually implement the cool things that Engine now enables you to do.


Network Resources

In order to function, Engine requires two types of resources periodically: the latest configuration file, which configures Engine to your specific requirements; and map tiles, containing geographic data.


Configuration files

Engine checks daily (this is configurable) for the latest configuration file. Configuration files contain things like power profiles, location permissions, country-specific privacy guidance, and circumstance definitions. The request for a configuration file contains the following:

Phone make Phone model Operating system
Carrier Carrier Country Operating system version
Engine version Device Id1 Configuration id

1Depending on configuration and terms, this may be a random Id generated at install, the IDFA, or a completely random string. It is only used to track unique configuration requests in broad numbers.


Map tiles

Engine keeps a cache of geographic data such as nearby businesses, street polygons, etc. This cache is served in “tiles”- roughly square segments of the earth around the user. Any time a user enters an area for which Engine hasn’t cached any data, a new tile is requested. The following data is sent when requesting a tile:

  • Level 7 Geohash of the tiles being requested.
  • Average tile size is ~3kb.