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

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

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

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

  • الإصدار 8.0.0 أو إصدار أحدث من حزمة "SDK لإعلانات Google على الأجهزة الجوّالة".
  • أكمِل دليل البدء.

الاختبار دائمًا باستخدام الإعلانات الاختبارية

عند إنشاء تطبيقاتك واختبارها، احرص على استخدام إعلانات تجريبية بدلاً من الإعلانات النهائية المباشرة. وقد يؤدي عدم الالتزام بذلك إلى تعليق حسابك.

أسهل طريقة لتحميل الإعلانات الاختبارية هي استخدام رقم التعريف المخصّص للوحدة الإعلانية الاختبارية للإعلانات البينية على نظام التشغيل iOS:
ca-app-pub-3940256099942544/4411468910

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

لمزيد من المعلومات عن آلية عمل الإعلانات الاختبارية لحزمة تطوير البرامج (SDK) لعرض الإعلانات للأجهزة الجوّالة، اطّلِع على اختبار الإعلانات.

التنفيذ

الخطوات الأساسية لدمج الإعلانات البينية هي:

  1. حمِّل إعلانًا.
  2. التسجيل لتلقّي طلبات معاودة الاتصال
  3. يمكنك عرض الإعلان والتعامل مع حدث المكافأة.

تحميل إعلان

يتم تحميل الإعلان باستخدام طريقة loadWithAdUnitID:request:completionHandler: الثابتة في الفئة GADInterstitialAd. تتطلب طريقة التحميل رقم تعريف الوحدة الإعلانية وعنصر GADRequest ومعالج الإكمال الذي يتم استدعاءه عند نجاح تحميل الإعلان أو تعذُّر تحميله. يتوفّر كائن GADInterstitialAd الذي تم تحميله كمَعلمة في معالِج الإكمال. يوضّح المثال أدناه كيفية تحميل GADInterstitialAd في الصف ViewController.

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()

    do {
      interstitial = try await GADInterstitialAd.load(
        withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GADInterstitialAd *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
                              request:request
                    completionHandler:^(GADInterstitialAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
      return;
    }
    self.interstitial = ad;
  }];
}

التسجيل لتلقّي طلبات معاودة الاتصال

لتلقّي إشعارات بشأن أحداث العروض التقديمية، يجب تطبيق بروتوكول GADFullScreenContentDelegate وتعيينه على السمة fullScreenContentDelegate في الإعلان المعروض. يتعامل بروتوكول GADFullScreenContentDelegate مع عمليات الاستدعاء عندما يتم عرض الإعلان بنجاح أو غير ناجح أو عند رفضه. توضّح الرمز التالي كيفية تنفيذ البروتوكول وتعيينه للإعلان:

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()

    do {
      interstitial = try await GADInterstitialAd.load(
        withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
      interstitial?.fullScreenContentDelegate = self
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }

  /// Tells the delegate that the ad failed to present full screen content.
  func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
    print("Ad did fail to present full screen content.")
  }

  /// Tells the delegate that the ad will present full screen content.
  func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad will present full screen content.")
  }

  /// Tells the delegate that the ad dismissed full screen content.
  func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad did dismiss full screen content.")
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController () <GADFullScreenContentDelegate>

@property(nonatomic, strong) GADInterstitialAd *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
                              request:request
                    completionHandler:^(GADInterstitialAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
      return;
    }
    self.interstitial = ad;
    self.interstitial.fullScreenContentDelegate = self;
  }];
}

/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
    NSLog(@"Ad did fail to present full screen content.");
}

/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Ad will present full screen content.");
}

/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
  NSLog(@"Ad did dismiss full screen content.");
}

GADInterstitialAd هو عنصر يُستخدم لمرة واحدة. وهذا يعني أنه بعد عرض إعلان بيني، لا يمكن عرضه مرة أخرى. ومن أفضل الممارسات تحميل إعلان بيني آخر بطريقة adDidDismissFullScreenContent: على GADFullScreenContentDelegate حتى يبدأ الإعلان البيني التالي في التحميل فور إغلاق الإعلان السابق.

عرض الإعلان

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

Swift

@IBAction func doSomething(_ sender: Any) {
  guard let interstitial = interstitial else {
    return print("Ad wasn't ready.")
  }

  // The UIViewController parameter is an optional.
  interstitial.present(fromRootViewController: nil)
}

Objective-C

- (IBAction)doSomething:(id)sender {
  if (self.interstitial) {
    // The UIViewController parameter is nullable.
    [self.interstitial presentFromRootViewController:nil];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

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

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

مراجع إضافية

أمثلة على GitHub

  • مثال على الإعلانات البينية: Swift | Goal-C

فيديوهات تعليمية من Mobile Ads Garage

قصص النجاح

الخطوات التالية