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

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

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

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

أكمل ابدأ . من المفترض أن يحتوي تطبيق Unity على المكوّن الإضافي Google Mobile Ads Unity الذي تم استيراده بالفعل.

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

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

لتسهيل تكامل الإعلانات باستخدام Unity Editor ، جرب الإصدار التجريبي الجديد من Ad Placements .

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 += HandleOnAdOpened;
    // Called when the ad is closed.
    this.interstitial.OnAdClosed += HandleOnAdClosed;
    // Called when the ad click caused the user to leave the application.
    this.interstitial.OnAdLeavingApplication += HandleOnAdLeavingApplication;

    // 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 HandleOnAdOpened(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleAdOpened event received");
}

public void HandleOnAdClosed(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleAdClosed event received");
}

public void HandleOnAdLeavingApplication(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleAdLeavingApplication 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 يتم استدعاء هذه الطريقة عند إغلاق الإعلان البيني بسبب نقر المستخدم على أيقونة الإغلاق أو استخدام زر الرجوع. إذا أوقف تطبيقك مؤقتًا إخراج الصوت أو حلقة اللعبة ، فهذا مكان رائع لاستئنافه.
OnAdLeavingApplication يتم استدعاء هذه الطريقة بعد OnAdOpened ، عندما يقوم المستخدم بالنقر فوق فتح تطبيق آخر (مثل متجر Google Play) ، مما يؤدي إلى خلفية التطبيق الحالي.

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

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

interstitial.Destroy();

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

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

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

مصادر إضافية

عينات

  • مثال HelloWorld - الحد الأدنى من تنفيذ جميع أشكال الإعلانات

قصص نجاح