Ang App Link ay isang mekanismo ng Android (Android 6.0+) na awtomatikong nagbubukas ng mga web link sa naka-install na app, na lumalampas sa dialog ng pagpili. Ang termino ay ipinakilala ng Google noong 2015 kasama ng Android 6.0 Marshmallow. Ayon sa Android Developers, gumagamit ang App Link ng Digital Asset Links — cryptographic na beripikasyon sa pamamagitan ng file sa server, na nagpapatunay na ang domain ay pag-aari ng developer ng app.
Mga Pangunahing Punto
App Link (Android App Link) — ay isang karaniwang HTTPS link na kapag na-click sa isang Android device ay awtomatikong nagbubukas ng naka-install na app nang hindi ipinapakita ang karaniwang dialog ng pagpili sa pagitan ng browser at app. Ipinakilala ng Google ang App Link sa Android 6.0 (API 23) bilang solusyon sa problema ng “dialog ng pagpili” na nagpapababa ng conversion ng deep link dahil sa karagdagang click at pagkalito ng user.
Pangunahing inobasyon: beripikasyon. Sinusuri ng Android kung ang domain ay talagang pag-aari ng developer ng app sa pamamagitan ng Digital Asset Links API. Sinusuri ng Google Play Store ang App Link sa pag-publish at maaaring tanggihan ang update kung nabigo ang beripikasyon. Ginagawa nitong mas ligtas ang App Link kaysa sa Custom URL Scheme: walang ibang app ang maaaring humarang sa link patungo sa iyong domain.
Digital Asset Links — ay isang bukas na protocol na ginagamit ng Google hindi lamang para sa App Link, kundi para din sa pag-uugnay ng mga website sa mga app sa mga resulta ng paghahanap, Google Assistant at Smart Lock for Passwords. Ang protocol ay batay sa cryptographic na beripikasyon: sa assetlinks.json ay tinukoy ang SHA256 fingerprint ng sertipiko ng pag-sign ng app, na hindi kasama ang pamemeke.
Ang proseso ng paggana ng App Link ay binubuo ng tatlong yugto: beripikasyon ng Digital Asset Links, pagproseso sa pamamagitan ng Intent Filter at awtomatikong pag-redirect. Bawat yugto ay sapilitan. Kung nabigo ang beripikasyon, ipinapakita ng Android ang dialog ng pagpili — ang naturang deep link ay gumagana tulad ng karaniwan, ngunit walang bentahe ng awtomatikong pag-redirect.
Asset Links — JSON file na inilalagay sa server sa address na https://domain/.well-known/assetlinks.json. Ang file ay naglalaman ng array ng mga object na may mga field: relation (array ng mga string na naglalarawan ng uri ng relasyon), target (object na may namespace at package_name ng app, pati na rin ang sha256_cert_fingerprints — array ng SHA256 fingerprints ng signing certificate).
// assetlinks.json — minimal na configuration ng 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 fingerprint ay nakuha mula sa sertipiko na ginamit upang lagdaan ang app. Para sa debug build, ginagamit ang karaniwang Android debug certificate, para sa release — certificate mula sa Google Play Console o iyong sariling certificate. Mahalaga: kapag binago ang signing certificate (halimbawa, kapag lumipat sa App Signing by Google Play), dapat i-update ang assetlinks.json sa server, kung hindi ay hihinto sa paggana ang App Link.
Android sinusuri ang App Link sa unang pag-click sa isang link. Ina-load ng system ang assetlinks.json mula sa server, ikinukumpara ang package_name at SHA256 fingerprint sa certificate ng naka-install na app. Kung magkatugma ang data, minamarkahan ng Android ang Intent Filter bilang beripikado, at lahat ng kasunod na link sa domain na ito ay awtomatikong nagbubukas, nang walang dialog.
// AndroidManifest.xml — Intent Filter para sa 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" — ang sapilitang attribute na nag-uutos sa Android na suriin ang assetlinks.json. Kung wala ang attribute na ito, hindi ma-beripika ang Intent Filter at hindi maa-activate ang App Link. Sinusuportahan ng Android ang maramihang Intent Filter sa isang Activity — para sa iba't ibang host. Sinusuri ng system ang bawat host nang hiwalay. Ang beripikasyon ay isinasagawa nang asynchronously at maaaring tumagal ng hanggang 20 segundo sa unang paglipat.
Pagkatapos ng matagumpay na beripikasyon, awtomatikong binubuksan ng Android ang app kapag nag-click sa anumang link na tumutugma sa beripikadong Intent Filter. Hindi nakikita ng user ang dialog ng pagpili — agad na nagbubukas ang app. Kung hindi naka-install ang app, bubukas ang link sa browser (tulad ng isang ordinaryong web page). Ito ang perpektong karanasan ng user: walang hadlang na paglipat nang walang hindi kinakailangang mga aksyon.
Mahalaga: ang awtomatikong pag-redirect ay gumagana lamang para sa HTTPS scheme. Hindi sinusuportahan ng App Link ang HTTP (hindi secure na protocol). Kung manu-manong bubuksan ng user ang isang HTTP link (halimbawa, mula sa SMS), hindi nagsasagawa ng beripikasyon ang Android at ipinapakita ang dialog ng pagpili. Inirerekomenda na gamitin ang HTTPS para sa lahat ng link na patungo sa app at i-configure ang HTTP → HTTPS redirect sa server.
Ang App Link ay ebolusyon ng Deep Link sa Android, hindi kapalit. Ang pagkakaiba sa pagitan ng mga ito ay pundamental. Karaniwang Deep Link (Custom URL Scheme) ay gumagana sa pamamagitan ng Intent Filter na may custom na scheme (myapp://) at walang autoVerify. Hindi sinusuri ng Android kung ang app ay talagang nauugnay sa scheme na ito — anumang app ay maaaring magrehistro ng myapp:// at humarang ng mga link.
App Link ay lumulutas ng tatlong problema ng Deep Link. Una: seguridad — ang beripikasyon sa pamamagitan ng Digital Asset Links ay hindi kasama ang pagharang ng mga link. Pangalawa: karanasan ng user — ang kawalan ng dialog ng pagpili ay nagpapataas ng conversion sa target na aksyon ng 20–40%. Pangatlo: pag-index — ini-index ng Google ang HTTPS links ng App Link at maaaring ipakita ang mga ito sa mga resulta ng paghahanap bilang mga link sa nilalaman sa loob ng app.
Pagkakatugma: Gumagana ang App Link sa Android 6.0+ (99% ng mga device). Para sa Android 5.x (Lollipop) ginagamit ang karaniwang Deep Link na may dialog ng pagpili. Kaya inirerekomenda na suportahan ang parehong mekanismo: App Link para sa mga modernong device at Custom URL Scheme bilang fallback para sa mas lumang bersyon. Ang Intent Filter na may autoVerify="true" ay hindi sumisira ng backward compatibility — sa Android < 6 ang attribute ay binabalewala.
| Katangian | Deep Link | App Link |
|---|---|---|
| Scheme | Custom (myapp://) | HTTPS (https://domain) |
| Beripikasyon | Wala | assetlinks.json |
| Dialog ng pagpili | Ipinapakita | Awtomatikong pag-redirect |
| Bersyon ng Android | API 1+ | API 23+ (6.0+) |
| Pag-index ng Google | Wala | Oo (HTTPS URL) |
Pag-setup ng App Link ay nangangailangan ng tatlong hakbang: configuration ng Intent Filter sa manifest, paglalagay ng assetlinks.json sa server at pagsusuri ng beripikasyon. Unang hakbang — magdagdag ng Intent Filter na may android:autoVerify="true" sa AndroidManifest.xml. Mahalagang tukuyin ang HTTPS scheme, host at mga path na dapat iproseso ng app. Ang mga path ay maaaring maglaman ng wildcard (*) para sa mga subfolder.
Ikalawang hakbang — paggawa ng assetlinks.json. Ang file ay maaaring mabuo sa pamamagitan ng Android Studio (Tools → App Links Assistant). Ang assistant ay tumutulong din sa debugging at pagsubok. Ang file ay inilalagay sa server sa path na /.well-known/assetlinks.json. Ang server ay dapat magbalik ng Content-Type: application/json at ma-access sa pamamagitan ng HTTPS nang walang mga redirect. Ipinapakita rin ng Google Play Console ang status ng beripikasyon ng App Link sa seksyong Publishing.
Pagsubok — ikatlong hakbang. Gamitin ang adb para sa pagsusuri: ang command na adb shell am start -W -a android.intent.action.VIEW -d "https://example.com/product/42" ay nagbubukas ng app. Kung sa halip na app ay bumukas ang browser — suriin ang assetlinks.json at autoVerify. Ang Android Studio App Links Assistant ay naglalaman ng built-in tester: ipinapakita nito ang status ng beripikasyon para sa bawat domain at path. Para sa awtomatikong pagsubok, gamitin ang Android Testing Library na may Intent Matcher.
Android 12 (API 31) ay nagdala ng mga pagbabago sa pagproseso ng App Link. Isang bagong domain-specific na beripikasyon ang idinagdag: sinusuri ng system ang bawat link nang hiwalay, hindi ang buong Intent Filter. Pinapataas nito ang seguridad, ngunit nangangailangan ng pag-update ng file na assetlinks.json kapag nagdaragdag ng mga bagong path. Ipinakilala rin ng Android 12 ang Android App Links Assistant kasama ng ADB — mga command para sa pamamahala ng beripikasyon sa pamamagitan ng shell.
Maramihang domain — tipikal na sitwasyon para sa produksyon. Maaaring iproseso ng app ang mga link mula sa example.com, m.example.com at example.org. Para sa bawat domain kailangan ng hiwalay na assetlinks.json sa kaukulang server. Sa manifest ay idinaragdag ang maramihang Intent Filter — isa bawat domain. Lahat ng domain ay dapat ma-access sa pamamagitan ng HTTPS at pumasa sa beripikasyon nang nakapag-iisa.
App Link at Jetpack Navigation — ang inirerekomendang paraan ng pagproseso ng App Link sa modernong Android apps. Sinusuportahan ng Jetpack Navigation ang mga declarative deep link sa nav_graph.xml o sa pamamagitan ng NavDeepLinkRequest. Pinapasimple nito ang nabigasyon: inilalarawan ng developer kung aling screen ang bubukas sa ilalim ng isang partikular na URL, at ang Navigation component mismo ang nagpoproseso ng Intent at nagpapanumbalik ng navigation stack. Inirerekomenda ng Google ang paggamit ng Jetpack Navigation para sa App Link.
// Pagproseso ng App Link sa pamamagitan ng 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 sinusuri ang App Link sa pag-publish. Kung sa manifest ay tinukoy ang Intent Filter na may autoVerify, ngunit ang assetlinks.json ay hindi ma-access o hindi tama, maaaring tanggihan ng Google Play ang update na may babala. Sa console ng developer (Policy and Programs → App Links) ay ipinapakita ang status ng beripikasyon ng bawat domain. Bago mag-publish, siguraduhing suriin ang status — ang pag-aayos pagkatapos ng pagtanggi ng update ay naaantala ang release.
Mga Madalas Itanong
App Link — ay isang Deep Link na may beripikasyon sa pamamagitan ng Digital Asset Links. Pangunahing pagkakaiba: gumagamit ang App Link ng HTTPS scheme sa halip na custom scheme, hindi nagpapakita ng dialog ng pagpili at ini-index ng Google. Ang karaniwang Deep Link ay gumagana sa lahat ng bersyon ng Android, ngunit nangangailangan ng manu-manong pagpili ng app.
Ang file ay inilalagay sa root ng HTTPS server sa path na /.well-known/assetlinks.json. Ang server ay dapat magbalik ng Content-Type: application/json. Ang file ay dapat i-update kapag binago ang signing certificate o nagdagdag ng mga bagong domain.
Pangunahing dahilan: walang android:autoVerify="true" sa Intent Filter, hindi accessible ang assetlinks.json sa pamamagitan ng HTTPS, maling SHA256 fingerprint, ibang signing certificate (debug vs release). Suriin ang status ng beripikasyon sa pamamagitan ng adb shell dumpsync domain_verification.
Hindi — ang App Link ay nangangailangan ng HTTPS server na may accessible na assetlinks.json. Kung wala kang domain, gumamit ng Firebase Hosting o GitHub Pages para sa pagho-host ng file. Alternatibo: Custom URL Scheme (walang beripikasyon) o Firebase Dynamic Links.
Hindi — ang App Link ay sinusuportahan sa Android 6.0 (API 23) at mas bago. Sa Android 5, binabalewala ng Intent Filter na may android:autoVerify="true" ang attribute at gumagana bilang karaniwang Deep Link na may dialog ng pagpili. Inirerekomenda na suportahan ang parehong mekanismo para sa backward compatibility.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din