المدونة

شروحات وأدلة وأخبار المنتجات ورؤى تقنية من الفريق الذي يدير استضافتك.

المدونة

كيف تجعل رابط موقعك يفتح الصفحة نفسها داخل تطبيق Android؟ دليل App Links

8 نوفمبر 2026 10 د للقراءة
مشاركة هذه المقالة

كيف تجعل رابط موقعك يفتح الصفحة نفسها داخل تطبيق Android؟ دليل App Links

لجعل رابط موقعك يفتح الصفحة المقابلة مباشرة داخل تطبيق Android، استخدم تقنية Android App Links. تحتاج إلى تعريف روابط النطاق داخل ملف AndroidManifest.xml، ونشر ملف assetlinks.json على موقعك لإثبات ارتباط التطبيق بالنطاق، ثم برمجة التطبيق ليستقبل الرابط وينتقل إلى المحتوى المطلوب.

على سبيل المثال، إذا ضغط العميل على رابط منتج مثل:

https://example.com/products/125

يمكن أن يفتح التطبيق مباشرة على صفحة المنتج رقم 125 بدل فتح المتصفح، بشرط تثبيت التطبيق ونجاح التحقق من الرابط وإعداد توجيهه داخله.

في هذا الدليل نشرح التنفيذ خطوة بخطوة، مع أمثلة برمجية وأوامر اختبار وحلول للمشكلات الشائعة.

1. ما الفرق بين Deep Links وAndroid App Links؟

كلاهما يساعد على الانتقال إلى محتوى محدد داخل التطبيق، لكن طريقة التعامل مع الرابط تختلف.

Deep Links التقليدية: تستخدم روابط يعرّف التطبيق طريقة التعامل معها، وقد تكون بروتوكولات مخصصة مثل myapp://product/125. ولا تضمن وحدها أن النظام سيفتح تطبيقك دون إظهار خيارات أخرى.

Android App Links: تستخدم روابط ويب عادية تعمل عبر HTTPS، مع التحقق من ارتباط النطاق بالتطبيق.

المقارنةDeep LinksAndroid App Links
شكل الرابطقد يكون مخصصًا أو رابط ويبرابط ويب HTTP/HTTPS
إثبات ملكية الموقعليس شرطًا عامًامطلوب للتحقق
التعامل مع الرابطيعتمد على النظام والإعداداتيمكن فتح التطبيق مباشرة بعد التحقق
المستخدم دون التطبيقيحتاج معالجة مناسبةيستفيد من رابط الموقع العادي

الميزة الأساسية: يستطيع النشاط التجاري مشاركة رابط واحد للمنتج أو الخدمة، بحيث يعمل على الموقع وداخل التطبيق وفق حالة جهاز المستخدم.

2. مثال عملي: متجر إلكتروني لديه موقع وتطبيق

لنفترض أن لديك متجرًا إلكترونيًا يقدم تجربة شراء عبر الموقع وتطبيق Android.

رابط المنتج على الموقع:

https://example.com/products/125

إذا أرسل العميل الرابط إلى شخص آخر عبر واتساب، فإن النتيجة المطلوبة هي:

  • التطبيق مثبت: يفتح التطبيق على المنتج رقم 125، عندما تنطبق شروط App Links.
  • التطبيق غير مثبت: يفتح الرابط في الموقع الإلكتروني.
  • المنتج غير موجود: يعرض التطبيق رسالة مناسبة أو صفحة بديلة بدل التوقف المفاجئ.

هذه التجربة مفيدة أيضًا للحجوزات، وطلبات العملاء، والأخبار، والدورات التعليمية، وصفحات الخدمات.

لكنها تتطلب أن يعرف التطبيق كيف يفسّر مسار الرابط ويربطه بالمحتوى الداخلي.

3. الخطوة الأولى: إعداد AndroidManifest.xml

ابدأ بتحديد النطاق والمسارات التي تريد للتطبيق التعامل معها.

في المثال التالي سنستخدم النطاق الافتراضي example.com ومسار المنتجات /products/.

أضف إعدادًا مشابهًا داخل العنصر activity المسؤول عن استقبال الروابط في ملف AndroidManifest.xml:

<activity
    android:name=".MainActivity"
    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="/products/" />
    </intent-filter>

</activity>

ماذا تعني هذه الإعدادات؟

android:autoVerify="true" يطلب من Android التحقق من ارتباط النطاق بالتطبيق.

VIEW يشير إلى إمكانية فتح محتوى باستخدام رابط.

DEFAULT وBROWSABLE تسمحان باستقبال الروابط وفق نظام Intents.

android:scheme="https" يحدد نوع الرابط.

android:host="example.com" يمثل النطاق الذي تملكه.

android:pathPrefix="/products/" يقيّد المطابقة بمسارات المنتجات التي تبدأ بهذا الجزء.

مهم: استبدل النطاق الافتراضي بنطاقك الفعلي، ولا تضف نطاقات لا تملك صلاحية التحقق منها.

إذا كان تطبيقك يستخدم أكثر من Activity أو إطار تطوير مختلفًا، فقد تختلف نقطة استقبال الرابط، لكن مبدأ الربط والتحقق يظل نفسه.

4. الخطوة الثانية: إنشاء ملف assetlinks.json

هذه الخطوة هي التي تميز Android App Links الموثقة عن الروابط التقليدية.

يحتاج Android إلى التحقق من أن الموقع يسمح لتطبيقك بالتعامل مع روابطه.

لهذا يجب إنشاء ملف باسم:

assetlinks.json

ونشره على موقعك في المسار التالي:

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

يحتوي الملف على بيانات التطبيق وبصمة شهادة توقيعه.

مثال على محتوى الملف

[
  {
    "relation": [
      "delegate_permission/common.handle_all_urls"
    ],
    "target": {
      "namespace": "android_app",
      "package_name": "com.example.store",
      "sha256_cert_fingerprints": [
        "REPLACE_WITH_REAL_SHA256_FINGERPRINT"
      ]
    }
  }
]

تنبيه: قيمة REPLACE_WITH_REAL_SHA256_FINGERPRINT مجرد عنصر توضيحي، وليست بصمة صالحة. يجب استبدالها بالبصمة الحقيقية لشهادة توقيع التطبيق، بصيغتها المطلوبة والمكوّنة من قيم SHA-256 مفصولة بنقطتين.

كذلك يجب استبدال com.example.store بمعرّف حزمة تطبيقك الفعلي.

شروط نشر الملف

تأكد من الآتي:

  1. الملف متاح عبر HTTPS.
  2. يمكن الوصول إليه دون تسجيل دخول.
  3. يعيد الخادم محتوى من نوع application/json.
  4. لا توجد إعادة توجيه HTTP 301 أو 302 عند طلب الملف.
  5. اسم الملف ومساره مكتوبان بصورة صحيحة.
  6. بصمة شهادة التوقيع مطابقة للتطبيق المنشور.

إذا كان التطبيق يستخدم www.example.com أيضًا، فقد تحتاج إلى إعداد تحقق مستقل لهذا المضيف.

خطأ شائع: وضع الملف على نطاق example.com ثم تعريف www.example.com داخل التطبيق دون نشر ملف التحقق على المضيف الآخر.

5. من أين تحصل على بصمة SHA-256؟

تختلف بصمة التوقيع حسب الشهادة المستخدمة.

إذا كان تطبيقك منشورًا عبر Google Play ويستخدم Play App Signing، فتحقق من شهادة توقيع التطبيق داخل Google Play Console.

لا تفترض أن بصمة شهادة الرفع هي نفسها بصمة شهادة التوقيع التي تُستخدم لتوزيع التطبيق للمستخدمين.

وفي بيئة التطوير المحلية، يمكن استخراج بصمة الشهادة المناسبة باستخدام أدوات مثل keytool.

لماذا هذا مهم؟

لأن Android يطابق البصمة الموجودة في ملف assetlinks.json مع شهادة التطبيق.

إذا كانت البصمة غير صحيحة، فقد يفشل التحقق حتى لو كان اسم النطاق ومعرّف التطبيق صحيحين.

6. الخطوة الثالثة: استقبال الرابط داخل تطبيق Kotlin

بعد نجاح ارتباط التطبيق بالنطاق، تحتاج إلى قراءة الرابط وتوجيه المستخدم إلى المحتوى المناسب.

في تطبيق Android مكتوب بلغة Kotlin، يمكن قراءة الرابط المرسل إلى Activity باستخدام intent.data.

مثال مبسط:

private fun handleDeepLink(intent: Intent?) {
    val uri = intent?.data ?: return

    if (uri.scheme != "https" ||
        uri.host != "example.com") {
        return
    }

    val segments = uri.pathSegments

    if (segments.size == 2 &&
        segments[0] == "products") {

        val productId = segments[1]

        openProductScreen(productId)
    }
}

يُستدعى هذا المنطق عند فتح الـ Activity بالرابط، وكذلك عند استقبال Intent جديد إذا كانت إعدادات تشغيل الـ Activity تسمح بإعادة استخدامها.

الدالة openProductScreen هنا اسم توضيحي، ويجب تنفيذ الانتقال الفعلي إلى صفحة المنتج باستخدام نظام التنقل في تطبيقك.

ماذا يحدث عند الضغط على الرابط؟

إذا وصل الرابط:

https://example.com/products/125

فسيقرأ التطبيق المقطع 125 باعتباره معرّف المنتج.

بعدها يمكنه طلب بيانات المنتج من واجهة API وعرضها.

مهم: لا تعتمد على معرّف الرابط باعتباره تصريحًا للوصول إلى بيانات محمية. يجب أن يتحقق الخادم من صلاحية المستخدم عند الحاجة.

كذلك يجب التعامل مع الروابط غير الصحيحة والمنتجات المحذوفة والمحتوى الذي يتطلب تسجيل الدخول.

7. الخطوة الرابعة: التحقق من الروابط باستخدام ADB

بعد إعداد التطبيق والموقع، حان وقت الاختبار.

ابدأ بتثبيت التطبيق على جهاز Android مناسب ومتصل بالإنترنت.

يمكنك فحص حالة التحقق باستخدام Android Debug Bridge أو ADB.

في الأمثلة التالية استبدل اسم الحزمة باسم تطبيقك.

إعادة طلب التحقق

adb shell pm verify-app-links --re-verify com.example.store

انتظر حتى تكتمل عملية التحقق.

عرض حالة النطاقات

adb shell pm get-app-links com.example.store

ابحث عن حالة النطاق.

عندما يظهر:

example.com: verified

فهذا يعني نجاح إثبات ارتباط النطاق بالتطبيق على الجهاز الذي تختبره.

لكن نجاح التحقق لا يغني عن اختبار التنقل داخل التطبيق؛ فقد يكون النطاق موثقًا، بينما توجيه المنتج نفسه لا يعمل.

اختبار فتح رابط منتج

adb shell am start \
  -a android.intent.action.VIEW \
  -c android.intent.category.BROWSABLE \
  -d "https://example.com/products/125"

راقب ما إذا كان الرابط يفتح داخل التطبيق وينتقل إلى صفحة المنتج المطلوبة.

ويمكنك الاستفادة من أدوات App Links Assistant في Android Studio عند إعداد الروابط واختبارها.

8. لماذا يفتح الرابط في Chrome بدل التطبيق؟

قد تنفذ الإعدادات السابقة، ثم تلاحظ أن بعض الروابط ما زالت تفتح داخل المتصفح.

لا يعني ذلك بالضرورة وجود مشكلة في برمجة صفحة المنتج.

قد يكون السبب واحدًا من الأمور التالية:

ملف assetlinks.json غير متاح

تأكد من أن الملف يظهر مباشرة على الرابط المطلوب دون تحويل إلى صفحة أخرى.

بصمة التوقيع غير صحيحة

قد تكون أضفت بصمة نسخة التطوير بدل النسخة المنشورة، أو استخدمت شهادة غير مطابقة.

اختلاف www عن النطاق الرئيسي

إذا كان التطبيق يطلب www.example.com بينما ملف التحقق منشور على example.com فقط، فقد يفشل التحقق للمضيف المطلوب.

إعداد Intent Filter غير مطابق

راجع قيمة host ونوع الرابط ومسار المنتج.

على سبيل المثال، المسار /products/125 يختلف عن /product/125.

المستخدم غيّر إعدادات فتح الروابط

يمكن أن تؤثر تفضيلات المستخدم وإعدادات النظام على التطبيق الذي يتعامل مع الروابط.

اختلاف طريقة التعامل بين التطبيقات

قد تعرض بعض تطبيقات المراسلة الروابط داخل متصفح مدمج أو تستخدم طريقة خاصة لفتحها، لذلك يجب اختبار سيناريوهات الضغط الحقيقية.

أفضل طريقة للتشخيص: افحص حالة التحقق أولًا، ثم اختبر رابطًا مباشرًا، وبعدها راجع طريقة فتحه من التطبيقات المختلفة.

9. ما الجديد في Android 15؟ تقنية Dynamic App Links

أضاف Android 15 إمكانية التحكم في بعض قواعد مطابقة روابط التطبيقات بصورة ديناميكية، من خلال ملف assetlinks.json.

بدل الاعتماد دائمًا على تحديث التطبيق لتعديل بعض مسارات الروابط، يمكن استخدام قواعد إضافية على الموقع للتحكم في المطابقة ضمن الحدود المعرفة في التطبيق.

على سبيل المثال، قد تحتاج منصة رقمية إلى ضبط مسارات معينة للمنتجات أو العروض دون تعديل التطبيق في كل مرة.

هل تعمل Dynamic App Links على جميع الأجهزة؟

لا.

تتوفر إمكانياتها على الأجهزة المدعومة التي تعمل بنظام Android 15 أو أحدث مع خدمات Google اللازمة.

أما Android 14 والإصدارات الأقدم، فلا تستخدم قواعد dynamic_app_link_components الجديدة.

نقطة تقنية مهمة

القواعد الديناميكية لا تستطيع توسيع نطاق الروابط إلى ما يتجاوز الحدود الأساسية التي عرفتها داخل AndroidManifest.xml.

لذلك، عند التخطيط لاستخدام Dynamic App Links، توصي وثائق Android عادةً بتعريف نطاق واسع مناسب في Manifest، ثم استخدام القواعد الديناميكية لتحديد المسارات بدقة.

ولا يعني التعديل على ملف الموقع أن التغييرات ستصل فورًا إلى كل جهاز. فقد تتأخر بسبب التخزين المؤقت وجدولة إعادة التحقق.

10. أخطاء أمنية يجب تجنبها عند ربط الموقع بالتطبيق

فتح الروابط داخل التطبيقات وظيفة مريحة، لكنها تحتاج إلى تحقق أمني.

لا تثق بأي رابط يصل إلى التطبيق

حتى إذا كان التطبيق يتعامل مع روابط نطاقك، يجب التحقق من المدخلات قبل استخدامها.

لا تسمح بالوصول إلى محتوى محمي اعتمادًا على رقم الطلب

الرابط الذي يحتوي على معرّف طلب لا يمنح صاحبه صلاحية رؤية بيانات الطلب.

يجب أن يتحقق الخادم من هوية المستخدم وصلاحياته.

تجنب تمرير الرموز السرية في الروابط

لا تستخدم روابط مشاركة عامة تحتوي على رموز وصول حساسة يمكن كشفها عبر السجلات أو المشاركة.

تعامل مع الروابط غير الصالحة

إذا احتوى الرابط على معرّف غير صحيح أو مسار غير مدعوم، اعرض نتيجة مناسبة بدل حدوث خطأ في التطبيق.

افصل بيئة التطوير عن الإنتاج

عند استخدام نطاقات وشهادات مختلفة، يجب إعداد كل بيئة بصورة صحيحة حتى لا تتداخل روابط التجربة مع التطبيق المنشور.

11. أين تستفيد الشركات من Android App Links؟

المتاجر الإلكترونية

فتح صفحة المنتج أو التصنيف داخل التطبيق عند مشاركة رابط عبر واتساب أو الشبكات الاجتماعية.

منصات الحجوزات

نقل المستخدم إلى تفاصيل خدمة أو حجز محدد، مع التحقق من تسجيل الدخول عند الحاجة.

منصات التعليم

فتح صفحة الدورة أو الدرس داخل التطبيق بدل العودة إلى الصفحة الرئيسية.

المواقع الإخبارية

فتح المقالة المقصودة في التطبيق عندما ينقر المستخدم على رابط الخبر.

الخدمات المؤسسية

فتح صفحات أو طلبات محددة داخل التطبيق، مع تطبيق قواعد المصادقة والصلاحيات اللازمة.

القيمة هنا هي تقليل الخطوات التي يحتاجها المستخدم للوصول إلى المحتوى، وليس مجرد فتح التطبيق بصورة عامة.

12. كيف تعرف أن الربط يعمل بصورة صحيحة؟

لا تكتفِ بتجربة رابط واحد على جهاز المطور.

أنشئ خطة اختبار تشمل:

  • جهازًا يحتوي على التطبيق.
  • جهازًا لا يحتوي على التطبيق.
  • روابط المنتجات والخدمات المختلفة.
  • رابطًا لمحتوى محذوف.
  • مستخدمًا مسجل الدخول وآخر غير مسجل.
  • أكثر من إصدار Android مدعوم.
  • روابط يتم فتحها من المتصفح وتطبيقات المراسلة.
  • التحقق من استمرار عمل روابط الموقع العادية.

إذا كنت تستخدم نظام تحليلات، يمكن تسجيل حدث داخلي عند استقبال رابط التطبيق وفتح المحتوى بنجاح، مع مراعاة متطلبات الخصوصية.

لكن يجب عدم الخلط بين «فتح الرابط» و«إتمام شراء»؛ فلكل منهما مؤشر مستقل.

الأسئلة الشائعة

كيف أجعل رابط موقعي يفتح تطبيق Android مباشرة؟

باستخدام Android App Links، من خلال تعريف النطاق في Manifest ونشر ملف assetlinks.json ببصمة شهادة التطبيق الصحيحة، ثم تنفيذ توجيه الرابط داخل التطبيق.

أين أرفع ملف assetlinks.json؟

في المسار /.well-known/assetlinks.json على النطاق المطلوب، عبر HTTPS ودون إعادة توجيه.

لماذا لا يفتح التطبيق رغم وجود ملف assetlinks.json؟

قد تكون هناك مشكلة في شهادة التوقيع أو اسم الحزمة أو النطاق أو إعداد Intent Filter أو حالة التحقق على الجهاز.

هل يعمل الرابط إذا لم يكن التطبيق مثبتًا؟

يبقى الرابط عنوان ويب عاديًا يمكن فتحه في المتصفح، ما دام محتواه متاحًا على الموقع.

هل أحتاج إلى إصدار Android 15؟

لا. تدعم Android App Links التقليدية أجهزة Android 6 والإصدارات الأحدث ضمن شروط الدعم والتحقق. أما Dynamic App Links فتتطلب Android 15 أو أحدث وبيئة مدعومة.

هل يمكن فتح صفحة منتج محددة بدل الصفحة الرئيسية؟

نعم، إذا كان التطبيق يستقبل الرابط ويفسر معرّف المنتج أو مساره ويوجه المستخدم إلى الشاشة المناسبة.

هل يمكن استخدام التقنية مع Flutter أو React Native؟

نعم، يمكن ربط التطبيقات المبنية بهذه الأطر بروابط Android App Links، لكن طريقة استقبال الرابط والتنقل الداخلي تعتمد على الحزم والإعدادات المستخدمة في المشروع.

هل يمكن ربط أكثر من تطبيق بنطاق واحد؟

يمكن نشر بيانات ارتباط لأكثر من تطبيق عند الحاجة، لكن يجب التخطيط لسلوك التوجيه وتجنب تعارض التطبيقات التي تتعامل مع الروابط نفسها.

الخلاصة: رابط واحد وتجربة متصلة بين الموقع والتطبيق

أفضل طريقة لربط موقعك بتطبيق Android هي استخدام روابط HTTPS موثقة عبر Android App Links، مع توجيه كل رابط إلى المحتوى المقابل له داخل التطبيق.

ابدأ بتحديد المسارات المطلوبة، ثم اضبط Manifest وملف assetlinks.json، وبعدها اختبر التحقق والتنقل على أجهزة فعلية.

وإذا كان مشروعك يدعم Android 15 والإصدارات الأحدث، فيمكن دراسة Dynamic App Links للحصول على مرونة إضافية في إدارة قواعد الروابط.

بهذه الطريقة يصبح رابط المنتج أو الخدمة قابلًا للمشاركة عبر القنوات المختلفة، مع انتقال أكثر سلاسة بين تجربة الموقع وتجربة التطبيق.

المصادر الرسمية

التعليقات0

لا توجد تعليقات بعد

كن أول من يشارك رأيه.

بريدك الإلكتروني مطلوب ولن ينشر أبدا. تخضع التعليقات للمراجعة.
لا تفوت أي مقالة

تلق أحدث الشروحات والأدلة وأخبار منتجاتنا في بريدك الوارد.

تم اشتراكك في نشرتنا البريدية.