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 بھی متعارف کروایا — شیل کے ذریعے تصدیق کے انتظام کے لیے کمانڈز۔
متعدد ڈومینز — پروڈکشن کے لیے ایک عام منظرنامہ۔ ایپ 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں