iOS और Android पर Universal Links (HTTPS Deep Links)
अपने वेब सर्वर पर Apple App Site Association और Android App Links फ़ाइलें सेट अप करें, ऐप में entitlements और intent filters कॉन्फ़िगर करें और शुरू से अंत तक डीप लिंकिंग का सत्यापन करें।
iOS और Android पर Universal Links (HTTPS Deep Links), CoddyKit पर React Native Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह React Native Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। React Native Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
कस्टम स्कीम की बजाय यूनिवर्सल लिंक क्यों
यूनिवर्सल लिंक आपके ऐप को खोलने के लिए वास्तविक HTTPS URL का उपयोग करते हैं। जब उपयोगकर्ता https://myapp.com/profile/123 पर टैप करता है, तो iOS या Android जाँचता है कि आपका ऐप इंस्टॉल है और उस URL डोमेन को संभाल सकता है या नहीं। यदि हाँ, तो वह सीधे आपका ऐप खोलता है—अन्यथा ब्राउज़र में वेबसाइट पर चला जाता है।
इससे कस्टम स्कीम की दो समस्याएँ हल होती हैं: (1) फ़ॉलबैक—यदि आपका ऐप इंस्टॉल नहीं है, तो उपयोगकर्ता को फिर भी काम करने वाला वेब पेज दिखाई देता है; (2) सुरक्षा—केवल आपका ऐप ही आपके डोमेन का दावा कर सकता है, क्योंकि OS सर्वर पर होस्ट की गई फ़ाइलों के माध्यम से स्वामित्व सत्यापित करता है।
यूनिवर्सल लिंक कैसे काम करते हैं
आपके ऐप के इंस्टॉल होने पर iOS और Android, दोनों आपके सर्वर से एक सत्यापन फ़ाइल डाउनलोड करते हैं, ताकि पुष्टि की जा सके कि आपके ऐप को आपके डोमेन के URL संभालने की अनुमति है। यह सत्यापन इंस्टॉल के समय एक बार होता है और उसके बाद समय-समय पर दोहराया जाता है। फ़ाइलें आपके HTTPS डोमेन के सुविख्यात URL पर उपलब्ध कराई जाती हैं।
जब उपयोगकर्ता आपके डोमेन के HTTPS लिंक पर टैप करता है, तो OS अपने कैश किए गए सत्यापन की जाँच करता है और Safari/Chrome की बजाय आपके ऐप पर भेजता है—न ब्राउज़र, न रीडायरेक्ट, तुरंत ऐप के अंदर नेविगेशन।
// iOS: https://myapp.com/.well-known/apple-app-site-association
// Android: https://myapp.com/.well-known/assetlinks.json
// Both files must be:
// - Served over HTTPS
// - Accessible without redirects
// - Correct Content-Type
// - Cached but refreshableApple App Site Association (AASA) फ़ाइल
Apple App Site Association फ़ाइल (AASA), https://yourdomain.com/.well-known/apple-app-site-association पर होस्ट की गई JSON फ़ाइल होती है। यह निर्दिष्ट करती है कि आपके डोमेन के कौन से पाथ ऐप में खुलने चाहिए और कौन से Safari में। appIDs फ़ील्ड में आपका Team ID + Bundle ID होता है।
पाथ वाइल्डकार्ड का उपयोग करते हैं: /profile/* किसी भी प्रोफ़ाइल URL से मेल खाता है। NOT प्रीफ़िक्स से पाथ को बाहर रखा जा सकता है। अच्छी तरह कॉन्फ़िगर किया गया AASA विशिष्ट होता है—इसमें केवल वही डीप-लिंक पाथ सूचीबद्ध होने चाहिए जो वास्तव में आपके ऐप में मौजूद हों।
// https://myapp.com/.well-known/apple-app-site-association
{
'applinks': {
'apps': [],
'details': [
{
'appIDs': ['TEAMID1234.com.example.myapp'],
'components': [
{ '/': '/profile/*' },
{ '/': '/product/*' },
{ '/': '/settings' },
{ '/': '/order/*' },
{ '/': '/404', 'exclude': true }
]
}
]
}
}Android App Links: assetlinks.json
Android, https://yourdomain.com/.well-known/assetlinks.json के माध्यम से सत्यापित Digital Asset Links का उपयोग करता है। इस फ़ाइल में आपके ऐप का पैकेज नाम और आपके साइनिंग प्रमाणपत्र का SHA256 फ़िंगरप्रिंट सूचीबद्ध होता है। स्वामित्व सत्यापित करने के लिए Android इंस्टॉल के समय इस फ़ाइल को डाउनलोड करके कैश करता है।
SHA256 फ़िंगरप्रिंट आपके कीस्टोर से keytool कमांड का उपयोग करके प्राप्त किया जा सकता है। Expo/EAS Build में फ़िंगरप्रिंट बिल्ड आउटपुट में दिखता है। फ़िंगरप्रिंट आपके साइनिंग प्रमाणपत्र के लिए विशिष्ट होता है—डीबग और रिलीज़ बिल्ड के फ़िंगरप्रिंट अलग-अलग होते हैं।
// https://myapp.com/.well-known/assetlinks.json
[
{
'relation': ['delegate_permission/common.handle_all_urls'],
'target': {
'namespace': 'android_app',
'package_name': 'com.example.myapp',
'sha256_cert_fingerprints': [
'AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99'
]
}
}
]iOS एंटाइटलमेंट कॉन्फ़िगर करना
AASA फ़ाइल के अतिरिक्त, आपके iOS ऐप को Associated Domains एंटाइटलमेंट घोषित करना होगा। Expo managed workflow में app.json के expo.ios के अंतर्गत associatedDomains कुंजी जोड़ें। इसका प्रारूप applinks:yourdomain.com है।
इसे जोड़ने के बाद EAS Build से नेटिव ऐप का फिर से बिल्ड करें। एंटाइटलमेंट ऐप के साइनिंग प्रोफ़ाइल में शामिल हो जाता है। एंटाइटलमेंट के बिना, AASA फ़ाइल सही ढंग से होस्ट होने पर भी iOS उसे सत्यापित करने का प्रयास नहीं करेगा।
// app.json
{
'expo': {
'ios': {
'bundleIdentifier': 'com.example.myapp',
'associatedDomains': [
'applinks:myapp.com',
'applinks:www.myapp.com'
]
}
}
}Android Intent फ़िल्टर कॉन्फ़िगर करना
App Links के लिए Android को AndroidManifest.xml में एक intent-filter की आवश्यकता होती है। Expo managed workflow में, app.json के expo.android के अंतर्गत intentFilters कुंजी यह कॉन्फ़िगरेशन जोड़ती है। autoVerify: true फ़्लैग App Links सत्यापन प्रक्रिया को सक्षम करता है।
intent-filter स्कीम को https, होस्ट को आपके डोमेन और मिलान किए जाने वाले पाथ पैटर्न के रूप में घोषित करता है। इंस्टॉल के समय Android स्वामित्व सत्यापित करने के लिए assetlinks.json फ़ाइल डाउनलोड करता है।
// app.json
{
'expo': {
'android': {
'package': 'com.example.myapp',
'intentFilters': [
{
'action': 'VIEW',
'autoVerify': true,
'data': [
{ 'scheme': 'https', 'host': 'myapp.com' },
{ 'scheme': 'https', 'host': 'www.myapp.com' }
],
'category': ['BROWSABLE', 'DEFAULT']
}
]
}
}
}सत्यापन फ़ाइलों की होस्टिंग आवश्यकताएँ
दोनों सत्यापन फ़ाइलों की होस्टिंग से जुड़ी कड़ी आवश्यकताएँ हैं। इनके पूरा न होने पर त्रुटियाँ बिना किसी सूचना के हो सकती हैं:
- HTTPS पर उपलब्ध होनी चाहिए (HTTP पर नहीं)
- 200 स्थिति लौटानी चाहिए (301 रीडायरेक्ट नहीं)
- इनका सही Content-Type होना चाहिए: दोनों के लिए
application/json - प्रमाणीकरण के बिना सुलभ होनी चाहिए—लॉगिन आवश्यक नहीं होना चाहिए
- मान्य TLS प्रमाणपत्र का उपयोग करना चाहिए (स्व-हस्ताक्षरित नहीं)
सत्यापित करने के लिए curl से परीक्षण करें: curl -I https://myapp.com/.well-known/apple-app-site-association
# Verify AASA is accessible:
curl -I https://myapp.com/.well-known/apple-app-site-association
# Expect: HTTP/2 200, content-type: application/json
# Verify assetlinks:
curl -I https://myapp.com/.well-known/assetlinks.json
# Expect: HTTP/2 200, content-type: application/json
# Verify content:
curl https://myapp.com/.well-known/assetlinks.jsonReact Navigation में यूनिवर्सल लिंक जोड़ना
अपनी React Navigation linking config की prefixes सरणी में कस्टम स्कीम के साथ अपना HTTPS डोमेन भी जोड़ें। इससे नेविगेशन लाइब्रेरी अतिरिक्त रूटिंग तर्क के बिना उसी स्क्रीन मानचित्र से दोनों प्रकार के URL संभाल सकती है।
स्क्रीन पाथ पैटर्न साझा होते हैं—प्रीफ़िक्स के बाद का वही पाथ उसी स्क्रीन से मैप होता है, चाहे लिंक कस्टम स्कीम से आया हो या HTTPS यूनिवर्सल लिंक से।
import * as ExpoLinking from 'expo-linking';
const linking = {
prefixes: [
ExpoLinking.createURL('/'), // Expo Go + production custom scheme
'https://myapp.com', // Universal links
'https://www.myapp.com',
],
config: {
screens: {
Home: '',
Profile: 'profile/:userId',
Product: 'product/:productId',
},
},
};यूनिवर्सल लिंक की डीबगिंग
यूनिवर्सल लिंक की समस्याओं को कस्टम स्कीम की समस्याओं की तुलना में डीबग करना कठिन होता है, क्योंकि इंस्टॉल के समय OS द्वारा सत्यापन किया जाता है। सामान्य समस्याएँ और उनके समाधान:
- iOS: लिंक ऐप के बजाय Safari में खुलता है — AASA फ़ाइल नहीं मिली, उसका प्रारूप गलत है, या Associated Domains एंटाइटलमेंट मौजूद नहीं है। सुधार करने के बाद ऐप को फिर से इंस्टॉल करें।
- Android: लिंक Chrome में खुलता है — assetlinks.json में फ़िंगरप्रिंट गलत है या autoVerify सेट नहीं है।
adbसत्यापन कमांड से जाँच करें। - दोनों: होस्ट बदलने के बाद — OS फ़ाइल को कैश कर लेता है; दोबारा सत्यापन कराने के लिए ऐप को अनइंस्टॉल करके फिर से इंस्टॉल करें।
# Verify Android App Links:
adb shell pm get-app-link com.example.myapp
# Expected: verified
# Re-verify on device:
adb shell pm verify-app-links com.example.myapp
# iOS: check in Settings > Privacy > Universal Links
# or use Apple's AASA validator:
# https://branch.io/resources/aasa-validator/वैकल्पिक वेब पृष्ठ
यूनिवर्सल लिंक की शक्ति उनके स्वचालित वैकल्पिक व्यवहार में है। जब आपका ऐप इंस्टॉल नहीं होता, तो https://myapp.com/profile/123 पर टैप करने से ब्राउज़र में आपकी वेबसाइट खुल जाती है। आपकी वेबसाइट को इन पथों को संभालना चाहिए और या तो सामग्री सीधे दिखानी चाहिए या ऐप डाउनलोड करने का संकेत दिखाना चाहिए।
अपने वेब पृष्ठों पर स्मार्ट बैनर लागू करें (iOS पर <meta name='apple-itunes-app' content='app-id=...'>, या Android पर Google Play इंस्टेंट ऐप), ताकि उपयोगकर्ताओं को ऐप डाउनलोड करने के लिए कहा जा सके। इससे इंस्टॉल करने और फिर ऐप दोबारा खोलने की प्रक्रिया सहज बनती है।
<!-- In your web page <head>: -->
<!-- iOS Smart Banner -->
<meta
name='apple-itunes-app'
content='app-id=123456789, app-argument=https://myapp.com/profile/123'
/>
<!-- Google Play referrer -->
<a href='https://play.google.com/store/apps/details?id=com.example.myapp&referrer=utm_source%3Dwebsite'>
Get it on Google Play
</a>यूनिवर्सल लिंक का शुरू से अंत तक परीक्षण
यूनिवर्सल लिंक के शुरू से अंत तक परीक्षण के लिए प्रोडक्शन या TestFlight/आंतरिक परीक्षण बिल्ड आवश्यक हैं — Expo Go नहीं। स्वयं को HTTPS लिंक वाला ईमेल या Slack संदेश भेजकर वास्तविक डिवाइस पर उस पर टैप करके परीक्षण करें। OS आपके ऐप पर तभी भेजेगा, जब एंटाइटलमेंट और सर्वर फ़ाइल दोनों सही ढंग से कॉन्फ़िगर किए गए हों।
स्वचालित परीक्षण के लिए एक जाँच-सूची बनाएँ: AASA सुलभ हो, Team ID सही हो, पथ सही हों, एंटाइटलमेंट में Associated Domains हो, Android फ़िंगरप्रिंट रिलीज़ कीस्टोर से मेल खाता हो, मैनिफ़ेस्ट में autoVerify हो और HTTPS प्रमाणपत्र मान्य हो। सबमिशन से पहले हर आइटम जाँचें।
// End-to-end test checklist:
// 1. curl AASA: HTTP 200, content-type: application/json
// 2. curl assetlinks.json: HTTP 200, correct fingerprint
// 3. EAS Build production: associatedDomains in entitlement
// 4. Android: adb shell pm get-app-link shows 'verified'
// 5. iOS: open https://myapp.com/profile/test in Notes app
// → should open app, not Safari
// 6. Android: open URL in any browser
// → disambiguation dialog or direct openत्वरित जाँच
इस पाठ में React Native मोबाइल डेवलपमेंट की अवधारणाओं की अपनी समझ का परीक्षण करें।
पाठ का पुनरावलोकन
इस पाठ में आपने सीखा: यूनिवर्सल लिंक HTTPS URL और सर्वर-पक्ष की सत्यापन फ़ाइलों (iOS के लिए AASA, Android के लिए assetlinks.json) का उपयोग करके लिंक को सुरक्षित रूप से आपके ऐप तक पहुँचाते हैं, iOS के लिए ऐप में Associated Domains एंटाइटलमेंट और Android के लिए autoVerify वाले intent-filter की आवश्यकता होती है, और ऐप इंस्टॉल न होने पर यूनिवर्सल लिंक सहज वेब विकल्प उपलब्ध कराते हैं। अब हम expo-notifications के साथ पुश टोकन के लिए पंजीकरण करके पुश सूचनाएँ जोड़ेंगे।
एआई शिक्षक के साथ JavaScript सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “iOS और Android पर Universal Links (HTTPS Deep Links)” पाठ निःशुल्क है?
हाँ — React Native Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “iOS और Android पर Universal Links (HTTPS Deep Links)” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। React Native Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“iOS और Android पर Universal Links (HTTPS Deep Links)” में मैं क्या सीखूँगा?
अपने वेब सर्वर पर Apple App Site Association और Android App Links फ़ाइलें सेट अप करें, ऐप में entitlements और intent filters कॉन्फ़िगर करें और शुरू से अंत तक डीप लिंकिंग का सत्यापन करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ React Native Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या React Native Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर React Native Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“iOS और Android पर Universal Links (HTTPS Deep Links)” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस React Native Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर React Native Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- कस्टम URL स्कीम कॉन्फ़िगर करना
- Linking API और URL पार्स करना
- React Navigation डीप लिंक कॉन्फ़िगरेशन
- iOS और Android पर Universal Links (HTTPS Deep Links)