Integrating Adjust analytics into a mobile application

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
Integrating Adjust analytics into a mobile application
Medium
from 1 business day to 3 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Integrating Adjust analytics into a mobile application

Adjust — MMP (Mobile Measurement Partner) with strong position in European and Asian markets. Like AppsFlyer, main task — install attribution and in-app events. Choice between Adjust and AppsFlyer often determined by advertising partners: some DSPs and networks prefer working through Adjust.

SDK connection

iOS via Swift Package Manager — package adjust/ios_sdk:

import Adjust

// AppDelegate
func application(_ application: UIApplication,
                 didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    let config = ADJConfig(
        appToken: "YOUR_APP_TOKEN",
        environment: ADJEnvironmentProduction
    )
    config?.logLevel = ADJLogLevelError
    config?.delegate = self

    Adjust.appDidLaunch(config)
    return true
}

Important: ADJEnvironmentSandbox vs ADJEnvironmentProduction — in sandbox, traffic doesn't reach production statistics. Common mistake — release with Sandbox.

Android:

implementation("com.adjust.sdk:adjust-android:4.+")
val config = AdjustConfig(this, "YOUR_APP_TOKEN", AdjustConfig.ENVIRONMENT_PRODUCTION)
config.setLogLevel(LogLevel.ERROR)
Adjust.onCreate(config)

On Android additionally need AdjustLifecycleCallbacks in Application.onCreate() or manual calls to onResume/onPause in each Activity.

Event tracking

In Adjust, each event created in the dashboard gets unique Event Token — four-character code (abc123). Code used when calling SDK:

let event = ADJEvent(eventToken: "abc123")
event?.addCallbackParameter("product_id", value: "sku_789")
event?.addCallbackParameter("category", value: "electronics")
event?.setRevenue(990.0, currency: "RUB")
event?.setOrderId("order_\(orderId)") // deduplication
Adjust.trackEvent(event)

setOrderId — critically important for e-commerce: prevents duplicate purchase event on retries (e.g., from network request retry).

SKAdNetwork on iOS 14+

Adjust manages conversion values automatically through dashboard configuration. Encoding scheme determined in Adjust Suite — there you set which events and their sequence encode in 6 bits:

// ATT request should be before start() or right after
Adjust.requestTrackingAuthorization { status in
    // status: ATTrackingManager.AuthorizationStatus
}

Without requestTrackingAuthorization on iOS 14.5+ IDFA inaccessible, and attribution will work only through SKAdNetwork (aggregately, with up to 72-hour delay).

Deeplink attribution

// Universal Links
func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity,
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    if userActivity.activityType == NSUserActivityTypeBrowsingWeb,
       let url = userActivity.webpageURL {
        Adjust.appWillOpen(url)
    }
    return true
}

// URL Schemes
func application(_ app: UIApplication, open url: URL,
                 options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
    Adjust.appWillOpen(url)
    return true
}

Adjust vs AppsFlyer: practical choice

Aspect Adjust AppsFlyer
Market Europe, Asia Global, especially US
Price On request, usually lower for small volumes On request
Fraud Protection Built-in (Adjust Fraud Prevention) Built-in (Protect360)
SKAdNetwork Yes Yes
Raw Data Export S3, BigQuery via Data Locker S3 via Data Locker

What's included in the work

  • SDK connection (iOS/Android/Flutter)
  • Environment setup for debug/release builds
  • Event token creation in dashboard + code integration
  • ATT and SKAdNetwork configuration for iOS 14+
  • Deeplink and Universal Links
  • Testing through Adjust Testing Console

Timeline

Basic attribution with events: 1–2 days. With deeplink and SKAdNetwork: up to 3 days. Cost calculated individually.