الإعلانات البينية هي إعلانات بملء الشاشة تغطي واجهة التطبيق المضيف. وعادةً ما تظهر هذه الإعلانات في نقاط انتقال مناسبة خلال مسار عرض التطبيق، مثلاً أثناء فترة الإيقاف المؤقت بين المستويات في الألعاب. عندما يعرض أحد التطبيقات إعلانًا بينيًا، يمكن للمستخدم النقر على الإعلان ومواصلة الانتقال إلى وجهته أو إغلاقه والعودة إلى التطبيق. دراسة حالة
يوضّح هذا الدليل كيفية دمج الإعلانات البينية في تطبيق Unity.
المتطلبات الأساسية
- أكمِل دليل البدء.
إنشاء إعلان بيني
الخطوة الأولى لعرض إعلان بيني هي إنشاء عنصر InterstitialAd
في نص برمجي مرفق بعنصر GameObject
.
using GoogleMobileAds.Api;
...
private InterstitialAd interstitial;
private void RequestInterstitial()
{
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-3940256099942544/1033173712";
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-3940256099942544/4411468910";
#else
string adUnitId = "unexpected_platform";
#endif
// Initialize an InterstitialAd.
this.interstitial = new InterstitialAd(adUnitId);
}
يحتوي مُنشئ InterstitialAd
على المَعلمة التالية:
adUnitId
: رقم تعريف الوحدة الإعلانية في AdMob التي يجب أنInterstitialAd
تحمّل الإعلانات منها.
من المهمّ ملاحظة كيفية استخدام الوحدات الإعلانية المختلفة، استنادًا إلى المنصّة. ستحتاج إلى استخدام وحدة إعلانية على iOS لتقديم طلبات الإعلانات على iOS و وحدة إعلانية على Android لتقديم الطلبات على Android.
إجراء الاختبار دائمًا باستخدام إعلانات اختبارية
يحتوي نموذج الرمز أعلاه على رقم تعريف وحدة إعلانية، ويمكنك طلب الإعلانات باستخدامه. تمّ إعداده خصيصًا لعرض إعلانات اختبارية بدلاً من إعلانات الإصدار العلني لكلّ طلب، ما يجعله آمنًا للاستخدام.
ومع ذلك، بعد تسجيل تطبيق في واجهة مستخدم AdMob وإنشاء معرّفات الوحدات الإعلانية لاستخدامها في تطبيقك، عليك ضبط جهازك على أنّه جهاز اختباري صراحةً أثناء مرحلة التطوير. هذا أمر مهم للغاية. إنّ الاختبار باستخدام إعلانات حقيقية (حتى إذا لم تنقر عليها مطلقًا) يخالف سياسة AdMob ويمكن أن يؤدي إلى تعليق حسابك. اطّلِع على الإعلانات التجريبية للحصول على معلومات عن كيفية التأكّد من ظهور إعلانات تجريبية دائمًا عند التطوير.
تحميل إعلان
بعد إنشاء InterstitialAd
، تكون الخطوة التالية هي تحميل إعلان.
يتم ذلك باستخدام طريقة loadAd()
في فئة InterstitialAd
. تأخذ الدالّة
مَعلمة AdRequest
التي تحتوي على معلومات وقت التشغيل (مثل معلومات
الاستهداف) عن طلب إعلان واحد.
في ما يلي مثال يوضّح كيفية تحميل إعلان:
using GoogleMobileAds.Api; ... private InterstitialAd interstitial; private void RequestInterstitial() { #if UNITY_ANDROID string adUnitId = "ca-app-pub-3940256099942544/1033173712"; #elif UNITY_IPHONE string adUnitId = "ca-app-pub-3940256099942544/4411468910"; #else string adUnitId = "unexpected_platform"; #endif // Initialize an InterstitialAd. this.interstitial = new InterstitialAd(adUnitId); // Create an empty ad request. AdRequest request = new AdRequest.Builder().Build(); // Load the interstitial with the request. this.interstitial.LoadAd(request); }
عرض الإعلان
يجب عرض الإعلانات البينية أثناء الفواصل الإعلانية الطبيعية في مسار عرض التطبيق.
ومثال جيد على ذلك هو الفواصل بين مستويات اللعبة أو بعد إكمال المستخدم لمهمة معيّنة.
لعرض إعلان بيني، استخدِم الطريقة isLoaded()
للتأكّد من اكتمالتحميله، ثم استخدِم show()
.
يمكن عرض الإعلان البيني من مثال الرمز البرمجي السابق في نهاية اللعبة، كما هو موضّح أدناه.
private void GameOver()
{
if (this.interstitial.IsLoaded()) {
this.interstitial.Show();
}
}
أحداث الإعلانات
لمزيد من تخصيص سلوك إعلانك، يمكنك الربط بعدد من
الأحداث في دورة حياة الإعلان: التحميل والفتح والإغلاق وما إلى ذلك. يمكنك الاستماع إلى
هذه الأحداث من خلال تسجيل مفوّض للEventHandler
المناسب، كما هو موضح أدناه.
using GoogleMobileAds.Api; ... private InterstitialAd interstitial; private void RequestInterstitial() { #if UNITY_ANDROID string adUnitId = "ca-app-pub-3940256099942544/1033173712"; #elif UNITY_IPHONE string adUnitId = "ca-app-pub-3940256099942544/4411468910"; #else string adUnitId = "unexpected_platform"; #endif // Initialize an InterstitialAd. this.interstitial = new InterstitialAd(adUnitId); // Called when an ad request has successfully loaded. this.interstitial.OnAdLoaded += HandleOnAdLoaded; // Called when an ad request failed to load. this.interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad; // Called when an ad is shown. this.interstitial.OnAdOpening += HandleOnAdOpening; // Called when the ad is closed. this.interstitial.OnAdClosed += HandleOnAdClosed; // Create an empty ad request. AdRequest request = new AdRequest.Builder().Build(); // Load the interstitial with the request. this.interstitial.LoadAd(request); } public void HandleOnAdLoaded(object sender, EventArgs args) { MonoBehaviour.print("HandleAdLoaded event received"); } public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) { MonoBehaviour.print("HandleFailedToReceiveAd event received with message: " + args.Message); } public void HandleOnAdOpening(object sender, EventArgs args) { MonoBehaviour.print("HandleAdOpening event received"); } public void HandleOnAdClosed(object sender, EventArgs args) { MonoBehaviour.print("HandleAdClosed event received"); }
يحتوي الحدث OnAdFailedToLoad
على وسيطات أحداث خاصة. ويمرّر مثيلًا من HandleAdFailedToLoadEventArgs
مع Message
يصف الخطأ:
public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
print("Interstitial failed to load: " + args.Message);
// Handle the ad failed to load event.
}
حدث الإعلان | الوصف |
---|---|
OnAdLoaded |
يتم تنفيذ الحدث OnAdLoaded عند انتهاء loading
تحميل إعلان. |
OnAdFailedToLoad |
يتمّ استدعاء الحدث OnAdFailedToLoad عند تعذُّر loading loading أحد الإعلانات. تصف المَعلمة Message نوع الخطأ الذي
حدث. |
OnAdOpening |
يتمّ استدعاء هذه الطريقة عند عرض الإعلان الذي يغطي شاشة الجهاز. |
OnAdClosed |
يتمّ استدعاء هذه الطريقة عند إغلاق الإعلان البيني بسبب نقر المستخدِم على رمز الإغلاق أو استخدام زر الرجوع. إذا كان تطبيقك أوقف مؤقتًا إخراج الصوت أو حلقة اللعب، يمكنك استخدام هذا الإجراء لاستئناف تشغيله. |
إخلاء مساحة من الإعلانات البينية
عند الانتهاء من استخدام InterstitialAd
، احرص على استدعاء Destroy()
الطريقة قبل إزالة الإشارة إليها:
interstitial.Destroy();
يُعلم هذا المكوّن الإضافي بأنّه لم يعُد يتم استخدام العنصر وأنّه يمكن استرداد الذاكرة التي يشغلها. يؤدي عدم استدعاء هذه الطريقة إلى تسرب الذاكرة.
بعض أفضل الممارسات
- ننصحك بالتفكير في ما إذا كانت الإعلانات البينية هي النوع المناسب من الإعلانات لتطبيقك.
- تُحقّق الإعلانات البينية أفضل أداء في التطبيقات التي تتضمّن نقاط انتقال طبيعية. ويحدث ذلك عند إكمال مهمة في التطبيق، مثل مشاركة صورة أو إكمال أحد مستويات اللعبة. ولأنّ المستخدم يتوقّع حدوث استراحة في المحتوى، من السهل عرض إعلان بيني بدون التأثير في تجربته. احرص على تحديد النقاط التي ستظهر فيها الإعلانات البينية في سير عمل تطبيقك وكيفية تفاعل المستخدمين على الأرجح مع هذه الإعلانات.
- تذكَّر إيقاف الإجراء مؤقتًا عند عرض إعلان بيني.
- هناك العديد من أنواع الإعلانات البينية المختلفة: الإعلانات النصية والإعلانات المصوّرة
وإعلانات الفيديو وغيرها. من المهم التأكّد من أنّ تطبيقك يوقف أيضًا استخدام بعض الموارد عندما يعرض إعلانًا
بينيًا للسماح للإعلان بالاستفادة منها. على سبيل المثال، عند إجراء طلب لعرض
إعلان بيني، احرص على إيقاف مؤقتًا لأي إخراج صوتي يُنشئه تطبيقك.
يمكنك استئناف تشغيل الأصوات في معالِج حدث
onAdClosed()
الذي سيتم استدعاؤه عند انتهاء المستخدم من التفاعل مع الإعلان. بالإضافة إلى ذلك، ننصحك بالتوقف مؤقتًا عن أي مهام حسابية مكثفة (مثل حلقة لعبة) أثناء عرض الإعلان. سيضمن ذلك عدم تعرّض المستخدمين لرسومات بطيئة أو لا تستجيب أو فيديو متقطّع. - يجب الانتظار لفترة كافية لتحميل المحتوى.
- كما أنّه من المهم التأكّد من عرض الإعلانات البينية في وقت مناسب، من المهم أيضًا التأكّد من أنّ المستخدم لا ينتظر loading. من خلال تحميل الإعلان مسبقًا من خلال طلب
loadAd()
قبل أن تنوي طلبshow()
، يمكنك ضمان أنّ تطبيقك يحتوي على إعلان بيني جاهز مُحمَّل بالكامل عندما يحين وقت عرضه. - لا تُغرق المستخدم بالإعلانات.
- على الرغم من أنّ زيادة معدّل تكرار الإعلانات البينية في تطبيقك قد تبدو كطريقة رائعة لزيادة الأرباح، إلا أنّها يمكن أن تؤدي أيضًا إلى تدهور تجربة المستخدم وانخفاض معدّلات النقر إلى الظهور. تأكَّد من عدم انقطاع عملية استخدام المستخدمين لتطبيقك بشكل متكرر
مراجع إضافية
نماذج
- مثال HelloWorld الحد الأدنى من التنفيذ لجميع أشكال الإعلانات