الإعلانات المدمجة مع المحتوى هي مواد عرض إعلانات يتم عرضها للمستخدمين من خلال مكوّنات واجهة المستخدم المضمّنة في النظام الأساسي. يتم عرضها باستخدام نفس الفئات التي تستخدمها بالفعل في مخططات القصة الخاصة بك، ويمكن تنسيقها لتتناسب مع التصميم المرئي لتطبيقك.
عند تحميل إعلان مدمج مع المحتوى، يتلقّى تطبيقك عنصر إعلان يحتوي على مواد العرض الخاصة به، وسيتحمل عندئذٍ التطبيق مسؤولية عرضها، بدلاً من حزمة "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:
، يمكنه الحصول على نتائج الطلب من خلال الاتصالات لتنفيذ ما يلي:
adLoader:didFailToReceiveAdWithError:
فيGADAdLoaderDelegate
adLoader:didReceiveNativeAd:
فيGADNativeAdLoaderDelegate
سينتج عن طلب إعلان واحد استدعاء واحد لإحدى هذه الطرق.
سيؤدي طلب إنشاء إعلانات متعددة إلى معاودة الاتصال مرة واحدة على الأقل بالطرق الواردة أعلاه، ولكن ليس أكثر من الحد الأقصى لعدد الإعلانات المطلوبة.
بالإضافة إلى ذلك، يوفّر 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:
.
عرض إعلانك
وبعد تحميل أحد الإعلانات، كل ما تبقى هو عرضه للمستخدمين. يمكنك الانتقال إلى دليل الإعلانات المدمجة مع المحتوى (المتقدّمة)