الإعلانات البينية هي إعلانات بملء الشاشة تغطي واجهة أحد التطبيقات إلى أن يغلقها المستخدم. وعادةً ما يتم عرضها في نقاط انتقال عادية في تدفق تطبيق ما، مثل بين الأنشطة أو أثناء التوقف المؤقت بين المستويات في لعبة. عندما يعرض التطبيق إعلانًا بينيًا، يكون لدى المستخدم خيار إما النقر على الإعلان والمتابعة إلى وجهته أو إغلاقه والعودة إلى التطبيق. دراسة حالة.
يوضّح لك هذا الدليل كيفية دمج الإعلانات البينية في تطبيقات Android وiOS باستخدام حزمة SDK لإعلانات +Google للجوّال ++C.
المتطلبات الأساسية
- أكمِل البدء.
- (نظام التشغيل Android فقط) أعرف كيفية التعامل مع مراجع JNI
jobject
(راجِع نصائح Android JNI).
الاختبار دائمًا باستخدام الإعلانات الاختبارية
عند إنشاء تطبيقاتك واختبارها، تأكد من استخدام إعلانات اختبارية بدلاً من إعلانات إنتاجية مباشرة. وقد يؤدي عدم الالتزام بذلك إلى تعليق حسابك.
أسهل طريقة لتحميل الإعلانات الاختبارية هي استخدام رقم تعريف الوحدة الإعلانية الاختبارية المخصصة لنا للإعلانات البينية، والذي يختلف باختلاف النظام الأساسي للجهاز:
- نظام تشغيل 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.
برامج فيديو تعليمية حول مرآب إعلانات الجوّال
قصص النجاح
الخطوات التالية
- أنشئ وحدتك الإعلانية البينية البينية إذا لم تكن قد فعلت ذلك من قبل في واجهة مستخدم AdMob.
- اطّلِع على مزيد من المعلومات عن استهداف الإعلانات وإرشادات الإعلانات البينية.