الإعلانات البينية هي إعلانات بملء الشاشة تغطي واجهة التطبيق إلى أن يغلقها المستخدم. وعادةً ما يتم عرضها عند نقاط انتقال طبيعية خلال تدفق التطبيق، مثلاً بين الأنشطة أو أثناء التوقف المؤقت بين المستويات في لعبة ما. عندما يعرض التطبيق إعلانًا بينيًا، يمكن للمستخدم اختيار النقر على الإعلان والمتابعة إلى وجهته أو إغلاقه والعودة إلى التطبيق. دراسة حالة.
يوضِّح لك هذا الدليل كيفية دمج الإعلانات البينية في أحد تطبيقات 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
فيديوهات تعليمية من Mobile Ads Garage
قصص النجاح
الخطوات التالية
- أنشئ وحدتك الإعلانية البينية في واجهة مستخدم AdMob، إذا لم يسبق لك إجراء ذلك.
- اطّلع على مزيد من المعلومات حول استهداف الإعلانات وإرشادات الإعلانات البينية. *. مزيد من المعلومات حول خصوصية المستخدم.