मुफ़्त APK बनाएँ

ऐप शेल और नेविगेशन

डीप लिंकिंग

URL और नोटिफ़िकेशन से खास पेज खोलें

1डीप लिंकिंग क्या है?#

डीप लिंकिंग से बाहरी स्रोत (ब्राउज़र, SMS, ईमेल, सोशल मीडिया, पुश नोटिफ़िकेशन, QR कोड) आपके ऐप को होमपेज की जगह सीधे किसी खास पेज पर खोल सकते हैं।

आपका ऐप दो तरह के लिंक सपोर्ट करता है, और दोनों बराबर आसान नहीं हैं:

  1. ⚡ कस्टम स्कीम (myapp://path) - तुरंत काम करती है, कुछ सेट अप करने की ज़रूरत नहीं। पुश नोटिफ़िकेशन और QR कोड के लिए सबसे अच्छी।
  1. 🌐 https:// लिंक (https://mysite.com/page) - आपकी वेबसाइट पर एक फ़ाइल अपलोड करनी होती है। इसके बिना Android लिंक को ब्राउज़र में ही रखता है और आपका ऐप कभी नहीं खुलता। डीप लिंक के 'काम न करने' का यह सबसे आम कारण है।

दोनों नीचे समझाए गए हैं। अगर आपको आज ही कुछ चलता हुआ चाहिए, तो कस्टम स्कीम इस्तेमाल करें।

2कस्टम स्कीम URL कैसे काम करते हैं#

जब कस्टम स्कीम लिंक पर टैप होता है (जैसे myapp://products/shoes), तो ऐप:

  1. कस्टम स्कीम URL पाता है
  2. उसे अपने आप आपके वेबसाइट URL से जोड़ देता है
  3. WebView को सही पेज पर खोलता है

✅ स्कीम आपके ऐप के नाम से बनती है (छोटे अक्षर, सिर्फ़ अक्षर)।

✅ मैपिंग का उदाहरण:
myapp://products/shoes
→ https://mysite.com/products/shoes

स्कीम के बाद के पाथ हिस्से सुरक्षित रखे जाते हैं और आपके वेबसाइट डोमेन में जोड़ दिए जाते हैं।

Custom scheme format:
  <appname>://<path>

Examples:
  myshop://cart
  → https://myshop.com/cart

  puma://in/en/help
  → https://in.puma.com/in/en/help

यही वह हिस्सा है जो लोग छोड़ देते हैं, इसलिए टेस्ट करने से पहले इसे पढ़ लें।

AppMint आपका डोमेन ऐप में अपने आप डाल देता है। लेकिन जब तक आपकी वेबसाइट यह साबित नहीं करती कि ऐप आपका है, तब तक Android https:// लिंक से आपका ऐप नहीं खोलेगा। Android 12 और नए पर बिना सबूत वाला लिंक सीधे ब्राउज़र खोल देता है - न कोई डायलॉग, न कोई विकल्प। इसीलिए लिंक 'कुछ नहीं करता' जैसा लग सकता है।

सबूत एक छोटी सी फ़ाइल है। AppMint ने उसे आपके लिए पहले ही बना दिया है: बिल्ड के बाद Downloads में assetlinks.json देखें। उसमें आपका पैकेज नाम और आपके ऐप का साइनिंग फ़िंगरप्रिंट होता है।

इसे अपनी वेबसाइट पर ठीक इसी पते पर अपलोड करें (फ़ोल्डर का नाम बिंदु से शुरू होता है):

https://yoursite.com/.well-known/assetlinks.json

Rules — all four must be true:
  1. Served over https (not http)
  2. Content-Type: application/json
  3. NO redirect (a redirect to www breaks it)
  4. Reachable publicly — no login, no Cloudflare challenge

Check it from any computer:
  curl -i https://yoursite.com/.well-known/assetlinks.json

4Google Play पर प्रकाशित कर रहे हैं? Play का फ़िंगरप्रिंट इस्तेमाल करें#

Google Play आपके ऐप को अपनी कुंजी से दोबारा साइन करता है। इसलिए AppMint की बनाई assetlinks.json का फ़िंगरप्रिंट - जो आपकी लोकल कुंजी का है - उससे मेल नहीं खाएगा जो यूज़र असल में Play से इंस्टॉल करते हैं।

अगर आप Play पर प्रकाशित करते हैं, तो फ़िंगरप्रिंट बदलें:

  1. Play Console → आपका ऐप → Test and release → Setup → App integrity
  2. 'App signing key certificate' से SHA-256 कॉपी करें
  3. वह वैल्यू assetlinks.json में डालें और उसे दोबारा अपलोड करें

आप दोनों फ़िंगरप्रिंट एक ही फ़ाइल में लिख सकते हैं - लोकल वाला सीधे बाँटे गए APK के लिए, और Play वाला Play से हुए इंस्टॉल के लिए। इस तरह दोनों काम करते हैं।

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.yourapp.name",
    "sha256_cert_fingerprints": [
      "AA:BB:...",   // your local key (direct APK)
      "11:22:..."    // Play App Signing key
    ]
  }
}]

5जाँचें कि Android ने इसे मान लिया या नहीं#

फ़ाइल अपलोड करने के बाद ऐप को दोबारा इंस्टॉल करें (Android सिर्फ़ इंस्टॉल के समय जाँचता है, और इसमें एक मिनट लग सकता है)।

नीचे की कमांड आपको सच बताती है। अपने डोमेन के आगे 'verified' देखें। अगर 'legacy_failure' लिखा है या डोमेन ही नहीं है, तो फ़ाइल ठीक से पढ़ी नहीं जा रही - वापस जाकर चारों नियम जाँचें।

# Does Android consider your domain verified?
adb shell pm get-app-links com.yourapp.name

# Force a re-check without reinstalling (Android 12+):
adb shell pm verify-app-links --re-verify com.yourapp.name

# Google's own checker (open in a browser):
https://digitalassetlinks.googleapis.com/v1/statements:list?
  source.web.site=https://yoursite.com&
  relation=delegate_permission/common.handle_all_urls

6यह अक्सर क्यों विफल होता है#

हर कारण कितनी बार होता है, उस क्रम में:

  1. फ़ाइल अपलोड नहीं हुई है, या गलत पाथ पर है। यह /.well-known/assetlinks.json पर होनी चाहिए - बिंदु के साथ।
  1. www बनाम बिना-www। Android https://example.com और https://www.example.com को अलग-अलग डोमेन मानता है। AppMint आपके वेबसाइट URL का सटीक होस्ट रजिस्टर करता है। अगर आप दोनों इस्तेमाल करते हैं, तो फ़ाइल दोनों पर रखें, और हमें बताएँ कि आपने कौन सा होस्ट डाला था।
  1. रीडायरेक्ट। कई होस्ट एपेक्स डोमेन को www पर रीडायरेक्ट करते हैं। इससे वेरिफ़िकेशन टूट जाता है, भले ही फ़ाइल ब्राउज़र में लोड हो जाए।
  1. Play पर प्रकाशित है लेकिन लोकल फ़िंगरप्रिंट इस्तेमाल हो रहा है - पिछला चरण देखें।
  1. अपलोड के बाद दोबारा इंस्टॉल नहीं किया। Android इंस्टॉल के समय जाँचता है।

कस्टम स्कीम लिंक (myapp://...) को इनमें से किसी की ज़रूरत नहीं और वे हमेशा काम करते हैं - अगर आज ही कुछ चलता हुआ चाहिए, तो पुश नोटिफ़िकेशन और QR कोड के लिए इन्हें इस्तेमाल करें।

USB डीबगिंग से जुड़े PC से अपने डीप लिंक टेस्ट करें:

  1. अपने फ़ोन पर USB डीबगिंग चालू करें
  2. USB से जोड़ें
  3. नीचे की कमांड चलाएँ।

⚠️ ज़रूरी: https लिंक के साथ 'am start' आपका ऐप तब भी खोल सकता है जब वेरिफ़िकेशन विफल हो गया हो, क्योंकि आप लिंक सीधे Android को दे रहे हैं। इससे यह साबित नहीं होता कि Gmail या Chrome में असली टैप काम करेगा। यह सिर्फ़ 'pm get-app-links' (पिछला चरण) बताता है। am start का इस्तेमाल अपने पेज की रूटिंग जाँचने के लिए करें, डोमेन सेटअप जाँचने के लिए नहीं।

# Test custom scheme:
adb shell am start -a android.intent.action.VIEW \
  -d "myapp://some/page"

# Test website URL:
adb shell am start -a android.intent.action.VIEW \
  -d "https://mysite.com/some/page"

# Verify which app handles it:
adb shell cmd package resolve-activity --brief \
  -a android.intent.action.VIEW \
  -d "myapp://some/page"

OneSignal से पुश नोटिफ़िकेशन भेजते समय, किसी भी डीप लिंक URL को 'Launch URL' फ़ील्ड में पेस्ट करें। ऐप खुलेगा और सीधे उसी पेज पर जाएगा।

दोनों तरह के URL काम करते हैं:
✅ https://mysite.com/flash-sale
✅ myapp://flash-sale

OneSignal Dashboard → New Push:

Launch URL: https://mysite.com/flash-sale
  OR
Launch URL: myapp://flash-sale

Both will open the app on the sale page.

9ज़रूरी: वॉर्म लॉन्च का व्यवहार#

अगर डीप लिंक चलने पर आपका ऐप पहले से बैकग्राउंड में चल रहा है, तो Android ऐप को रीस्टार्ट किए बिना लिंक सीधे दे देता है - इसे 'वॉर्म लॉन्च' कहते हैं।

✅ आपका ऐप यह अपने आप संभालता है। ऐप पहले से खुला हो तब भी WebView नए पेज पर चला जाएगा।

⚠️ अगर डीप लिंक सिर्फ़ होमपेज खोलते हैं, तो जाँचें कि:

  • कॉन्फ़िग में आपका वेबसाइट URL डीप लिंक के डोमेन से मेल खाता है
  • कस्टम स्कीम URL में पाथ सही है

⚠️ अगर https:// लिंक ऐप को बिल्कुल भी नहीं खोलते, तो यह वॉर्म-लॉन्च की समस्या नहीं है - यह ऊपर का assetlinks.json वाला चरण है। कस्टम स्कीम लिंक का चलना और https लिंक का कुछ न करना इसकी पुरानी पहचान है।

Warm launch works automatically.
No extra setup needed.

यह पेज ऐप के अंदर की इंटीग्रेशन गाइड से बनाया गया है, इसलिए इसमें वही लिखा है जो मौजूदा बिल्ड में है। इसे Markdown में पढ़ें.

2026-10-03 को शिप की गई गाइड से मिलान किया गया।