"الإعلان البيني مقابل مكافأة" هو نوع من أشكال الإعلانات المحفَّزة التي تتيح لك تقديم مكافآت مقابل الإعلانات التي تظهر تلقائيًا خلال الانتقالات الطبيعية في التطبيقات. وعلى عكس الإعلانات مقابل مكافأة، لا يُطلب من المستخدمين الموافقة على عرض إعلان بيني مقابل مكافأة. يوضّح هذا الدليل كيفية دمج "الإعلانات البينية مقابل مكافأة" من AdMob في تطبيق Flutter.
المتطلبات الأساسية
قبل المتابعة، عليك تنفيذ ما يلي:
- ثبِّت المكوّن الإضافي Flutter بالإصدار 1.1.0 أو إصدار أحدث.
- إعداد Google Mobile Ads Flutter Plugin يجب أن يتضمّن تطبيق Flutter حزمة Google Mobile Ads Flutter Plugin التي تم استيرادها.
اختبِر دائمًا باستخدام الإعلانات الاختبارية
عند إنشاء تطبيقاتك واختبارها، تأكَّد من استخدام الإعلانات الاختبارية بدلاً من الإعلانات المباشرة والإنتاجية. وقد يؤدي عدم إجراء ذلك إلى تعليق حسابك.
أسهل طريقة لتحميل الإعلانات الاختبارية هي استخدام معرّف الوحدة الإعلانية الاختبارية المخصّص للإعلانات البينية مقابل مكافأة:
Android
ca-app-pub-3940256099942544/5354046379
iOS
ca-app-pub-3940256099942544/6978759866
يتم إعداد الوحدات الإعلانية الاختبارية لعرض إعلانات اختبارية لكل طلب، ويمكنك استخدامها في تطبيقاتك أثناء الترميز والاختبار وتصحيح الأخطاء. احرص على استبدالها بمعرّفات وحداتك الإعلانية قبل نشر تطبيقك.
تحميل إعلان
يعرض المثال التالي كيفية تحميل "إعلان بيني مقابل مكافأة":
استبدِل _adUnitId برقم تعريف وحدتك الإعلانية.
أحداث "الإعلانات البينية مقابل مكافأة"
من خلال استخدام FullScreenContentCallback، يمكنك الاستماع إلى أحداث مراحل النشاط، مثل وقت عرض الإعلان أو إغلاقه. اضبط
RewardedInterstitialAd.fullScreenContentCallback قبل عرض الإعلان
لتلقّي إشعارات بشأن هذه الأحداث. ينفّذ هذا المثال كل طريقة ويسجّل رسالة في وحدة التحكّم:
ad.fullScreenContentCallback = FullScreenContentCallback(
onAdShowedFullScreenContent: (ad) {
// Called when the ad showed the full screen content.
debugPrint('Ad showed full screen content.');
},
onAdFailedToShowFullScreenContent: (ad, err) {
// Called when the ad failed to show full screen content.
debugPrint('Ad failed to show full screen content with error: $err');
// Dispose the ad here to free resources.
ad.dispose();
},
onAdDismissedFullScreenContent: (ad) {
// Called when the ad dismissed full screen content.
debugPrint('Ad was dismissed.');
// Dispose the ad here to free resources.
ad.dispose();
},
onAdImpression: (ad) {
// Called when an impression occurs on the ad.
debugPrint('Ad recorded an impression.');
},
onAdClicked: (ad) {
// Called when a click is recorded for an ad.
debugPrint('Ad was clicked.');
},
);
إعلان صوري
يتم عرض RewardedInterstitialAd كإعلان مركّب فوق كل محتوى التطبيق
ويتم وضعه بشكل ثابت، وبالتالي لا يمكن إضافته إلى شجرة التطبيقات المصغّرة في Flutter.
يمكنك اختيار وقت عرض الإعلان من خلال استدعاء show().
تتلقّى RewardedInterstitialAd.show() مَعلمة OnUserEarnedRewardCallback، ويتم استدعاؤها
عندما يحصل المستخدم على مكافأة. احرص على تنفيذ ذلك ومكافأة المستخدم على مشاهدة الإعلان.
_rewardedInterstitialAd?.show(
onUserEarnedReward: (AdWithoutView ad, RewardItem rewardItem) {
debugPrint('Reward amount: ${rewardItem.amount}');
},
);
بعد استدعاء show()، لا يمكن إزالة Ad المعروض بهذه الطريقة
برمجيًا، ويتطلّب ذلك إدخالاً من المستخدم. يمكن عرض RewardedInterstitialAd
مرة واحدة فقط. ستؤدي الطلبات اللاحقة للعرض إلى تشغيل
onAdFailedToShowFullScreenContent.
يجب التخلص من الإعلان عندما لا تكون هناك حاجة إلى الوصول إليه. أفضل الممارسات
لموعد استدعاء dispose() هي في
عمليات الاستدعاء FullScreenContentCallback.onAdDismissedFullScreenContent وFullScreenContentCallback.onAdFailedToShowFullScreenContent.
[اختياري] التحقّق من صحة عمليات معاودة الاتصال في ميزة "التحقّق من جهة الخادم" (SSV)
يجب أن تستخدم التطبيقات التي تتطلّب بيانات إضافية في عمليات معاودة الاتصال من أجل عملية تحقّق من جهة الخادم ميزة البيانات المخصّصة في "الإعلانات مقابل مكافأة". يتم تمرير أي قيمة سلسلة
محدّدة في عنصر "إعلان مقابل مكافأة" إلى مَعلمة طلب البحث custom_data
الخاصة بمعاودة الاتصال للتحقّق من جهة الخادم. في حال عدم ضبط قيمة بيانات مخصّصة، لن تظهر قيمة مَعلمة طلب البحث custom_data في طلب معاودة الاتصال للتحقّق من صحة الخادم.
يوضّح نموذج الرمز البرمجي التالي كيفية ضبط خيارات التحقّق من صحة عرض الإعلانات على خوادم الناشرين بعد تحميل "الإعلان البيني مقابل مكافأة":
استبدِل SAMPLE_CUSTOM_DATA_STRING ببياناتك المخصّصة.
مثال كامل على GitHub
للاطّلاع على المثال الكامل، يُرجى مراجعة العرض التوضيحي لواجهة برمجة التطبيقات.