Deep linking for easy access to content within native mobile apps

About the client
Our client is a unique startup in the mobile search space. Their product provides users with easy access and engagement with the content and functionalities within mobile apps.

Tech stack
Android, Android Framework (OS), iOS, Node.JS, JAVA

The problem
Mobile app deep linking is a hot trend in making apps visible to users. APIs to hook into apps are catching on, but doing it for apps without assistance is a challenge. We took on the challenge for one of our clients by developing app automation and ontology assisted content acquisition tools which, in effect, permit us to “crawl” apps.
For this, Android apps need to be run in emulators to access the data that they present to the user. The various states of an app need to be mapped out prior to crawling the apps.

The solution
We built an app crawler and an interface to the crawler for recording typical patterns of navigating an app and annotating the presented information using an ontology developed for the purpose. Using the interface, a crawling specification is derived which enables repeated crawls of the app. Our app crawler runs as a service on the device and orchestrates the UI of the controlled apps. The crawler then scrapes the screens for data by hooking into Android frameworks. To enable live app search, we’re working on running managed emulator farms.

While the Android SDK provides the “intent” mechanism for describing parts of an app’s functionality that can be invoked from outside, few apps make crucial functionality accessible via intents. We incorporated static analysis of APK files as well as dynamic annotations using our tool to enable an app to be crawled for data on behalf of a user.

The benefits
Onboarding apps into the crawling engine in a few hours. High visibility apps have been onboarded using our system and tools. Our goal is to onboard 1000 apps. We’re also working on live search that is expected to linearly scale using nodes running 64 emulators each. The emulator cluster design is implemented on high-compute hardware (64-core machines) and is expected to cut down these costs by nearly a factor of 10 as running emulators in the cloud using vanilla AWS VMs is expensive.

We’re open for business
Let’s get started