الإعلانات البينية

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

يوضح هذا الدليل كيفية دمج الإعلانات البينية في تطبيق Unity.

المتطلّبات الأساسية

أكمِل البدء. يجب أن يتم تثبيت المكوّن الإضافي Google Mobile Ads Unity على تطبيق Unity.

إنشاء إعلان بيني

تتمثل الخطوة الأولى لعرض الإعلان البيني في إنشاء عنصر InterstitialAd في نص برمجي مرفق بـ GameObject.

لتسهيل دمج الإعلانات باستخدام "محرّر Unity"، يمكنك استخدام الإصدار التجريبي من مواضع الإعلانات التجريبية الجديد.

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 عند الانتهاء من تحميل الإعلان.
OnAdFailedToLoad يتم استدعاء الحدث OnAdFailedToLoad عندما يتعذّر تحميل أحد الإعلانات. تصف المعلَمة Message نوع الإخفاق الذي حدث.
OnAdOpening يتم استدعاء هذه الطريقة عند عرض الإعلان، الذي يغطي شاشة الجهاز.
OnAdClosed ويتم استدعاء هذه الطريقة عند إغلاق الإعلان البيني بسبب نقر المستخدم على رمز الإغلاق أو استخدام زر الرجوع. يُعدّ هذا الخيار رائعًا إذا تم إيقاف الإخراج الصوتي أو حلقة اللعبة مؤقتًا في تطبيقك.

تنظيم الإعلانات البينية

عندما تنتهي من استخدام InterstitialAd، تأكَّد من استدعاء الطريقة Destroy() قبل إفلات المرجع إليها:

interstitial.Destroy();

ويؤدي هذا إلى إشعار المكوّن الإضافي بأن الكائن لم يعد مستخدمًا ويمكن استعادة الذاكرة التي يشغلها. ويؤدي عدم استدعاء هذه الطريقة إلى تسرب الذاكرة.

بعض أفضل الممارسات

وعليك مراعاة ما إذا كانت الإعلانات البينية هي النوع المناسب من الإعلانات لتطبيقك.
تحقّق الإعلانات البينية أفضل أداء في التطبيقات التي تحتوي على نقاط انتقال عادية. يتم استنتاج مثل مهمة في تطبيق، مثل مشاركة صورة أو إكمال مستوى لعبة. ونظرًا لأن المستخدم يتوقع استراحة أثناء الإجراء، سيكون من السهل عرض إعلان بيني بدون التأثير سلبًا على تجربته. تأكّد من مراعاة النقاط التي ستعرض إعلانات بينية في سير عمل تطبيقك، وكيفية عرض المستخدم للاستجابة المحتمَلة.
احرص على إيقاف الإجراء مؤقتًا عند عرض إعلان بيني.
هناك عدد من أنواع الإعلانات البينية المختلفة: الإعلانات النصية والإعلانات المصوّرة وإعلانات الفيديو وغير ذلك. من المهم التأكد من أنه عندما يعرض تطبيقك إعلانًا بينيًا، فإنه يعلّق أيضًا استخدامه لبعض الموارد للسماح للإعلان بالاستفادة منها. على سبيل المثال، عند إجراء مكالمة لعرض إعلان بيني، تأكد من إيقاف أي مخرجات صوتية يتم إنشاؤها بواسطة تطبيقك. يمكنك استئناف تشغيل الأصوات في معالج أحداث onAdClosed()، والذي سيتم استدعاءه عند انتهاء المستخدم من التفاعل مع الإعلان. بالإضافة إلى ذلك، ننصحك بإيقاف أي مهام حسابية شاقة (مثل حلقة لعبة) مؤقتًا أثناء عرض الإعلان. سيضمن ذلك عدم استجابة المستخدم لبطء الرسومات أو عدم استجابته أو الفيديو المتقطّع.
اسمح بمدّة التحميل الكافية.
تمامًا كما هو مهمة ضمان عرض الإعلانات البينية في الوقت المناسب، من المهم أيضًا التأكّد من أن المستخدم ليس مضطرًا للانتظار حتى يتم تحميله. يمكن أن يؤدي تحميل الإعلان مسبقًا من خلال الاتصال بالرقم loadAd() قبل الاستدعاء بـ show() إلى التأكد من أن تطبيقك يحتوي على إعلان بيني محمّل بالكامل عندما يكون الوقت جاهزًا لعرض إعلان واحد.
لا تغمر المستخدم بالإعلانات.
قد تكون زيادة معدّل تكرار الإعلانات البينية في تطبيقك طريقة رائعة لزيادة الأرباح، ولكن يمكن أن تؤدي أيضًا إلى انخفاض تجربة المستخدم وانخفاض نسب النقر إلى الظهور. تأكّد من عدم مقاطعة المستخدمين كثيرًا لأنهم لن يتمكنوا من الاستمتاع باستخدام تطبيقك بعد ذلك.

مراجع إضافية

النماذج

قصص النجاح