إعلانات مدمجة مع المحتوى

الإعلانات المدمجة مع المحتوى هي مواد عرض إعلانات يتم عرضها للمستخدمين من خلال مكوّنات واجهة المستخدم المضمّنة في النظام الأساسي. يتم عرضها باستخدام نفس الفئات التي تستخدمها بالفعل في مخططات القصة الخاصة بك، ويمكن تنسيقها لتتناسب مع التصميم المرئي لتطبيقك.

عند تحميل إعلان مدمج مع المحتوى، يتلقّى تطبيقك عنصر إعلان يحتوي على مواد العرض الخاصة به، وسيتحمل عندئذٍ التطبيق مسؤولية عرضها، بدلاً من حزمة "SDK لإعلانات Google على الأجهزة الجوّالة".

بوجهٍ عام، هناك جزءان لتنفيذ الإعلانات المدمجة مع المحتوى بنجاح: تحميل إعلان باستخدام حزمة تطوير البرامج (SDK) ثم عرض محتوى الإعلان في تطبيقك.

توضّح هذه الصفحة كيفية استخدام حزمة تطوير البرامج (SDK) لتحميل الإعلانات المدمجة مع المحتوى.

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

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

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

أسهل طريقة لتحميل الإعلانات الاختبارية هي استخدام رقم تعريف الوحدة الإعلانية الاختبارية المخصص للإعلانات المدمجة مع المحتوى على iOS:

ca-app-pub-3940256099942544/3986624511

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

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

تحميل الإعلانات

يتم تحميل الإعلانات المدمجة مع المحتوى من خلال فئة GADAdLoader، التي ترسل الرسائل إلى المفوَّضين وفقًا لبروتوكول GADAdLoaderDelegate.

إعداد أداة تحميل الإعلانات

قبل أن تتمكّن من تحميل إعلان، عليك إعداد أداة تحميل الإعلانات. يوضّح الرمز التالي طريقة إعداد GADAdLoader:

Swift

adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    rootViewController: self,
    adTypes: [ .native ],
    options: [ ... ad loader options objects ... ])
adLoader.delegate = self

Objective-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;

ستحتاج إلى رقم تعريف وحدة إعلانية (يمكنك استخدام رقم تعريف الاختبار) وثابت لتمريره في مصفوفة adTypes لتحديد الأشكال المدمجة مع المحتوى التي تريد طلبها وأي خيارات تريد ضبطها في مَعلمة options. ويمكن العثور على قائمة بالقيم المحتملة للمَعلمة options في صفحة إعداد خيارات الإعلانات المدمجة مع المحتوى.

يجب أن تحتوي المصفوفة adTypes على هذا العنصر الثابت :

تنفيذ تفويض أداة تحميل الإعلانات

يحتاج المفوَّض إلى أداة تحميل الإعلانات إلى تنفيذ بروتوكولات خاصة بنوع إعلانك. بالنسبة إلى الإعلانات المدمجة مع المحتوى، يتضمن بروتوكول GADNativeAdLoaderDelegate رسالة يتم إرسالها إلى المفوَّض عند تحميل إعلان مدمج مع المحتوى.

Swift

public func adLoader(_ adLoader: GADAdLoader,
            didReceive nativeAd: GADNativeAd)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd;

طلب إدراج الإعلانات

بعد إعداد GADAdLoader، يمكنك استدعاء طريقة loadRequest: لطلب إعلان:

Swift

adLoader.load(GADRequest())

Objective-C

[self.adLoader loadRequest:[GADRequest request]];

تقبل الطريقة loadRequest: في GADAdLoader كائنات GADRequest نفسها لإعلانات البانر والإعلانات البينية. يمكنك استخدام كائنات الطلب لإضافة معلومات الاستهداف، تمامًا كما تفعل مع أنواع الإعلانات الأخرى.

تحميل إعلانات متعددة (اختياري)

لتحميل إعلانات متعدّدة في طلب واحد، عليك ضبط كائن GADMultipleAdsAdLoaderOptions عند إعداد GADAdLoader.

Swift

let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    rootViewController: self,
    adTypes: [ .native ],
    options: [ multipleAdOptions ])

Objective-C

GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
    [[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ multipleAdsOptions ]];

الحد الأقصى لعدد الإعلانات لكل طلب هو خمسة، ولا يمكن ضمان أن تعرض حزمة تطوير البرامج (SDK) العدد الدقيق للإعلانات المطلوبة.

ستختلف "إعلانات Google" المعروضة عن بعضها البعض، على الرغم من أنّه ليس من المضمون أن تكون الإعلانات الفريدة من المستودع الإعلاني المحجوزة أو المشترين التابعين لجهات خارجية.

لا تستخدم الفئة GADMultipleAdsAdLoaderOptions إذا كنت تستخدم التوسط، لأن طلبات الإعلانات المتعددة المدمجة مع المحتوى لا تعمل حاليًا مع أرقام تعريف الوحدات الإعلانية التي تم إعدادها للتوسط.

جارٍ تحديد وقت انتهاء التحميل

بعد اتصال أحد التطبيقات بـ loadRequest:، يمكنه الحصول على نتائج الطلب من خلال الاتصالات لتنفيذ ما يلي:

سينتج عن طلب إعلان واحد استدعاء واحد لإحدى هذه الطرق.

سيؤدي طلب إنشاء إعلانات متعددة إلى معاودة الاتصال مرة واحدة على الأقل بالطرق الواردة أعلاه، ولكن ليس أكثر من الحد الأقصى لعدد الإعلانات المطلوبة.

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

Swift

class ViewController: UIViewController, GADNativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
    multipleAdOptions.numberOfAds = 5;
    adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
        rootViewController: self,
        adTypes: [ .native ],
        options: [ multipleAdOptions ])

    adLoader.delegate = self
    adLoader.load(GADRequest())
  }

  func adLoader(_ adLoader: GADAdLoader,
       didReceive nativeAd: GADNativeAd) {
    // A native ad has loaded, and can be displayed.
  }

  func adLoaderDidFinishLoading(_ adLoader: GADAdLoader) {
    // The adLoader has finished loading ads, and a new request can be sent.
  }

}

Objective-C

@interface ViewController () <GADNativeAdLoaderDelegate, GADVideoControllerDelegate>
@property(nonatomic, strong) GADAdLoader *adLoader;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
      [[GADMultipleAdsAdLoaderOptions alloc] init];
  multipleAdsOptions.numberOfAds = 5;
  self.adLoader = [[GADAdLoader alloc]
        initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
      rootViewController:rootViewController
                 adTypes:@[ GADAdLoaderAdTypeNative ]
                 options:@[ multipleAdsOptions ]];

  self.adLoader.delegate = self;
  [self.adLoader loadRequest:[GADRequest request]];
}

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd {
  // A native ad has loaded, and can be displayed.
}

- (void)adLoaderDidFinishLoading:(GADAdLoader *) adLoader {
  // The adLoader has finished loading ads, and a new request can be sent.
}

@end

معالجة الطلبات التي تعذّر تنفيذها

تعمل البروتوكولات أعلاه على توسيع بروتوكول GADAdLoaderDelegate الذي يحدد الرسالة التي يتم إرسالها عند تعذُّر تحميل الإعلانات.

Swift

public func adLoader(_ adLoader: GADAdLoader,
    didFailToReceiveAdWithError error: NSError)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didFailToReceiveAdWithError:(NSError *)error;

تلقّي إشعارات بشأن أحداث الإعلانات المدمجة مع المحتوى

لتلقّي إشعارات بالأحداث ذات الصلة بتفاعلات الإعلانات المدمجة مع المحتوى، يجب ضبط الموقع المفوَّض للإعلان المدمج مع المحتوى:

Swift

nativeAd.delegate = self

Objective-C

nativeAd.delegate = self;

بعد ذلك، نفِّذ السمة GADNativeAdDelegate لتلقّي المكالمات المفوَّضة التالية:

Swift

func nativeAdDidRecordImpression(_ nativeAd: GADNativeAd) {
  // The native ad was shown.
}

func nativeAdDidRecordClick(_ nativeAd: GADNativeAd) {
  // The native ad was clicked on.
}

func nativeAdWillPresentScreen(_ nativeAd: GADNativeAd) {
  // The native ad will present a full screen view.
}

func nativeAdWillDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad will dismiss a full screen view.
}

func nativeAdDidDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad did dismiss a full screen view.
}

func nativeAdWillLeaveApplication(_ nativeAd: GADNativeAd) {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

Objective-C

- (void)nativeAdDidRecordImpression:(GADNativeAd *)nativeAd {
  // The native ad was shown.
}

- (void)nativeAdDidRecordClick:(GADNativeAd *)nativeAd {
  // The native ad was clicked on.
}

- (void)nativeAdWillPresentScreen:(GADNativeAd *)nativeAd {
  // The native ad will present a full screen view.
}

- (void)nativeAdWillDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad will dismiss a full screen view.
}

- (void)nativeAdDidDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad did dismiss a full screen view.
}

- (void)nativeAdWillLeaveApplication:(GADNativeAd *)nativeAd {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

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

اتّبِع هذه القواعد عند تحميل الإعلانات.

  • التطبيقات التي تستخدم الإعلانات المدمجة مع المحتوى في قائمة يجب أن تخزّن قائمة الإعلانات مؤقتًا.

  • وعند التخزين المُسبق للإعلانات، عليك محو ذاكرة التخزين المؤقّت وإعادة التحميل بعد ساعة واحدة.

  • يُرجى عدم استدعاء loadRequest: مرة أخرى على GADAdLoader إلى أن ينتهي تحميل الطلب السابق، على النحو الموضح في adLoaderDidFinishLoading:.

عرض إعلانك

وبعد تحميل أحد الإعلانات، كل ما تبقى هو عرضه للمستخدمين. يمكنك الانتقال إلى دليل الإعلانات المدمجة مع المحتوى (المتقدّمة)