I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

دليلك الشامل لتنفيذ الـ Deep Linking في Flutter باحترافية

دليلك الشامل لتنفيذ الـ Deep Linking في Flutter باحترافية تخيل إنك بتبعت لواحد صاحبك رابط لمنتج معين جوه تطبيقك، هو بيضغط عليه، بيفتح المتصفح، وبعدين يفتح التطب

دليلك الشامل لتنفيذ الـ Deep Linking في Flutter باحترافية
Reading Count: 3

دليلك الشامل لتنفيذ الـ Deep Linking في Flutter باحترافية

تخيل إنك بتبعت لواحد صاحبك رابط لمنتج معين جوه تطبيقك، هو بيضغط عليه، بيفتح المتصفح، وبعدين يفتح التطبيق، بس للأسف بيفتح الصفحة الرئيسية بدل ما يفتح صفحة المنتج اللي هو مستنيها. الموقف ده بيخلي المستخدم يزهق ويقفل التطبيق فوراً. هنا بيجي دور الـ الروابط العميقة (Deep Linking)، وهي الميزة اللي بتخليك توجه المستخدم لصفحة محددة جوه تطبيقك مباشرة بمجرد ضغطه على رابط معين.

يعني إيه Deep Linking وليه محتاجه؟

الـ Deep Linking هو تقنية بتربط بين عالم الويب وتطبيق الموبايل بتاعك. الفكرة مش بس إنك تفتح التطبيق، لكن إنك تبعت بيانات (Data/Parameters) للتطبيق عشان يعرف يروح فين بالظبط (زي ID بتاع بوست أو بروفايل). عشان تعمل ده في فلاتر (Flutter)، بنحتاج نهيئ حاجتين أساسيتين: App Links للأندرويد و Universal Links للـ iOS.

خطوة بخطوة: إعداد الـ Android App Links

عشان الأندرويد يثق في موقعك، لازم تثبت له إنك صاحب الموقع ده عن طريق ملف اسمه assetlinks.json. الخطوات كالتالي:

  • هتروح لملف AndroidManifest.xml وتضيف intent-filter جوه الـ activity الأساسية.
  • لازم تستخدم android:autoVerify="true" عشان النظام يتأكد من الرابط أوتوماتيك.
  • الملف ده لازم يتحط على سيرفر موقعك في مسار /.well-known/assetlinks.json.

<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="yourdomain.com" />
</intent-filter>

خطوة بخطوة: إعداد الـ iOS Universal Links

أبل بتحب الخصوصية جداً، فعشان كده لازم تعمل apple-app-site-association (AASA) فايل. ده ملف JSON بتحطه برضه على سيرفرك عشان أبل تتأكد إن التطبيق ده تابع للموقع.

في إعدادات الـ Xcode، لازم تضيف الـ Associated Domains، وتكتب الرابط بتاعك بالشكل ده: applinks:yourdomain.com.

التعامل مع الروابط جوه كود Flutter

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


final GoRouter _router = GoRouter(
  routes: [
    GoRoute(
      path: '/product/:id',
      builder: (context, state) => ProductScreen(id: state.pathParameters['id']!),
    ),
  ],
);

كده أي رابط يجي للتطبيق زي yourdomain.com/product/123، الـ Routing هياخده ويفتح الـ ProductScreen ويبعتله الـ id اللي هو 123.

نصيحة من أخ لمطور فلاتر

الـ Deep Linking ممكن يبان في الأول إنه "صداع" بسبب ملفات السيرفر والشهادات، لكن صدقني هو الميزة اللي بتفرق بين تطبيق احترافي وتطبيق عادي. نصيحتي ليك إنك تستخدم أدوات زي Firebase Dynamic Links لو عايز تسهيلات أكتر (رغم إنها بقت Legacy)، أو اعتمد على الـ App Links الخام عشان تكون ضامن استمرارية تطبيقك. ابدأ بتجربة بسيطة، جرب تفتح صفحة واحدة، ولما تظبط معاك، وسع نطاق الروابط في تطبيقك. التعقيد في الأول هو ثمن بسيط لخبرة كبيرة هتضيفها للـ Portfolio بتاعك.


Share

Related posts

Jul 02, 2026 • 1 min read
Reading Count: 13
ازاي تبني لوحة تحكم (Dashboard) احترافية بـ Laravel Livewire 3 من غير سطر جافاسكريبت واحد؟

ازاي تبني لوحة تحكم (Dashboard) احترافية بـ Laravel Livewire 3 من غير سطر جافاسكريبت واحد؟ لو أنت مب...

Jul 02, 2026 • 1 min read
Reading Count: 14
ازاي تستخدم خواص CSS الحديثة من غير ما تقلق من مشاكل التوافقية (Compatibility)

ازاي تستخدم خواص CSS الحديثة من غير ما تقلق من مشاكل التوافقية (Compatibility) يا مساء الفل على كل ا...

Jul 01, 2026 • 1 min read
Reading Count: 13
إزاي تبني تطبيق موبايل Offline-First باستخدام Flutter و Drift و Hive

إزاي تبني تطبيق موبايل Offline-First باستخدام Flutter و Drift و Hive أكيد مريت بالموقف ده، بتطور تطب...