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

ازاي تربح من تطبيقك من غير ما تطفش المستخدم: دليل دمج إعلانات جوجل أد موب (Google AdMob) في فلاتر (Flutter) باحترافية

ازاي تربح من تطبيقك من غير ما تطفش المستخدم: دليل دمج إعلانات جوجل أد موب (Google AdMob) في فلاتر (Flutter) باحترافية يا هلا بيك يا بشمهندس! عارف الإحساس ده؟ لم

ازاي تربح من تطبيقك من غير ما تطفش المستخدم: دليل دمج إعلانات جوجل أد موب (Google AdMob) في فلاتر (Flutter) باحترافية
Reading Count: 4

ازاي تربح من تطبيقك من غير ما تطفش المستخدم: دليل دمج إعلانات جوجل أد موب (Google AdMob) في فلاتر (Flutter) باحترافية

يا هلا بيك يا بشمهندس! عارف الإحساس ده؟ لما تقعد بالساعات والليالي سهران بتكتب كود تطبيق فلاتر (Flutter App) وتظظبط الـ UI والـ State Management، وينزل التطبيق على متجر جوجل بلاي (Google Play) وأنت كلك أمل إنك تحقق دخل محترم.. وبعدين تفاجأ إن الأرباح صفار، أو الأسوأ من كده: المستخدمين بيحذفوا التطبيق وبيسيبوا تقييمات سلبية عشان الإعلانات مزعجة وبتقطع عليهم التجربة!

المعادلة الصعبة هنا هي: إزاي أكسب فلوس من إعلانات أد موب (Google AdMob Ads) وفي نفس الوقت أحافظ على تجربة مستخدم (User Experience - UX) نظيفة ورايقة؟ ده بالظبط اللي هنتكلم فيه النهارده بالتفصيل، من أول الشغل التقني والكود لحد أفضل الممارسات (Best Practices) اللي هتعمل بيها توازن سحري بين الأرباح ورضا المستخدم.

ليه إعلانات أد موب (Google AdMob) ممكن تدمر تطبيقك؟

قبل ما ندخل في الكود، تعال نتكلم بصراحة. المستخدم دلوقتي بقا عنده "عمى إعلاني" وبقى بيزهق بسرعة البصر. لو فتح تطبيق وطلعله إعلان مفاجئ (Interstitial Ad) وهو لسه بيدوس على أول زرار، أول رد فعل هيكون قفل التطبيق فوراً. جوجل نفسها بتعاقب التطبيقات اللي بتعمل إزعاج للمستخدمين وبتعمل حظر (Ban) لحساب الأد موب (AdMob Account) من غير وداع! فالموضوع مش مجرد حط إعلان وخلاص، الموضوع فن وهندسة.

أنواع الإعلانات المناسبة لتطبيقات فلاتر (Flutter Ads Types)

عشان نشتغل صح، لازم نعرف إحنا هنحط إيه وفين:

  • البانر الإعلاني (Banner Ads): إعلان صغير بيظهر في أسفل أو أعلى الشاشة، وده هادئ ومش مزعج لو محطوط في مكانه الصح.
  • الإعلانات البينية (Interstitial Ads): إعلانات ملء الشاشة اللي بتظهر في الانتقالات (مثلاً بعد ما المستخدم يخلص مستوى في لعبة، أو يحفظ بيانات في تطبيق).
  • الإعلانات المكافأة (Rewarded Ads): ودي أذكى وأروع نوع؛ المستخدم بيشوف إعلان بمزاجه عشان ياخد ميزة معينة في التطبيق (زي عملات افتراضية أو فتح محتوى مقفول). هنا المستخدم بيبقى مبسوط لأنها صفقة رابحة للطرفين!

الخطوة الأولى: إعداد حزمة فلاتر أد موب (google_mobile_ads package)

عشان نربط تطبيق فلاتر بـ جوجل أد موب، هنستخدم الحزمة الرسمية google_mobile_ads. أول خطوة، هتروح على ملف pubspec.yaml وتضيف الاعتمادية دي:


dependencies:
  flutter:
    sdk: flutter
  google_mobile_ads: ^3.0.0

بعد ما تعمل flutter pub get، محتاجين نظبط ملفات المنصات. لو شغال أندرويد (Android)، لازم تفتح ملف android/app/src/main/AndroidManifest.xml وتضيف الـ App ID الخاص بيك جوه تاغ <application> بالطريقة دي:


<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="ca-app-pub-3940256099942544~3375121516"/>

ملحوظة سريعة: الـ ID ده هو ID تجريبي (Test ID) من جوجل، استعمله دايماً وأنت بتطور التطبيق عشان جوجل ما تحظرش حسابك بسبب النقرات الوهمية، ولما ترفع التطبيق حط الـ ID الحقيقي بتاعك.

الخطوة الثانية: كتابة كود البانر الإعلاني (Banner Ad Implementation)

تعال نشوف إزاي نعرض بانر إعلاني جوه ودجت (Widget) في فلاتر بشكل نضيف ومن غير ما يعمل لغبطة في الشاشة. الأفضل دايماً إننا نعمل Statefull Widget خاصة بالبانر:


import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';

class MyBannerAdWidget extends StatefulWidget {
  @override
  _MyBannerAdWidgetState createState() => _MyBannerAdWidgetState();
}

class _MyBannerAdWidgetState extends State<MyBannerAdWidget> {
  BannerAd? _bannerAd;
  bool _isLoaded = false;

  @override
  void initState() {
    super.initState();
    _loadAd();
  }

  void _loadAd() {
    _bannerAd = BannerAd(
      adUnitId: 'ca-app-pub-3940256099942544/6300978111', // دي وحدة إعلانية تجريبية
      request: const AdRequest(),
      size: AdSize.banner,
      listener: BannerAdListener(
        onAdLoaded: (Ad ad) {
          setState(() {
            _isLoaded = true;
          });
        },
        onAdFailedToLoad: (Ad ad, LoadAdError error) {
          ad.dispose();
        },
      ),
    )..load();
  }

  @override
  void dispose() {
    _bannerAd?.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    if (_isLoaded && _bannerAd != null) {
      return Container(
        alignment: Alignment.center,
        width: _bannerAd!.size.width.toDouble(),
        height: _bannerAd!.size.height.toDouble(),
        child: AdWidget(ad: _bannerAd!),
      );
    }
    return SizedBox(); // لو الإعلان لسه محملش، متظهرش مساحة فارغة مزعجة
  }
}

أفضل الممارسات (Best Practices) لعدم إزعاج المستخدم وزيادة الأرباح

عشان تضمن إن تطبيقك هيفضل محبوب والناس هتكمله، اتبع القواعد الذهبية دي:

  • بلاش البانر العائم المتحرك (Sticky Floating Banners): لو هتحط بانر تحت، خليه ثابت في مكان مخصص وميفضلش يتحرك مع الـ Scroll بطريقة تعمي عين المستخدم عن محتوى التطبيق الأساسي.
  • التحكم في توقيت الإعلانات البينية (Interstitial Timing): إياك تظهر إعلان بيني وأنت فاتح التطبيق لأول مرة، أو والمستخدم بيدوس بسرعة ورا بعض. حط عداد أو شرط زمني (مثلاً كل 3 عمليات ناجحة، أو بعد الانتقال للشاشة الرئيسية للتطبيق).
  • استغل الإعلانات المكافأة (Rewarded Ads) بذكاء: لو تطبيقك فيه ميزات مميزة، خلي المستخدم يشاهد إعلان بملء إرادته عشان ياخدها. دي بتجلب أعلى عائد مادي (High eCPM) وفي نفس الوقت المستخدم هو اللي اختار ده ومبسوط.
  • مراعاة المساحات الآمنة (SafeArea): اتأكد دايماً إن الإعلانات مش متداخلة مع أزرار التنقل الأساسية في الهاتف أو الـ Notches عشان المستخدم ما يدوسش بالغلط ويطفش.

نصيحة من أخ

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


Share

Related posts

Aug 05, 2026 • 2 min read
Reading Count: 4
الدليل الشامل لاستخدام الـ Shaders في Flutter لتأثيرات بصرية خيالية

أهلاً بيك يا صديقي المبرمج في عالم الرسوميات المتقدمة! لو انت شغال فلاتر (Flutter) وبتعمل تطبيقات مو...

Aug 05, 2026 • 2 min read
Reading Count: 5
ربط تطبيق Flutter بأنظمة الـ CI/CD باستخدام Codemagic: أتمتة الرفع لـ Google Play و App Store

ربط تطبيق Flutter بأنظمة الـ CI/CD باستخدام Codemagic: أتمتة الرفع لـ Google Play و App Store يا هلا...

Aug 04, 2026 • 2 min read
Reading Count: 4
ازاي تحمي تطبيق فلاتر (Flutter App) بتاعك من الهكرز وتمنع الهندسة العكسية (Reverse Engineering)؟

ازاي تحمي تطبيق فلاتر (Flutter App) بتاعك من الهكرز وتمنع الهندسة العكسية (Reverse Engineering)؟ أهل...