الإعلانات البينية هي إعلانات بملء الشاشة تغطي واجهة أحد التطبيقات إلى أن يغلقها المستخدم. وعادةً ما يتم عرضها في نقاط انتقال مناسبة خلال مسار عرض التطبيق، على سبيل المثال بين الأنشطة أو في الوقت الفاصل بين مستويَين في لعبة. وعندما يعرض التطبيق إعلانًا بينيًا، يمكن للمستخدم النقر على الإعلان والمتابعة إلى وجهته أو إغلاقه ثم العودة إلى التطبيق. دراسة حالة.
يوضّح لك هذا الدليل كيفية دمج الإعلانات البينية في تطبيق متوافق مع iOS.
المتطلبات الأساسية
- SDK لإعلانات Google على الأجهزة الجوّالة 8.0.0 أو إصدار أحدث.
- أكمِل دليل البدء.
الاختبار دائمًا باستخدام الإعلانات التجريبية
عند إنشاء تطبيقاتك واختبارها، احرص على استخدام إعلانات تجريبية بدلاً من إعلانات الإنتاج المباشر. ويمكن أن يؤدي عدم الالتزام بذلك إلى تعليق حسابك.
إن أسهل طريقة لتحميل الإعلانات الاختبارية هي استخدام رقم تعريف الوحدة الإعلانية الاختبارية المخصّص للإعلانات البينية على نظام التشغيل iOS:
ca-app-pub-3940256099942544/4411468910
وقد تم ضبطها خصيصًا لعرض إعلانات اختبارية لكل طلب، ويمكنك استخدامها في تطبيقاتك أثناء الترميز والاختبار وتصحيح الأخطاء. ما عليك سوى التأكّد من استبداله برقم تعريف الوحدة الإعلانية قبل نشر تطبيقك.
للاطّلاع على مزيد من المعلومات حول آلية عمل الإعلانات الاختبارية لحزمة تطوير البرامج (SDK) للإعلانات على الأجهزة الجوّالة، راجِع الإعلانات الاختبارية.
التنفيذ
الخطوات الأساسية لدمج الإعلانات البينية هي:
- حمِّل إعلانًا.
- التسجيل من أجل معاودة الاتصال.
- عرض الإعلان والتعامل مع حدث المكافأة
تحميل إعلان
يتم تحميل الإعلان باستخدام طريقة 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() let request = GADRequest() GADInterstitialAd.load(withAdUnitID:"ca-app-pub-3940256099942544/4411468910", request: request, completionHandler: { [self] ad, error in if let error = error { print("Failed to load interstitial ad with error: \(error.localizedDescription)") return } interstitial = ad } ) } }
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
class ViewController: UIViewController, GADFullScreenContentDelegate { private var interstitial: GADInterstitialAd? override func viewDidLoad() { super.viewDidLoad() let request = GADRequest() GADInterstitialAd.load(withAdUnitID:"ca-app-pub-3940256099942544/4411468910", request: request, completionHandler: { [self] ad, error in if let error = error { print("Failed to load interstitial ad with error: \(error.localizedDescription)") return } interstitial = ad interstitial?.fullScreenContentDelegate = self } ) } /// 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
@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) { if interstitial != nil { interstitial.present(fromRootViewController: self) } else { print("Ad wasn't ready") } }
Objective-C
- (IBAction)doSomething:(id)sender { ... if (self.interstitial) { [self.interstitial presentFromRootViewController:self]; } else { NSLog(@"Ad wasn't ready"); } }
أفضل الممارسات
- ضَع في اعتبارك ما إذا كانت الإعلانات البينية هي النوع المناسب من الإعلانات لتطبيقك.
- تعمل الإعلانات البينية على أفضل نحو في التطبيقات التي تحتوي على نقاط انتقال طبيعية. في نهاية هذه المهمة، مثل مشاركة صورة أو إكمال مستوى لعبة، يتم إنشاء هذه النقطة. ونظرًا لأن المستخدم يتوقع حدوث عطل في الإجراء، سيكون من السهل عرض إعلان بيني بدون الإخلال بتجربة المستخدم. تأكَّد من المراحل التي يجب أن تعرض فيها إعلانات تطبيقك في سير عمل تطبيقك، وبالتالي سيتم عرض الإعلانات البينية والطريقة التي يُحتمل أن يردّ بها المستخدم.
- احرِص على إيقاف الإجراء مؤقتًا عند عرض إعلان بيني.
- هناك عدد من أنواع الإعلانات البينية المختلفة، وهي: الإعلانات النصية والإعلانات المصوّرة
وإعلانات الفيديو وغيرها. من المهم التأكّد من أنه عند عرض تطبيقك
إعلان بيني، يعلّق أيضًا استخدامه لبعض الموارد للسماح للإعلان
بالاستفادة منها. على سبيل المثال، عند إجراء مكالمة لعرض إعلان بيني، تأكّد من إيقاف أي نتائج صوتية يتم إنشاؤها بواسطة تطبيقك مؤقتًا.
يمكنك استئناف تشغيل الأصوات في معالج
adDidDismissFullScreenContent:
الحدث، الذي سيتم استدعاؤه عند انتهاء المستخدم من التفاعل مع الإعلان. بالإضافة إلى ذلك، فكِّر مؤقتًا في إيقاف أي مهام حسابية شاقة (مثل حلقة من أحداث اللعبة) أثناء عرض الإعلان. سيضمن ذلك عدم قدرة المستخدم على عرض رسومات بطيئة أو غير مستجيبة أو فيديو متقطّع. - اسمح بمرور وقت تحميل كافٍ.
- من المهم التأكّد من عرض الإعلانات البينية في الوقت المناسب، ولكن من المهم أيضًا التأكّد من أنّ المستخدم ليس بحاجة إلى الانتظار حتى يتم تحميلها. ويمكن أن يضمن تحميل الإعلان مسبقًا قبل النية في عرضه أن يكون لتطبيقك إعلان بيني تم تحميله بالكامل عندما يكون جاهزًا لعرض ذلك.
- لا تملأ المستخدم بالإعلانات.
- مع أنّ زيادة معدّل تكرار الإعلانات البينية في تطبيقك قد يكون وسيلة رائعة لزيادة أرباحك، قد يؤثر ذلك أيضًا في تجربة المستخدم وانخفاضًا في نسب النقر إلى الظهور. تأكد من عدم توقف المستخدمين بشكل متكرر لأنهم لم يعُد بإمكانهم الاستفادة من تطبيقك.
- لا تستخدم استدعاء إكمال التحميل لعرض الإعلان البيني.
- يمكن أن يؤدي ذلك إلى تجربة مستخدم سيئة. وبدلاً من ذلك، عليك تحميل الإعلان مسبقًا قبل أن تحتاج إلى عرضه. بعد ذلك، يمكنك الاطّلاع على طريقة
canPresentFromRootViewController:error:
علىGADInterstitialAd
لمعرفة ما إذا كانت جاهزة للعرض.
مراجع إضافية
أمثلة على GitHub
برامج تعليمية حول الفيديو على "إعلانات Google" على الأجهزة الجوّالة
قصص النجاح
الخطوات اللاحقة
- أنشئ وحدتك الإعلانية البينية من خلال واجهة مستخدم AdMob، إذا لم تكن قد فعلت ذلك من قبل.
- اطّلِع على مزيد من المعلومات عن استهداف الإعلانات وإرشادات الإعلانات البينية.