App Link एक Android तंत्र (Android 6.0+) है जो इंस्टॉल किए गए ऐप में वेब लिंक को स्वचालित रूप से खोलता है, चयन संवाद को छोड़ते हुए। यह शब्द Google द्वारा 2015 में Android 6.0 Marshmallow के साथ पेश किया गया था। Android Developers के अनुसार, App Link Digital Asset Links का उपयोग करता है — सर्वर पर फ़ाइल के माध्यम से क्रिप्टोग्राफ़िक सत्यापन, यह पुष्टि करता है कि डोमेन ऐप डेवलपर का है।
मुख्य बिंदु
App Link (Android App Link) एक मानक HTTPS लिंक है, जिसे Android डिवाइस पर क्लिक करने पर, ब्राउज़र और ऐप के बीच मानक चयन संवाद दिखाए बिना इंस्टॉल किए गए ऐप को स्वचालित रूप से खोलता है। Google ने Android 6.0 (API 23) में “चयनकर्ता संवाद” समस्या के समाधान के रूप में App Link पेश किया, जो अतिरिक्त क्लिक और उपयोगकर्ता भ्रम के कारण 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 सामान्य रूप से काम करता है लेकिन स्वचालित संक्रमण के लाभ के बिना।
Asset Links एक JSON फ़ाइल है जो सर्वर पर https://domain/.well-known/assetlinks.json पते पर रखी जाती है। फ़ाइल में फ़ील्ड वाली वस्तुओं की एक सरणी होती है: relation (संबंध प्रकार का वर्णन करने वाली स्ट्रिंग्स की सरणी), target (ऐप के namespace और package_name के साथ-साथ sha256_cert_fingerprints वाली वस्तु — हस्ताक्षर प्रमाणपत्र की SHA256 फ़िंगरप्रिंट की सरणी)।
// 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 फ़िंगरप्रिंट उस प्रमाणपत्र से प्राप्त होती है जिससे ऐप पर हस्ताक्षर किया गया है। डीबग बिल्ड के लिए मानक Android डीबग प्रमाणपत्र का उपयोग किया जाता है, रिलीज़ बिल्ड के लिए — Google Play Console से प्रमाणपत्र या आपका अपना। महत्वपूर्ण: हस्ताक्षर प्रमाणपत्र बदलते समय (उदाहरण के लिए, App Signing by Google Play पर स्विच करते समय), सर्वर पर assetlinks.json को अपडेट करना आवश्यक है, अन्यथा App Link काम करना बंद कर देगा।
Android पहली बार लिंक पर क्लिक करने पर App Link की जाँच करता है। सिस्टम सर्वर से assetlinks.json डाउनलोड करता है, इंस्टॉल किए गए ऐप के प्रमाणपत्र के साथ package_name और SHA256 फ़िंगरप्रिंट की तुलना करता है। यदि डेटा मेल खाता है, तो Android Intent Filter को सत्यापित के रूप में चिह्नित करता है, और इस डोमेन के सभी बाद के लिंक स्वचालित रूप से, बिना संवाद के खुलते हैं।
// AndroidManifest.xml — App Link के लिए Intent Filter
<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 एक Activity में कई Intent Filter का समर्थन करता है — विभिन्न होस्ट के लिए। सिस्टम प्रत्येक होस्ट की अलग से जाँच करता है। सत्यापन अतुल्यकालिक रूप से किया जाता है और पहले क्लिक पर 20 सेकंड तक लग सकता है।
सफल सत्यापन के बाद, Android सत्यापित Intent Filter से मेल खाने वाले किसी भी लिंक पर क्लिक करने पर स्वचालित रूप से ऐप खोलता है। उपयोगकर्ता को चयन संवाद नहीं दिखता — ऐप तुरंत खुल जाता है। यदि ऐप इंस्टॉल नहीं है, तो लिंक ब्राउज़र में खुलता है (सामान्य वेब पेज की तरह)। यह आदर्श उपयोगकर्ता अनुभव है: अनावश्यक क्रियाओं के बिना सहज संक्रमण।
महत्वपूर्ण: स्वचालित पुनर्निर्देशन केवल https स्कीम के लिए काम करता है। App Link http (असुरक्षित प्रोटोकॉल) का समर्थन नहीं करता। यदि उपयोगकर्ता मैन्युअल रूप से http लिंक खोलता है (उदाहरण के लिए, SMS से), तो Android सत्यापन नहीं करता और चयन संवाद दिखाता है। ऐप की ओर जाने वाले सभी लिंक के लिए https का उपयोग करने और सर्वर पर HTTP → HTTPS रीडायरेक्ट कॉन्फ़िगर करने की अनुशंसा की जाती है।
App Link Android पर Deep Link का विकास है, प्रतिस्थापन नहीं। उनके बीच का अंतर मौलिक है। सामान्य Deep Link (Custom URL Scheme) कस्टम स्कीम (myapp://) के साथ और autoVerify के बिना Intent Filter के माध्यम से काम करता है। Android यह जाँच नहीं करता कि ऐप वास्तव में इस स्कीम से जुड़ा है या नहीं — कोई भी ऐप myapp:// पंजीकृत कर सकता है और लिंक इंटरसेप्ट कर सकता है।
App Link Deep Link की तीन समस्याओं को हल करता है। पहली: सुरक्षा — Digital Asset Links के माध्यम से सत्यापन लिंक इंटरसेप्शन को रोकता है। दूसरी: उपयोगकर्ता अनुभव — चयन संवाद की अनुपस्थिति लक्ष्य कार्रवाई में रूपांतरण को 20–40% तक बढ़ाती है। तीसरी: अनुक्रमण — Google https App Link URLs को अनुक्रमित करता है और उन्हें खोज परिणामों में ऐप के अंदर सामग्री के लिंक के रूप में दिखा सकता है।
संगतता: App Link Android 6.0+ (99% उपकरणों) पर काम करता है। Android 5.x (Lollipop) के लिए चयन संवाद के साथ सामान्य Deep Link का उपयोग किया जाता है। इसलिए दोनों तंत्रों का समर्थन करने की अनुशंसा की जाती है: आधुनिक उपकरणों के लिए App Link और पुराने संस्करणों के लिए फ़ॉलबैक के रूप में Custom URL Scheme। autoVerify="true" वाला Intent Filter पिछड़ी संगतता को नहीं तोड़ता — Android < 6 पर विशेषता को अनदेखा किया जाता है।
| विशेषता | Deep Link | App Link |
|---|---|---|
| स्कीम | कस्टम (myapp://) | HTTPS (https://domain) |
| सत्यापन | नहीं | assetlinks.json |
| चयन संवाद | दिखाया जाता है | स्वचालित पुनर्निर्देशन |
| Android संस्करण | API 1+ | API 23+ (6.0+) |
| Google अनुक्रमण | नहीं | हाँ (https URL) |
App Link का सेटअप तीन चरणों की आवश्यकता है: मेनिफ़ेस्ट में Intent Filter कॉन्फ़िगरेशन, सर्वर पर assetlinks.json रखना और सत्यापन की जाँच। पहला कदम AndroidManifest.xml में android:autoVerify="true" के साथ Intent Filter जोड़ना है। https स्कीम, होस्ट और उन पथों को निर्दिष्ट करना महत्वपूर्ण है जिन्हें ऐप को संभालना चाहिए। पथों में उपफ़ोल्डरों के लिए वाइल्डकार्ड (*) हो सकते हैं।
दूसरा कदम — assetlinks.json बनाना। फ़ाइल को Android Studio (Tools → App Links Assistant) के माध्यम से उत्पन्न किया जा सकता है। सहायक डिबगिंग और परीक्षण में भी मदद करता है। फ़ाइल सर्वर पर /.well-known/assetlinks.json पथ पर रखी जाती है। सर्वर को Content-Type: application/json लौटाना चाहिए और बिना रीडायरेक्ट के HTTPS के माध्यम से सुलभ होना चाहिए। Google Play Console भी Publishing अनुभाग में App Link सत्यापन स्थिति दिखाता है।
परीक्षण — तीसरा कदम। जाँच के लिए 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 में एक अंतर्निहित परीक्षक है: यह प्रत्येक डोमेन और पथ के लिए सत्यापन स्थिति दिखाता है। स्वचालित परीक्षण के लिए, Intent Matcher के साथ Android Testing Library का उपयोग करें।
Android 12 (API 31) ने App Link प्रसंस्करण में बदलाव किए। एक नया डोमेन-विशिष्ट सत्यापन जोड़ा गया: सिस्टम प्रत्येक लिंक की अलग से जाँच करता है, पूरे Intent Filter की नहीं। यह सुरक्षा बढ़ाता है, लेकिन नए पथ जोड़ते समय assetlinks.json फ़ाइल को अपडेट करने की आवश्यकता होती है। Android 12 ने ADB के साथ Android App Links Assistant भी पेश किया — shell के माध्यम से सत्यापन प्रबंधित करने के लिए कमांड।
कई डोमेन — उत्पादन के लिए एक विशिष्ट परिदृश्य। ऐप example.com, m.example.com और example.org से लिंक संभाल सकता है। प्रत्येक डोमेन के लिए संबंधित सर्वर पर एक अलग assetlinks.json की आवश्यकता होती है। मेनिफ़ेस्ट में कई Intent Filter जोड़े जाते हैं — प्रति डोमेन एक। सभी डोमेन HTTPS के माध्यम से सुलभ होने चाहिए और स्वतंत्र रूप से सत्यापन पास करना चाहिए।
App Link और Jetpack Navigation — आधुनिक Android ऐप में App Link संभालने का अनुशंसित तरीका। Jetpack Navigation nav_graph.xml में या NavDeepLinkRequest के माध्यम से घोषणात्मक deep link का समर्थन करता है। यह नेविगेशन को सरल बनाता है: डेवलपर वर्णन करता है कि किसी दिए गए URL के लिए कौन सी स्क्रीन खुलती है, और Navigation घटक स्वयं Intent को संभालता है और नेविगेशन स्टैक को पुनर्स्थापित करता है। Google App Link के लिए Jetpack Navigation का उपयोग करने की अनुशंसा करता है।
// Jetpack Navigation के माध्यम से App Link प्रसंस्करण
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 की जाँच करता है। यदि मेनिफ़ेस्ट में autoVerify के साथ Intent Filter है लेकिन assetlinks.json उपलब्ध नहीं है या गलत है, तो Google Play चेतावनी के साथ अपडेट को अस्वीकार कर सकता है। डेवलपर कंसोल (Policy and Programs → App Links) में प्रत्येक डोमेन की सत्यापन स्थिति प्रदर्शित होती है। प्रकाशन से पहले हमेशा स्थिति की जाँच करें — अपडेट अस्वीकृति के बाद इसे ठीक करने से रिलीज़ में देरी होती है।
अक्सर पूछे जाने वाले प्रश्न
App Link Digital Asset Links के माध्यम से सत्यापन वाला Deep Link है। मुख्य अंतर: App Link कस्टम के बजाय https स्कीम का उपयोग करता है, चयन संवाद नहीं दिखाता है और Google द्वारा अनुक्रमित किया जाता है। सामान्य Deep Link Android के सभी संस्करणों पर काम करता है, लेकिन मैन्युअल ऐप चयन की आवश्यकता होती है।
फ़ाइल HTTPS सर्वर की जड़ में /.well-known/assetlinks.json पथ पर रखी जाती है। सर्वर को Content-Type: application/json लौटाना चाहिए। हस्ताक्षर प्रमाणपत्र बदलने या नए डोमेन जोड़ने पर फ़ाइल को अपडेट करना चाहिए।
मुख्य कारण: Intent Filter में android:autoVerify="true" का अभाव, assetlinks.json HTTPS के माध्यम से उपलब्ध नहीं, गलत SHA256 फ़िंगरप्रिंट, अलग हस्ताक्षर प्रमाणपत्र (debug vs release)। adb shell dumpsync domain_verification के माध्यम से सत्यापन स्थिति की जाँच करें।
नहीं — App Link के लिए सुलभ assetlinks.json के साथ HTTPS सर्वर आवश्यक है। यदि आपके पास डोमेन नहीं है, तो फ़ाइल होस्ट करने के लिए Firebase Hosting या GitHub Pages का उपयोग करें। विकल्प: Custom URL Scheme (बिना सत्यापन के) या Firebase Dynamic Links।
नहीं — App Link Android 6.0 (API 23) और उससे ऊपर समर्थित है। Android 5 पर, android:autoVerify="true" वाला Intent Filter विशेषता को अनदेखा करता है और चयन संवाद के साथ सामान्य Deep Link के रूप में काम करता है। पिछड़ी संगतता के लिए दोनों तंत्रों का समर्थन करने की अनुशंसा की जाती है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें