Skip to content

About

Android 딥링크·디퍼드 딥링크·어트리뷰션 SDK (Kotlin). 영업 통화·연간 계약 없이 무료로 시작. 카카오톡·네이버·LINE 인앱 브라우저 자동 탈출. Deep links & attribution without the sales call.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ViaLink Android SDK

ViaLink — Deep links for 6 platforms. Start free.

English | 한국어

Android SDK for the ViaLink deep link infrastructure service.

One link routes automatically across iOS, Android, and Web. When the app is not installed, the user is sent to the store and still lands on the intended screen on first launch (deferred deep linking). Click, install, open, event, and payment all flow through a single attribution pipeline.

Unlike most deep link and attribution tools, which require a sales call and an annual contract, ViaLink is free to start. No credit card — all six platform SDKs are available the moment you sign up.

→ vialink.app

Opens the app from in-app browsers, too

Links shared on KakaoTalk, Naver, LINE, Instagram, or Threads open in the app's built-in browser, where Universal Links and App Links often don't fire. ViaLink's link server detects the in-app browser and takes the route that works there:

  • KakaoTalk · Naver · LINE (iOS) — hands the link off to Safari automatically, so the Universal Link fires
  • Android in-app browsers — launches the app with an intent:// URL, falling back to the store if it isn't installed
  • Instagram · Facebook · Threads and others — tries your app's custom URL scheme (if registered) and shows an "Open in external browser" guide as a backup

This runs on the link server — no extra SDK code needed.

Features

  • Deep link routing — automatic handling of App Links / Custom Schemes
  • Deferred deep linking — fingerprint-based matching on the first launch after install
  • Event tracking — batched delivery of custom events
  • Payment attribution — records payment attempts and automatically attaches link_id
  • Link creation — generate deep links from within the app (static/dynamic)

Requirements

  • Android API 24 (7.0)+
  • Kotlin 1.9+

Installation

1) Register the repository (settings.gradle.kts)

dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven { url = uri("https://aresjoydev.github.io/vialink-android-sdk") }
    }
}

2) Add the dependency (app/build.gradle.kts)

dependencies {
    implementation("com.vialink:sdk:<version>")
}

Check the latest version from the release tags on the GitHub repository, or at https://aresjoydev.github.io/vialink-android-sdk/com/vialink/sdk/maven-metadata.xml.

Usage

1. Initialization

// Initialize in Application.onCreate
ViaLinkSDK.init(this, "YOUR_API_KEY")

2. Deep link callbacks

// Receive App Links / custom schemes
ViaLinkSDK.onDeepLink { data ->
    Log.d("ViaLink", "path: ${data.path}")
    Log.d("ViaLink", "params: ${data.params}")
}

// Deferred deep link (matched after the first install)
ViaLinkSDK.onDeferredDeepLink { data, error ->
    if (error != null) {
        Log.e("ViaLink", "match failed: ${error.message}")
        return@onDeferredDeepLink
    }
    if (data != null) {
        Log.d("ViaLink", "deferred: ${data.path}")
    } else {
        Log.d("ViaLink", "no match (organic)")
    }
}

Important: You must call handleIntent in your Activity to process intents.

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        ViaLinkSDK.handleIntent(intent)
    }

    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        ViaLinkSDK.handleIntent(intent)
    }
}

3. Pull API

// Synchronous (returns the cached value immediately)
val deepLink = ViaLinkSDK.getDeepLinkData()
val deferred = ViaLinkSDK.getDeferredLinkData()

// Asynchronous (waits until the result arrives, in a coroutine context)
lifecycleScope.launch {
    val deepLinkAsync = ViaLinkSDK.awaitDeepLinkData()    // 3-second timeout
    val deferredAsync = ViaLinkSDK.awaitDeferredLinkData() // waits until the result
}

4. Event tracking

ViaLinkSDK.track("purchase", mapOf(
    "product_id" to "12345",
    "revenue" to 29900,
    "currency" to "KRW"
))

5. Payment tracking

lifecycleScope.launch {
    val result = ViaLinkSDK.trackPayment(
        PaymentInitiatedArgs(
            orderId = "ORD-2026-0001",
            amount = 19900.0,
            currency = "KRW",
            paymentMethod = "card"
        )
    )
    Log.d("ViaLink", "success: ${result.success}, id: ${result.paymentEventId}")
}

6. Link creation

lifecycleScope.launch {
    val result = ViaLinkSDK.createLink(
        path = "/product/12345",
        data = mapOf("promo_code" to "FRIEND_SHARE"),
        campaign = "referral",
        linkType = "dynamic" // when click tracking is needed
    )
    result.onSuccess { url -> Log.d("ViaLink", "created link: $url") }
    result.onFailure { err -> Log.e("ViaLink", "creation failed: ${err.message}") }
}

Notes

Deferred deep link — Android Auto Backup

On Android 6.0 and above, app data is automatically backed up to Google Drive. Because the SDK stores the first-launch flag in SharedPreferences, the backup may be restored on reinstall after uninstall, which can prevent deferred deep link matching from firing.

If you need deferred deep linking to work even after reinstall, add the backup exclusion rules below.

res/xml/data_extraction_rules.xml (Android 12+):

<data-extraction-rules>
    <cloud-backup>
        <exclude domain="sharedpref" path="vialink_sdk"/>
    </cloud-backup>
    <device-transfer>
        <exclude domain="sharedpref" path="vialink_sdk"/>
    </device-transfer>
</data-extraction-rules>

res/xml/backup_rules.xml (Android 11 and below):

<full-backup-content>
    <exclude domain="sharedpref" path="vialink_sdk.xml"/>
</full-backup-content>

Wire both files in AndroidManifest.xml:

<application
    android:allowBackup="true"
    android:dataExtractionRules="@xml/data_extraction_rules"
    android:fullBackupContent="@xml/backup_rules"
    ...>

Sample project

See the runnable sample app in the sample/ directory.

Documentation

License

Proprietary — © 2026 Aresjoy Inc. All rights reserved. Use is governed by the ViaLink Terms of Service. See LICENSE.

About

Android 딥링크·디퍼드 딥링크·어트리뷰션 SDK (Kotlin). 영업 통화·연간 계약 없이 무료로 시작. 카카오톡·네이버·LINE 인앱 브라우저 자동 탈출. Deep links & attribution without the sales call.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors