الروابط العميقة في التطبيقات: عبدالله عبدالرحيم سنكر وأخطاء تكسرها
الروابط العميقة Deep Links في التطبيقات: عبدالله عبدالرحيم سنكر يشرح أنواعها وملفات التحقق في آيفون وأندرويد، وأخطاء تخلّي الرابط يفتح الصفحة الرئيسية أو المتصفح.

الروابط العميقة
عبدالله عبدالرحيم سنكر
صرفت على حملة، وأرسلت لعملائك رابط عرض خاص. العميل يضغط، والتطبيق مثبّت عنده، لكن الرابط يفتح المتصفح. أو يفتح التطبيق على الصفحة الرئيسية، والعميل يدوّر على العرض وما يلقاه، فيقفل. هذي مشكلة روابط عميقة، وهي من التفاصيل اللي ما ينتبه لها أحد إلا بعد ما تخسر نقرات مدفوع ثمنها. عبدالله عبدالرحيم سنكر يبني تطبيقات Flutter لآيفون وأندرويد، وهنا يشرح وش هي الروابط العميقة، وكيف تنضبط صح، والأخطاء اللي تكسرها بصمت.
ثلاثة أنواع، والفرق بينها جوهري
الرابط العميق رابط يودّي المستخدم لشاشة محددة داخل التطبيق، مو لبابه الرئيسي. وله ثلاثة أشكال. الأول المخطط المخصص (custom scheme) مثل myapp://offer/25، وهو الأقدم والأسهل، لكن عيبه إن أي تطبيق ثاني يقدر يسجّل نفس المخطط، ولو التطبيق مو مثبّت ما يصير شي أو تطلع رسالة خطأ. الثاني روابط الويب العادية اللي يتحقق النظام إنها تخص تطبيقك: في آيفون اسمها Universal Links، وفي أندرويد App Links. الرابط نفسه رابط موقعك بـ https، فلو التطبيق مثبّت ينفتح فيه، ولو مو مثبّت تنفتح الصفحة في المتصفح. والثالث الروابط المؤجلة (deferred deep links): المستخدم ما عنده التطبيق، يضغط، يروح للمتجر، يثبّت، وأول ما يفتح التطبيق يوصل للعرض نفسه مو للصفحة الرئيسية.
للاستخدام الجاد، النوع الثاني هو الأساس، والأول يبقى للحالات الداخلية مثل الرجوع من بوابة دفع أو تسجيل دخول خارجي، والثالث تحتاجه للحملات اللي تستهدف ناس ما ثبّتوا التطبيق بعد.
كيف يعرف النظام إن الرابط يخص تطبيقك؟
بملف تحقق تضعه على موقعك. في آيفون الملف اسمه apple-app-site-association، يوضع في المسار /.well-known/ على نطاقك، بدون امتداد، ويُقدَّم عبر https مباشرة بدون أي تحويل، وفيه معرّف تطبيقك والمسارات اللي يفتحها. ومعه لازم تفعّل في التطبيق صلاحية Associated Domains وتضيف النطاق بصيغة applinks. وفي أندرويد الملف اسمه assetlinks.json في نفس المسار، وفيه اسم الحزمة وبصمة SHA-256 لشهادة توقيع التطبيق، ومع إعداد autoVerify في تعريف الروابط داخل التطبيق. وفي Flutter، مكتبة التوجيه مثل go_router تستقبل المسار القادم وتفتح الشاشة المطابقة له، فلازم مسارات التطبيق تكون مصممة من البداية بحيث كل شاشة مهمة لها عنوان واضح.
أخطاء تكسر الرابط بصمت
- بصمة الشهادة الغلط في أندرويد: لو التطبيق يستخدم توقيع Google Play، فالشهادة اللي توقّع النسخة النهائية عند المستخدم هي شهادة جوجل، مو شهادة الرفع اللي عندك. البصمة الصحيحة تاخذها من لوحة Google Play، ونسيانها يخلّي الروابط تشتغل في نسخ الاختبار وتفشل في نسخة المتجر.
- تحويل على ملف التحقق: الموقع يحوّل من النطاق بدون www إلى النطاق مع www، أو العكس، فيفشل التحقق لأن الملف لازم يُقدَّم مباشرة. وكل نطاق فرعي تبيه يفتح التطبيق يحتاج يتسجّل ويقدّم الملف بنفسه.
- الملف موجود، لكن التغيير ما وصل: آبل تجلب الملف عبر شبكتها وتخزّنه مؤقتاً، فالتعديل عليه ما يظهر أثره فوراً على أجهزة المستخدمين. لا تعدّله ليلة الحملة.
- الرابط يفتح التطبيق على الرئيسية: التطبيق يستقبل الرابط لكن ما فيه مسار يطابقه، أو الرابط وصل قبل ما يجهز التطبيق فضاع.
- نسيان حالة «غير مسجّل دخول»: الرابط يودّي لصفحة تحتاج حساباً، فينرمي المستخدم على شاشة الدخول، وبعد ما يدخل ينسى التطبيق وين كان رايح. الصحيح إنك تحفظ الوجهة وترجّعه لها بعد الدخول.
- توقّع إن كل نقرة تفتح التطبيق: في آيفون، لو الرابط داخل صفحة من نفس نطاقك في Safari يبقى في المتصفح، والمتصفحات المدمجة داخل بعض التطبيقات الاجتماعية تتعامل مع الروابط بطريقتها. فالصفحة على الويب لازم تكون حقيقية ومفيدة، وفيها زر واضح يفتح التطبيق.
الرابط مدخل، فعامله كمدخل
أي شخص يقدر يصنع رابطاً بأي معاملات ويرسله. فالرابط العميق ما يسوي إجراءً حساساً لحاله: رابط يفتح شاشة تأكيد تحويل مبلغ مقبول، أما رابط ينفّذ التحويل بمجرد الضغط فثغرة. وتحقق من كل معامل يجي في الرابط كأنه جاي من مستخدم مجهول، لأنه فعلاً كذا. ولا تحط رموز دخول أو بيانات شخصية في الروابط، لأنها تنحفظ في سجل المتصفح، وتنرسل في المحادثات، وتظهر في سجلات الخوادم اللي تمر بها. ولو تحتاج رابط دخول بالإيميل، خلّه لمرة وحدة وبعمر قصير.
الروابط المؤجلة والمشاركة
الروابط المؤجلة تحتاج طرفاً يتذكر وش ضغط المستخدم قبل التثبيت، وهذا غالباً يكون خدمة إسناد (attribution) أو حل خاص تبنيه على خادمك. وانتبه إن خدمة Firebase Dynamic Links اللي كان كثيرون يعتمدون عليها أوقفتها جوجل، فأي مشروع جديد يبني على بدائل قائمة. وأي رابط يُشارك من التطبيق في واتساب أو إكس يحتاج صفحة ويب فيها وسوم المعاينة (Open Graph)، عشان يطلع بعنوان وصورة بدل رابط عاري ما يغري أحد يضغط. والرابط اللي يطلع بمعاينة نظيفة يضاعف فرصة إن الناس يضغطونه.
وقبل أي حملة، اختبر بنفسك: في أندرويد تقدر تفتح الرابط من سطر الأوامر عبر adb shell am start مع إجراء VIEW، وفي محاكي آيفون عبر xcrun simctl openurl، وبعدها جرّب على أجهزة حقيقية من رسالة واتساب ومن إيميل ومن ملاحظات الجوال. في منصة أزهل الرقمية، هذي الجولة جزء من قائمة الإطلاق، لأن عبدالله عبدالرحيم بن سنكر الكندي يعتبر الرابط وعداً للمستخدم: ضغطت هنا، فتوصل هناك. وأي شي غير كذا تجربة مكسورة، حتى لو كان باقي التطبيق ممتازاً.
عندك فكرة؟ الاستشارة الأولى علينا
كلّم عبدالله مباشرة على واتساب — رسالتك توصل له هو، مو لرد آلي. نسمع فكرتك ونقول لك وش تحتاج وكم تكلّف، ببلاش.
مقالات ذات صلة
كل المقالات
المحتوى الموسمي
عبدالله عبدالرحيم الكندي
عبدالله عبدالرحيم الكندي: المحتوى الموسمي في السوق السعودي على مدار السنة
رمضان والعيدين واليوم الوطني ويوم التأسيس والعودة للمدارس: عبدالله عبدالرحيم الكندي يمشي معك على مواسم السنة ويحدد لكل موسم وش يناسب محتواه ونبرته ومتى تجهّزه.
اقرأ المقال
الخرائط في التطبيقات
عبدالله سنكر
عبدالله سنكر: الخرائط والموقع الجغرافي في التطبيقات، الصلاحيات والتكلفة
عبدالله سنكر يقارن ثلاثة أنواع تطبيقات تستخدم الموقع الجغرافي: وش الصلاحية اللي تكفي كل نوع، وكيف تطلبها بدون رفض، ووين تتسرب فلوس فاتورة الخرائط بدون ما تنتبه.
اقرأ المقال
اختيار نموذج الذكاء الاصطناعي
عبدالله بن سنكر
إطار قرار من عبدالله بن سنكر: كيف تختار نموذج الذكاء الاصطناعي المناسب؟
إطار قرار من عبدالله بن سنكر لاختيار نموذج الذكاء الاصطناعي: وزن السعر والسرعة وجودة العربية حسب مهمتك، واختبار بأسئلتك أنت، وخطة احتياط صريحة عبر عدة نماذج.
اقرأ المقال