App Link: шта је то, принцип рада и подешавање

Аутор: IT Sectr Објављено: 2026-05-14 Време читања: 9 мин

App Link је механизам Android (Android 6.0+) који аутоматски отвара веб линкове у инсталираној апликацији, прескачући дијалог избора. Термин је увео Google 2015. године заједно са Android 6.0 Marshmallow. Према Android Developers, App Link користи Digital Asset Links — криптографску верификацију путем фајла на серверу, која потврђује да домен припада програмеру апликације.

Главно

  • App Link — HTTPS линк који аутоматски отвара апликацију без дијалога избора
  • Digital Asset Links — JSON фајл assetlinks.json на серверу који верификује везу домена са апликацијом
  • SHA256 отисак сертификата — кључни елемент верификације који повезује програмера са доменом
  • Intent Filter — Android компонента која декларише које линкове обрађује апликација
  • Безбедност — App Link елиминише дијалог „Отвори у апликацији или прегледачу", повећавајући конверзију

App Link (Android App Link) — стандардни HTTPS линк који при клику на Android уређају аутоматски отвара инсталирану апликацију без приказивања стандардног дијалога избора између прегледача и апликације. Google је представио App Link у Android 6.0 (API 23) као решење проблема „дијалога избора" који је смањивао конверзију deep link-а због додатног клика и забуне корисника.

Кључна иновација: верификација. Android проверава да ли домен заиста припада програмеру апликације путем Digital Asset Links API-ја. Google Play Store проверава App Link при објављивању и може одбити ажурирање ако верификација не успе. Ово чини App Link сигурнијим од Custom URL Scheme: ниједна друга апликација не може пресрести линк ка вашем домену.

Digital Asset Links — отворени протокол који Google користи не само за App Link, већ и за повезивање веб сајтова са апликацијама у резултатима претраге, Google Assistant-у и Smart Lock for Passwords-у. Протокол се заснива на криптографској верификацији: у assetlinks.json се наводи SHA256 отисак сертификата потписа апликације, што искључује фалсификовање.

Процес рада App Link-а састоји се од три фазе: верификација Digital Asset Links, обрада кроз Intent Filter и аутоматско преусмеравање. Свака фаза је обавезна. Ако верификација не успе, Android приказује дијалог избора — такав deep link ради као обичан, али без предности аутоматског преусмеравања.

Digital Asset Links (assetlinks.json)

Asset Links — JSON фајл постављен на серверу на адреси https://domen/.well-known/assetlinks.json. Фајл садржи низ објеката са пољима: relation (низ стрингова који описују тип везе), target (објекат са namespace и package_name апликације, као и sha256_cert_fingerprints — низ SHA256 отисака сертификата потписа).

json
// assetlinks.json — минимална конфигурација App Link-а
[{
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
        "namespace": "android_app",
        "package_name": "com.example.app",
        "sha256_cert_fingerprints": [
            "14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:AD:A4:C5:AD:6B:01:14:79:6B:CB:12:6B:21:39:6F:EA"
        ]
    }
}]

SHA256 отисак се добија из сертификата којим је потписана апликација. За debug компилацију користи се стандардни Android debug сертификат, за release — сертификат из Google Play Console или ваш сопствени. Важно: при промени сертификата потписа (нпр. при преласку на App Signing by Google Play) потребно је ажурирати assetlinks.json на серверу, иначе App Link престаје да ради.

Intent Filter и верификација

Android проверава App Link при првом клику на линк. Систем учитава assetlinks.json са сервера, упоређује package_name и SHA256 отисак са сертификатом инсталиране апликације. Ако се подаци поклапају, Android означава Intent Filter као верификован, и сви наредни линкови ка овом домену отварају се аутоматски, без дијалога.

xml
// AndroidManifest.xml — Intent Filter за App Link
<activity
    android:name=".ui.ProductActivity"
    android:exported="true">
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data
            android:scheme="https"
            android:host="example.com"
            android:pathPrefix="/product" />
    </intent-filter>
</activity>

autoVerify="true" — обавезни атрибут који налаже Android-у да провери assetlinks.json. Без овог атрибута Intent Filter неће бити верификован, а App Link неће бити активиран. Android подржава више Intent Filter-а у једној Activity — за различите хостова. Систем проверава сваки хост посебно. Верификација се извршава асинхроно и може трајати до 20 секунди при првом прелазу.

Аутоматско преусмеравање (Automatic Redirect)

Након успешне верификације, Android аутоматски отвара апликацију при клику на било који линк који одговара верификованом Intent Filter-у. Корисник не види дијалог избора — апликација се отвара тренутно. Ако апликација није инсталирана, линк се отвара у прегледачу (као обична веб страница). Ово је идеално корисничко искуство: беспрекорни прелаз без непотребних радњи.

Важно: аутоматско преусмеравање ради само за HTTPS шему. App Link не подржава HTTP (несигуран протокол). Ако корисник ручно отвори HTTP линк (нпр. из SMS-а), Android не врши верификацију и приказује дијалог избора. Препоручује се коришћење HTTPS-а за све линкове који воде ка апликацији и подешавање HTTP → HTTPS преусмеравања на серверу.

App Link је еволуција Deep Link-а на Android-у, а не замена. Разлика између њих је фундаментална. Обичан Deep Link (Custom URL Scheme) ради кроз Intent Filter са прилагођеном шемом (myapp://) и без autoVerify. Android не проверава да ли је апликација заиста повезана са овом шемом — било која апликација може регистровати myapp:// и пресретати линкове.

App Link решава три проблема Deep Link-а. Први: безбедност — верификација кроз Digital Asset Links искључује пресретање линкова. Други: корисничко искуство — одсуство дијалога избора повећава конверзију ка циљној радњи за 20–40%. Трећи: индексација — Google индексира HTTPS линкове App Link-а и може их приказати у резултатима претраге као линкове ка садржају унутар апликације.

Компатибилност: App Link ради на Android 6.0+ (99% уређаја). За Android 5.x (Lollipop) користи се обичан Deep Link са дијалогом избора. Због тога се препоручује подршка за оба механизма: App Link за модерне уређаје и Custom URL Scheme као fallback за старије верзије. Intent Filter са autoVerify="true" не квари уназад компатибилност — на Android < 6 атрибут се игнорише.

КарактеристикаDeep LinkApp Link
ШемаПрилагођена (myapp://)HTTPS (https://domen)
ВерификацијаНеassetlinks.json
Дијалог избораПриказује сеАутоматско преусмеравање
Android верзијаAPI 1+API 23+ (6.0+)
Google индексацијаНеДа (HTTPS URL)

Подешавање App Link-а захтева три корака: конфигурација Intent Filter-а у манифесту, постављање assetlinks.json на сервер и провера верификације. Први корак — додавање Intent Filter-а са android:autoVerify="true" у AndroidManifest.xml. Важно је навести HTTPS шему, хост и путање које апликација треба да обрађује. Путање могу садржати wildcard (*) за подфасцикле.

Други корак — креирање assetlinks.json. Фајл се може генерисати кроз Android Studio (Tools → App Links Assistant). Асистент такође помаже при отклањању грешака и тестирању. Фајл се поставља на сервер на путањи /.well-known/assetlinks.json. Сервер мора враћати Content-Type: application/json и бити доступан преко HTTPS-а без преусмеравања. Google Play Console такође приказује статус верификације App Link-а у одељку Publishing.

  1. Додати Intent Filter са android:autoVerify="true" у AndroidManifest.xml
  2. Добити SHA256 отисак сертификата (keytool или App Links Assistant)
  3. Креирати assetlinks.json са package_name и sha256_cert_fingerprints
  4. Поставити фајл на путању /.well-known/assetlinks.json на HTTPS серверу
  5. Проверити верификацију кроз adb: adb shell dumpsync domain_verification

Тестирање — трећи корак. Користите adb за проверу: команда adb shell am start -W -a android.intent.action.VIEW -d "https://example.com/product/42" отвара апликацију. Ако се уместо апликације отвори прегледач — проверите assetlinks.json и autoVerify. Android Studio App Links Assistant садржи уграђени тестер: приказује статус верификације за сваки домен и путању. За аутоматско тестирање користите Android Testing Library са Intent Matcher.

Карактеристике рада

Android 12 (API 31) је увео измене у обраду App Link-а. Додата је нова верификација специфична за домен: систем проверава сваки линк посебно, а не цео Intent Filter. То повећава безбедност, али захтева ажурирање фајла assetlinks.json при додавању нових путања. Android 12 је такође увео Android App Links Assistant у оквиру ADB-а — команде за управљање верификацијом кроз shell.

Више домена — типичан сценарио за продукцију. Апликација може обрађивати линкове са example.com, m.example.com и example.org. За сваки домен је потребан посебан assetlinks.json на одговарајућем серверу. У манифесту се додаје више Intent Filter-а — по један за сваки домен. Сви домени морају бити доступни преко HTTPS-а и проћи верификацију независно.

App Link и Jetpack Navigation — препоручени начин обраде App Link-а у модерним Android апликацијама. Jetpack Navigation подржава декларативне deep link-ове у nav_graph.xml или кроз NavDeepLinkRequest. То поједностављује навигацију: програмер описује који екран се отвара под одређеним URL-ом, а Navigation компонента сама обрађује Intent и враћа стек навигације. Google препоручује коришћење управо Jetpack Navigation-а за App Link.

kotlin
// Обрада App Link-а кроз Jetpack Navigation
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        handleDeepLink(intent)
    }

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

    private fun handleDeepLink(intent: Intent) {
        intent.data?.let { uri ->
            navController.handleDeepLink(NavDeepLinkRequest
                .Builder
                .fromUri(uri)
                .build()
            )
        }
    }
}

Google Play Store проверава App Link при објављивању. Ако је у манифесту наведен Intent Filter са autoVerify, али assetlinks.json није доступан или је неисправан, Google Play може одбити ажурирање са упозорењем. У конзоли програмера (Policy and Programs → App Links) приказује се статус верификације сваког домена. Пре објављивања обавезно проверите статус — исправка након одбијања ажурирања одлаже објављивање.

Често постављана питања

По чему се App Link разликује од Deep Link-а на Android-у?

App Link — Deep Link са верификацијом кроз Digital Asset Links. Главне разлике: App Link користи HTTPS шему уместо прилагођене, не приказује дијалог избора и индексира га Google. Обичан Deep Link ради на свим верзијама Android-а, али захтева ручни избор апликације.

Где поставити assetlinks.json?

Фајл се поставља у корен HTTPS сервера на путањи /.well-known/assetlinks.json. Сервер мора враћати Content-Type: application/json. Фајл је потребно ажурирати при промени сертификата потписа или додавању нових домена.

Зашто App Link не отвара апликацију аутоматски?

Главни разлози: недостаје android:autoVerify="true" у Intent Filter-у, assetlinks.json није доступан преко HTTPS-а, неисправан SHA256 отисак, другачији сертификат потписа (debug vs release). Проверите статус верификације кроз adb shell dumpsync domain_verification.

Може ли се App Link користити без сопственог домена?

Не — App Link захтева HTTPS сервер са доступним assetlinks.json. Ако немате домен, користите Firebase Hosting или GitHub Pages за хостовање фајла. Алтернатива: Custom URL Scheme (без верификације) или Firebase Dynamic Links.

Да ли App Link ради на Android 5?

Не — App Link је подржан на Android 6.0 (API 23) и новијим. На Android 5 Intent Filter са android:autoVerify="true" игнорише атрибут и ради као обичан Deep Link са дијалогом избора. Препоручује се подршка за оба механизма ради уназад компатибилности.

Закључак

  • App Link — еволуција Deep Link-а за Android: HTTPS линк са аутоматским преласком у апликацију
  • Digital Asset Links — криптографска верификација кроз assetlinks.json на серверу
  • SHA256 отисак сертификата потписа — кључни елемент који повезује програмера са доменом
  • android:autoVerify="true" — обавезни атрибут Intent Filter-а за активацију App Link-а
  • Безбедност — App Link искључује пресретање линкова од стране трећих апликација
  • Google Play Store проверава верификацију App Link-а при објављивању и одбија при грешкама
  • Jetpack Navigation — препоручени начин обраде App Link-а са декларативним deep link-овима

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође