"الإعلانات البينية" هي إعلانات بملء الشاشة تغطي واجهة التطبيق المضيف. وعادةً ما تظهر في نقاط الانتقال العادية في تدفق التطبيقات، مثلاً بين الأنشطة أو أثناء فترة الإيقاف المؤقت بين المستويات في الألعاب. عندما يعرض أحد التطبيقات "إعلانًا بينيًا"، يكون أمام المستخدِم خياران: إما النقر على الإعلان والانتقال إلى صفحته المقصودة أو إغلاقه والعودة إلى التطبيق.
يشرح هذا الدليل كيفية دمج "الإعلانات البينية" في تطبيق Android.
المتطلبات الأساسية
الاختبار دائمًا باستخدام "الإعلانات التجريبية"
عند إنشاء تطبيقاتك واختبارها، احرص على استخدام "الإعلانات التجريبية" بدلاً من الإعلانات الفعلية المعروضة للمستخدمين. وقد يؤدي عدم إجراء ذلك إلى تعليق حسابك.
أسهل طريقة لتحميل "الإعلانات التجريبية" هي استخدام رقم تعريف الوحدة الإعلانية التجريبية المخصّص لـ "الإعلانات البينية" على Android:
/21775744923/example/interstitial
تم إعداد هذا المعرّف خصيصًا لعرض "إعلانات تجريبية" لكل طلب، ويمكنك استخدامه في تطبيقاتك الخاصة أثناء الترميز والاختبار وتحديد الأخطاء وحلّها. ما عليك سوى استبداله برقم تعريف الوحدة الإعلانية الخاص بك قبل نشر تطبيقك.
للاطّلاع على تفاصيل GMA Next-Gen SDK "الإعلانات التجريبية"، يُرجى مراجعة مقالة تفعيل "الإعلانات التجريبية".
تحميل إعلان
لتحميل إعلان، GMA Next-Gen SDK توفّر ما يلي:
التحميل باستخدام واجهة برمجة التطبيقات لتحميل إعلان واحد.
التحميل باستخدام واجهة برمجة التطبيقات لتحميل الإعلانات مسبقًا، ما يغني عن الحاجة إلى تحميل الإعلانات وتخزينها مؤقتًا يدويًا
التحميل باستخدام واجهة برمجة التطبيقات لتحميل إعلان واحد
يوضّح لك المثال التالي كيفية تحميل إعلان واحد:
Kotlin
import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback
import com.google.android.libraries.ads.mobile.sdk.common.AdRequest
import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAd
import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAdEventCallback
import com.google.android.libraries.ads.mobile.sdk.MobileAds
class InterstitialActivity : Activity() {
private var interstitialAd: InterstitialAd? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Load ads after you initialize GMA Next-Gen SDK.
InterstitialAd.load(
AdRequest.Builder(AD_UNIT_ID).build(),
object : AdLoadCallback<InterstitialAd> {
override fun onAdLoaded(ad: InterstitialAd) {
// Interstitial ad loaded.
interstitialAd = ad
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// Interstitial ad failed to load.
interstitialAd = null
}
},
)
}
companion object {
// Sample interstitial ad unit ID.
const val AD_UNIT_ID = "/21775744923/example/interstitial"
}
}
جافا
import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback;
import com.google.android.libraries.ads.mobile.sdk.common.AdRequest;
import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError;
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError;
import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAd;
import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAdEventCallback;
import com.google.android.libraries.ads.mobile.sdk.MobileAds;
class InterstitialActivity extends Activity {
// Sample interstitial ad unit ID.
private static final String AD_UNIT_ID = "/21775744923/example/interstitial";
private InterstitialAd interstitialAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load ads after you initialize GMA Next-Gen SDK.
InterstitialAd.load(
new AdRequest.Builder(AD_UNIT_ID).build(),
new AdLoadCallback<InterstitialAd>() {
@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
// Interstitial ad loaded.
AdLoadCallback.super.onAdLoaded(interstitialAd);
InterstitialActivity.this.interstitialAd = interstitialAd;
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError adError) {
// Interstitial ad failed to load.
AdLoadCallback.super.onAdFailedToLoad(adError);
interstitialAd = null;
}
}
);
}
}
التحميل باستخدام واجهة برمجة التطبيقات لتحميل الإعلانات مسبقًا
لبدء التحميل المسبق، اتّبِع الخطوات التالية:
إعداد ضبط التحميل المسبق باستخدام طلب عرض الإعلان.
ابدأ أداة التحميل المسبق لـ "الإعلانات البينية" باستخدام رقم تعريف الوحدة الإعلانية وإعدادات التحميل المسبق:
Kotlin
private fun startPreloading(adUnitId: String) {
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig)
}
جافا
private void startPreloading(String adUnitId) {
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig);
}
تتوفّر الإعلانات باستمرار أثناء عرضها. يستطلع المثال التالي إعلانًا من أداة التحميل المسبق:
Kotlin
// Polling returns the next available ad and loads another ad in the background.
val ad = InterstitialAdPreloader.pollAd(adUnitId)
جافا
// Polling returns the next available ad and loads another ad in the background.
final InterstitialAd ad = InterstitialAdPreloader.pollAd(adUnitId);
ضبط InterstitialAdEventCallback
تعالج السمة InterstitialAdEventCallback الأحداث المرتبطة بعرض
InterstitialAd. قبل عرض "الإعلان البيني"، احرص على ضبط معاودة الاتصال:
Kotlin
// Listen for ad events.
interstitialAd?.adEventCallback =
object : InterstitialAdEventCallback {
override fun onAdShowedFullScreenContent() {
// Interstitial ad did show.
}
override fun onAdDismissedFullScreenContent() {
// Interstitial ad did dismiss.
interstitialAd = null
}
override fun onAdFailedToShowFullScreenContent(
fullScreenContentError: FullScreenContentError
) {
// Interstitial ad failed to show.
interstitialAd = null
}
override fun onAdImpression() {
// Interstitial ad did record an impression.
}
override fun onAdClicked() {
// Interstitial ad did record a click.
}
}
جافا
// Listen for ad events.
interstitialAd.setAdEventCallback(
new InterstitialAdEventCallback() {
@Override
public void onAdShowedFullScreenContent() {
// Interstitial ad did show.
InterstitialAdEventCallback.super.onAdShowedFullScreenContent();
}
@Override
public void onAdDismissedFullScreenContent() {
// Interstitial ad did dismiss.
InterstitialAdEventCallback.super.onAdDismissedFullScreenContent();
interstitialAd = null;
}
@Override
public void onAdFailedToShowFullScreenContent(
@NonNull FullScreenContentError fullScreenContentError) {
// Interstitial ad failed to show.
InterstitialAdEventCallback.super.onAdFailedToShowFullScreenContent(
fullScreenContentError);
initerstitialAd = null;
}
@Override
public void onAdImpression() {
// Interstitial ad did record an impression.
InterstitialAdEventCallback.super.onAdImpression();
}
@Override
public void onAdClicked() {
// Interstitial ad did record a click.
InterstitialAdEventCallback.super.onAdClicked();
}
}
);
عرض الإعلان
لعرض "إعلان بيني"، استخدِم طريقة show().
Kotlin
// Show the ad.
interstitialAd?.show(this@InterstitialActivity)
جافا
// Show the ad.
interstitialAd.show(InterstitialActivity.this);
بعض أفضل الممارسات
- حدِّد ما إذا كانت "الإعلانات البينية" هي نوع الإعلان المناسب لتطبيقك.
- تحقّق "الإعلانات البينية" أفضل أداء في التطبيقات التي تتضمّن نقاط انتقال عادية. ويُعدّ إكمال مهمة داخل تطبيق، مثل مشاركة صورة أو إكمال مستوى في لعبة، نقطة انتقال عادية. احرص على تحديد نقاط عرض "الإعلانات البينية" في مسار عمل تطبيقك وكيفية تفاعل المستخدِم معها.
- تذكَّر إيقاف الإجراء مؤقتًا عند عرض "إعلان بيني".
- هناك العديد من أنواع "الإعلانات البينية" المختلفة: الإعلانات النصية والإعلانات المصوّرة وإعلانات الفيديو وغير ذلك. من المهم التأكّد من أنّ تطبيقك يعلّق أيضًا استخدام بعض الموارد عندما يعرض "إعلانًا بينيًا" ليتمكّن الإعلان من الاستفادة منها. على سبيل المثال، عند إجراء طلب لعرض "إعلان بيني"، احرص على إيقاف أي مصدر إخراج للصوت يعرضه تطبيقك مؤقتًا.
- امنح وقتًا كافيًا للتحميل.
- كما أنّه من المهم التأكّد من عرض "الإعلانات البينية" في وقت مناسب، من المهم أيضًا التأكّد من عدم اضطرار المستخدِم إلى الانتظار حتى يتم تحميلها. يمكن أن يضمن تحميل الإعلان مسبقًا من خلال استدعاء
load()قبل أن تنوي استدعاءshow()أن يكون تطبيقك جاهزًا لعرض "إعلان بيني" محمل بالكامل عندما يحين وقت عرضه. - عدم عرض كمّ هائل من الإعلانات للمستخدمين
- زيادة معدّل تكرار "الإعلانات البينية" في تطبيقك قد تبدو ملائمة لزيادة الإيرادات، لكنّها قد تؤدي أيضًا إلى تدهور تجربة المستخدم وانخفاض نسب النقر إلى الظهور. احرص على ألا يتم مقاطعة المستخدِمين بشكل متكرر لدرجة تجعلهم غير قادرين على الاستمتاع باستخدام تطبيقك.
مثال
نزِّل التطبيق النموذجي الذي يوضّح كيفية استخدام GMA Next-Gen SDK وشغِّله.