الإعلانات البينية هي إعلانات بملء الشاشة تغطي واجهة أحد التطبيقات حتى تم إغلاقه من قبل المستخدم. ويتم عرضها عادةً عند نقاط انتقال عادية في تدفق التطبيق، مثل بين الأنشطة أو أثناء التوقف المؤقت بين المستويات في لعبة ما. عندما يعرض التطبيق إعلانًا بينيًا، يحصل المستخدم على حرية الاختيار. النقر على الإعلان والانتقال إلى وجهته أو إغلاقه والعودة بالتطبيق. دراسة الحالة:
يوضح لك هذا الدليل كيفية دمج الإعلانات البينية في تطبيق iOS.
المتطلبات الأساسية
- الإصدار 8.0.0 أو إصدار أحدث من حزمة "SDK لإعلانات Google على الأجهزة الجوّالة".
- أكمِل دليل البدء.
الاختبار دائمًا باستخدام الإعلانات الاختبارية
عند إنشاء تطبيقاتك واختبارها، احرص على استخدام إعلانات تجريبية بدلاً من إعلانات بث مباشر وقد يؤدي عدم الالتزام بذلك إلى تعليق حسابك.
أسهل طريقة لتحميل الإعلانات الاختبارية هي استخدام رقم تعريف الوحدة الإعلانية الاختبارية المخصص
للإعلانات البينية على نظام التشغيل iOS:
/21775744923/example/interstitial
لقد تم إعدادها خصيصًا لعرض إعلانات اختبارية لكل طلب، يمكن استخدامها مجانًا في تطبيقاتك الخاصة أثناء الترميز والاختبار وتصحيح الأخطاء. ما عليك سوى إجراء واحرص على استبداله بمعرّف وحدتك الإعلانية قبل نشر تطبيقك.
لمزيد من المعلومات عن آلية عمل الإعلانات الاختبارية لحزمة تطوير البرامج (SDK) لعرض الإعلانات على الأجهزة الجوّالة، يُرجى الاطّلاع على اختبار الإعلانات:
التنفيذ
الخطوات الأساسية لدمج الإعلانات البينية هي:
- حمِّل إعلانًا.
- التسجيل لتلقّي طلبات معاودة الاتصال
- يمكنك عرض الإعلان والتعامل مع حدث المكافأة.
تحميل إعلان
يتم الانتهاء من تحميل إعلان باستخدام الثابت
طريقة "loadWithAdManagerAdUnitID:request:completionHandler:
" على
صف واحد (GAMInterstitialAd
). تتطلب طريقة التحميل
رقم تعريف وحدتك الإعلانية وعنصر GAMRequest
معالج الإكمال الذي يتم طلبه عند نجاح تحميل الإعلان أو إخفاقه. تشير رسالة الأشكال البيانية
يتم توفير كائن GAMInterstitialAd
الذي تم تحميله على أنّه
في معالِج الإكمال. يوضح المثال أدناه كيفية تحميل
GAMInterstitialAd
في صفك الدراسي ViewController
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController {
private var interstitial: GAMInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
do {
interstitial = try await GAMInterstitialAd.load(
withAdUnitID: "/21775744923/example/interstitial", request: GAMRequest())
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
}
Objective-C
@import GoogleMobileAds;
@import UIKit;
@interface ViewController ()
@property(nonatomic, strong) GAMInterstitialAd *interstitial;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GAMRequest *request = [GAMRequest request];
[GAMInterstitialAd loadWithAdManagerAdUnitID:@"/21775744923/example/interstitial"
request:request
completionHandler:^(GAMInterstitialAd *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: GAMInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
do {
interstitial = try await GAMInterstitialAd.load(
withAdUnitID: "/21775744923/example/interstitial", request: GAMRequest())
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) GAMInterstitialAd *interstitial;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GAMRequest *request = [GAMRequest request];
[GAMInterstitialAd loadWithAdManagerAdUnitID:@"/21775744923/example/interstitial"
request:request
completionHandler:^(GAMInterstitialAd *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.");
}
GAMInterstitialAd
هو عنصر يُستخدم لمرة واحدة. هذا النمط
يعني أنه بعد عرض إعلان بيني، لا يمكن عرضه مرة أخرى. الأفضل
التدريب هي تحميل إعلان بيني آخر في
طريقة adDidDismissFullScreenContent:
على GADFullScreenContentDelegate
، لذا
بدء تحميل الإعلان البيني التالي فور الانتهاء من تحميل الإعلان السابق
رفضت.
عرض الإعلان
يجب عرض الإعلانات البينية أثناء فترات التوقف المؤقت الطبيعية أثناء تدفق التطبيق.
يعد الربط بين مستويات اللعبة مثالاً جيدًا، أو بعد إكمال المستخدم لمهمة ما.
في ما يلي مثال على كيفية إجراء ذلك بإحدى طرق الإجراءات في
UIViewController
:
Swift
guard let interstitial = interstitial else {
return print("Ad wasn't ready.")
}
// The UIViewController parameter is an optional.
interstitial.present(fromRootViewController: nil)
Objective-C
if (self.interstitial) {
// The UIViewController parameter is nullable.
[self.interstitial presentFromRootViewController:nil];
} else {
NSLog(@"Ad wasn't ready");
}
أفضل الممارسات
- فكِّر في ما إذا كانت الإعلانات البينية هي نوع الإعلانات المناسب لتطبيقك.
- تعمل الإعلانات البينية بشكل أفضل في التطبيقات التي تتضمّن نقاط انتقال طبيعية. خاتمة مهمة داخل تطبيق ما، مثل مشاركة صورة أو إكمال مستوى اللعبة، ينشئ مثل هذه النقطة. ولأن المستخدم يتوقع استراحة في إجراء، سيكون من السهل تقديم إعلان بيني دون التأثير سلبًا على المستخدم. تأكّد من مراعاة النقاط التي ستتطلّبها من سير عمل تطبيقك عرض الإعلانات البينية وكيفية استجابة المستخدم المحتمَلة.
- احرص على إيقاف الإجراء مؤقتًا عند عرض إعلان بيني.
- هناك عدد من الأنواع المختلفة للإعلانات البينية: النصية والمصوّرة
والفيديو وغير ذلك. من المهم التأكد من أنه عند عرض تطبيقك
إعلان بيني، فإنه يعلق أيضًا استخدامه لبعض الموارد للسماح للإعلان
الاستفادة منها. على سبيل المثال، عند إجراء مكالمة لعرض
إعلان بيني، احرص على إيقاف أي إخراج صوتي ينتجه تطبيقك مؤقتًا.
يمكنك استئناف تشغيل الأصوات من خلال
adDidDismissFullScreenContent:
معالج الحدث، الذي سيتم استدعاؤه عند انتهاء المستخدم من التفاعل مع الإعلان. بالإضافة إلى ذلك، فكِّر في إيقاف أي عمليات حسابية مكثفة مؤقتًا المهام (مثل حلقة الألعاب) أثناء عرض الإعلان. سيضمن ذلك بحيث لا يواجه المستخدم رسومات بطيئة أو غير مستجيبة أو متعثر الفيديو .
- يجب السماح بمرور الوقت الكافي للتحميل.
- تمامًا كما من المهم التأكد من عرض الإعلانات البينية في الوقت المناسب، فمن المهم أيضًا التأكد من أن المستخدم لا يضطر إلى الانتظار حتى يتم تحميلها. تحميل الإعلان مسبقًا قبل أن تنوي عرضه التأكد من احتواء تطبيقك على إعلان بيني تم تحميله بالكامل، حان الوقت لعرض واحد.
- لا تملأ المستخدم بالإعلانات.
- على الرغم من أن زيادة تكرار الإعلانات البينية في تطبيقك قد تبدو طريقة رائعة لزيادة الإيرادات، فقد يؤدي أيضًا إلى انخفاض مستوى تجربة المستخدم ونسب نقر إلى ظهور منخفضة تأكد من أن المستخدمين ليسوا كثيرًا الأشخاص الذين لم يعد بإمكانهم الاستمتاع باستخدام تطبيقك.
- لا تستخدم استدعاء إكمال التحميل لعرض الإعلان البيني.
- قد يترك ذلك انطباعًا سيئًا لدى المستخدم. يمكنك بدلاً من ذلك تحميل الإعلان مسبقًا قبل
التي تحتاج إليها لعرضها. بعد ذلك، راجِع طريقة
canPresentFromRootViewController:error:
. علىGAMInterstitialAd
لمعرفة ما إذا كانت جاهزة كما هو موضح.
أمثلة على GitHub
الخطوات التالية
- اطّلِع على المزيد من المعلومات عن استهداف الإعلانات إرشادات الإعلانات البينية.
- مزيد من المعلومات حول خصوصية المستخدم