الإعلانات البينية هي إعلانات بملء الشاشة تغطي واجهة التطبيق إلى أن يغلقها المستخدم. وعادةً ما تظهر هذه الإعلانات في نقاط الانتقال العادية في تدفق التطبيق، مثلاً بين الأنشطة أو أثناء فترة الإيقاف المؤقت بين المستويات في الألعاب. عندما يعرض تطبيق إعلانًا بينيًا، يكون لدى المستخدم خيار النقر على الإعلان والانتقال إلى وجهته أو إغلاقه والعودة إلى التطبيق. دراسة حالة.
يوضّح لك هذا الدليل كيفية دمج "الإعلانات البينية" في تطبيقات Android وiOS باستخدام حزمة SDK لإعلانات Google على الأجهزة الجوّالة الخاصة بتطبيقات ++C.
المتطلبات الأساسية
- إكمال الخطوات الواردة في مقالة البدء
- (نظام التشغيل Android فقط) الإلمام بالعمل مع مراجع JNI
jobject(راجِع مقالة نصائح حول JNI في Android)
الاختبار دائمًا باستخدام الإعلانات الاختبارية
عند إنشاء تطبيقاتك واختبارها، احرص على استخدام الإعلانات الاختبارية بدلاً من الإعلانات الفعلية. وقد يؤدي عدم إجراء ذلك إلى تعليق حسابك.
أسهل طريقة لتحميل الإعلانات الاختبارية هي استخدام رقم تعريف الوحدة الإعلانية الاختبارية المخصّص للإعلانات البينية، والذي يختلف حسب منصة الجهاز:
- نظام تشغيل Android:
ca-app-pub-3940256099942544/1033173712 - نظام تشغيل iOS:
ca-app-pub-3940256099942544/4411468910
تم إعداد هذه الأرقام خصيصًا لعرض إعلانات اختبارية لكل طلب، ويمكنك استخدامها في تطبيقاتك أثناء الترميز والاختبار وتصحيح الأخطاء. ما عليك سوى استبدالها برقم تعريف الوحدة الإعلانية الخاص بك قبل نشر تطبيقك.
لمزيد من المعلومات عن آلية عمل الإعلانات الاختبارية في حزمة SDK لإعلانات الأجهزة الجوّالة، يُرجى الاطّلاع على مقالة الإعلانات الاختبارية.
التنفيذ
الخطوات الرئيسية لدمج "الإعلانات البينية" هي:
- تحميل إعلان
- تسجيل عمليات معاودة الاتصال
- عرض الإعلان والتعامل مع أحداث مراحل نشاطه
إعداد InterstitialAd
تُعرض "الإعلانات البينية" في عناصر InterstitialAd، لذا فإنّ الخطوة الأولى نحو دمج "الإعلانات البينية" في تطبيقك هي إنشاء عنصر InterstitialAd وإعداده.
أضِف العنوان التالي إلى رمز ++C في تطبيقك:
#include "firebase/gma/interstial_ad.h"
أنشِئ عنصر
InterstitialAdوأعلِن عنه:firebase::gma::InterstitialAd* interstitial_ad; interstitial_ad = new firebase::gma::InterstitialAd();
أعِدّ مثيل
InterstitialAdباستخدام طريقة التحويل إلى النوعAdParentلعرض العنصر الرئيسي. عرض العنصر الرئيسي هو مرجع JNIjobjectإلى AndroidActivityأو مؤشر إلى iOSUIView.// my_ad_parent is a jobject reference to an Android Activity or // a pointer to an iOS UIView. firebase::gma::AdParent ad_parent = static_cast<firebase::gma::AdParent>(my_ad_parent); firebase::Future<void> result = interstitial_ad->Initialize(ad_parent);كبديل للاحتفاظ بالنتيجة المستقبلية كمتغيّر، يمكنك التحقّق بشكل دوري من حالة عملية الإعداد من خلال استدعاء
InitializeLastResult()على عنصرInterstitialAd. قد يكون ذلك مفيدًا لتتبُّع عملية الإعداد في حلقة اللعبة العامة.// Monitor the status of the future in your game loop: firebase::Future<void> result = interstitial_ad->InitializeLastResult(); if (result.status() == firebase::kFutureStatusComplete) { // Initialization completed. if(future.error() == firebase::gma::kAdErrorCodeNone) { // Initialization successful. } else { // An error has occurred. } } else { // Initialization on-going. }
لمزيد من المعلومات عن استخدام firebase::Future، يُرجى الاطّلاع على
استخدام النتائج المستقبلية لمراقبة حالة اكتمال استدعاءات الطُرق.
تحميل إعلان
يتم تحميل الإعلان باستخدام طريقة LoadAd() على عنصر InterstitialAd. تتطلّب طريقة التحميل إعداد عنصر InterstitialAd، وأن يكون لديك رقم تعريف الوحدة الإعلانية وعنصر AdRequest. يتم عرض firebase::Future يمكنك استخدامه لمراقبة حالة عملية التحميل ونتيجتها.
يوضّح الرمز التالي كيفية تحميل إعلان بعد إعداد InterstitialAd بنجاح:
firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = interstitial_ad->LoadAd(interstitial_ad_unit_id, ad_request);
تسجيل عمليات معاودة الاتصال
عليك توسيع فئة FullScreenContentListener لتلقّي إشعارات بعرض "الإعلانات البينية" وأحداث مراحل نشاطها. يمكن تسجيل فئة
FullScreenContentListener المخصّصة الفرعية من خلال طريقة
InterstitialAd::SetFullScreenContentListener()، وستتلقّى
عمليات معاودة الاتصال عندما يتم عرض الإعلان بنجاح أو بدون نجاح، وكذلك عند
إغلاقه.
يوضّح الرمز التالي كيفية توسيع الفئة وتعيينها للإعلان:
class ExampleFullScreenContentListener : public firebase::gma::FullScreenContentListener { public: ExampleFullScreenContentListener() {} void OnAdClicked() override { // This method is invoked when the user clicks the ad. } void OnAdDismissedFullScreenContent() override { // This method is invoked when the ad dismisses full screen content. } void OnAdFailedToShowFullScreenContent(const AdError& error) override { // This method is invoked when the ad failed to show full screen content. // Details about the error are contained within the AdError parameter. } void OnAdImpression() override { // This method is invoked when an impression is recorded for an ad. } void OnAdShowedFullScreenContent() override { // This method is invoked when the ad showed its full screen content. } }; ExampleFullScreenContentListener* full_screen_content_listener = new ExampleFullScreenContentListener(); interstitial_ad->SetFullScreenContentListener(full_screen_content_listener);
InterstitialAd هو عنصر يُستخدم لمرة واحدة. وهذا يعني أنّه بعد عرض "إعلان بيني"، لا يمكن عرضه مرة أخرى. من أفضل الممارسات تحميل "إعلان بيني" آخر في طريقة OnAdDismissedFullScreenContent() في FullScreenContentListener، بحيث يبدأ تحميل "الإعلان البيني" التالي فور إغلاق الإعلان السابق.
عرض الإعلان
يجب عرض "الإعلانات البينية" أثناء فترات التوقف العادية في تدفق التطبيق. ومن الأمثلة الجيدة على ذلك بين مستويات اللعبة أو بعد أن يكمل المستخدم مهمة ما.
على الرغم من أنّه يمكن استخدام FullScreenContentListener لتحديد وقت عرض الإعلان لمحتواه بملء الشاشة، فإنّ النتيجة المستقبلية التي تعرضها Show() ستشير أيضًا إلى وقت عرض الإعلان بنجاح.
firebase::Future<void> result = interstitial_ad->Show();
أفضل الممارسات
- عليك تحديد ما إذا كانت "الإعلانات البينية" هي نوع الإعلان المناسب لتطبيقك.
- تحقّق "الإعلانات البينية" أفضل أداء في التطبيقات التي تتضمّن نقاط انتقال عادية. ويتم إنشاء نقطة انتقال عند إكمال مهمة في التطبيق، مثل مشاركة صورة أو إنهاء مستوى في اللعبة. بما أنّ المستخدم يتوقّع فترة استراحة من الحدث، فمن السهل عرض "إعلان بيني" بدون التأثير في تجربته. عليك تحديد نقاط عرض "الإعلانات البينية" في سير عمل تطبيقك وكيف من المرجّح أن يتفاعل المستخدم معها.
- تذكَّر إيقاف الحدث مؤقتًا عند عرض "إعلان بيني".
- هناك العديد من الأنواع المختلفة من "الإعلانات البينية": الإعلانات النصية والإعلانات المصوّرة وإعلانات الفيديو وغيرها. من المهم التأكّد من أنّ تطبيقك يعلّق أيضًا استخدام بعض الموارد عندما يعرض "إعلانًا بينيًا"، وذلك للسماح للإعلان بالاستفادة منها. على سبيل المثال، عند إجراء طلب لعرض "إعلان بيني"، احرص على إيقاف أي مصدر إخراج للصوت ينتجه تطبيقك مؤقتًا. يمكنك استئناف تشغيل الأصوات في طريقة
OnAdDismissedFullScreenContentفيFullScreenContentListenerالذي ثبَّته، وسيتم استدعاؤه عندما ينتهي المستخدم من التفاعل مع الإعلان. بالإضافة إلى ذلك، ننصحك بإيقاف أي مهام حوسبة مكثّفة مؤقتًا (مثل حلقة اللعبة) أثناء عرض الإعلان. سيضمن ذلك عدم مواجهة المستخدم لرسومات بطيئة أو غير متجاوبة أو فيديو متقطّع. - يجب السماح بوقت تحميل كافٍ.
- من المهم عرض "الإعلانات البينية" في وقت مناسب، ومن المهم أيضًا التأكّد من عدم اضطرار المستخدم إلى الانتظار حتى يتم تحميلها. يمكن أن يضمن تحميل الإعلان مسبقًا قبل أن تنوي عرضه أن يكون لدى تطبيقك "إعلان بيني" محمل بالكامل وجاهزًا عندما يحين وقت عرض إعلان.
- عدم عرض كمّ هائل من الإعلانات للمستخدمين
- زيادة معدّل تكرار "الإعلانات البينية" في تطبيقك قد تبدو ملائمة لزيادة الإيرادات، لكنّها قد تؤدي أيضًا إلى تدهور تجربة المستخدم وانخفاض نسب النقر إلى الظهور. يجب الحرص على عدم مقاطعة تجربة المستخدمين بشكل متكرر بما يحول دون استمتاعهم بتطبيقك.
- عدم استخدام النتيجة المستقبلية لاكتمال التحميل لعرض "الإعلان البيني"
- يمكن أن يؤدي ذلك إلى ترك انطباع سيئ لدى المستخدم. بدلاً من ذلك، عليك تحميل الإعلان مسبقًا قبل أن تحتاج إلى عرضه.
مراجع إضافية
مثال على GitHub
- عرض رمز المصدر لنموذج تطبيق البدء السريع في GitHub.
برامج تعليمية على الفيديو في Mobile Ads Garage
قصص النجاح
الخطوات التالية
- إذا لم يسبق لك ذلك، أنشِئ وحدتك الإعلانية البينية الخاصة في الـ AdMob UI.
- تعرَّف على استهداف الإعلانات و إرشادات "الإعلانات البينية".