"الإعلانات على شاشة فتح التطبيق" هي شكل إعلان مخصّص للناشرين الذين يريدون تحقيق الربح من شاشات تحميل تطبيقاتهم. يمكن للمستخدمين إغلاق "الإعلانات على شاشة فتح التطبيق" في أي وقت. عندما ينقل المستخدمون تطبيقك إلى المقدّمة، اعرِض "الإعلانات على شاشة فتح التطبيق".
لمزيد من المعلومات، يُرجى الاطّلاع على إرشادات "الإعلانات على شاشة فتح التطبيق".يوضّح هذا الدليل كيفية دمج "الإعلانات على شاشة فتح التطبيق" في تطبيق Android.
قبل البدء
قبل المتابعة، يُرجى اتّباع الخطوات التالية:
- إعداد GMA Next-Gen SDK.
- استخدام رقم تعريف الوحدة الإعلانية الاختبارية لـ "الإعلانات على شاشة فتح التطبيق"
/21775744923/example/app-open.- عند إنشاء تطبيقك واختباره، تأكَّد من استخدام الإعلانات الاختبارية بدلاً من الإعلانات المباشرة المعروضة في مرحلة الإنتاج. إذا لم تستخدِم رقم تعريف الوحدة الإعلانية الاختبارية، يمكن أن تعلّق Google حسابك.
- قبل نشر تطبيقك، استبدِل هذا الرقم برقم تعريف وحدتك الإعلانية.
- للاطّلاع على تفاصيل الإعلانات الاختبارية GMA Next-Gen SDK، يُرجى الاطّلاع على مقالة تفعيل الإعلانات الاختبارية.
فهم ميزة التحميل المسبق للإعلانات (إصدار تجريبي)
تعمل ميزة التحميل المسبق للإعلانات في GMA Next-Gen SDK على أتمتة عملية تحميل الإعلانات وتخزينها مؤقتًا.
توفّر ميزة التحميل المسبق للإعلانات المزايا التالية:
- إدارة المراجع: يتم الاحتفاظ بالمراجع إلى أن يتم عرض الإعلانات.
- إعادة التحميل التلقائي: يتم تحميل إعلان جديد عند استرداد إعلان من ذاكرة التخزين المؤقت.
- إعادة المحاولات المُدارة: يتم تحميل إعلان جديد عندما يتعذّر تحميل إعلان.
- التعامل مع انتهاء الصلاحية: يتم تحديث الإعلانات قبل انتهاء صلاحيتها.
- تحسين ذاكرة التخزين المؤقت: يتم تحسين ترتيب ذاكرة التخزين المؤقت لعرض الإعلان ذي الأولوية القصوى.
بدء ميزة التحميل المسبق للإعلانات
لبدء التحميل المسبق للإعلانات، استدعِ الطريقة start مرة واحدة
عند تهيئة GMA Next-Gen SDK. بعد استدعاء الطريقة
start، تعمل GMA Next-Gen SDK تلقائيًا على التحميل المسبق للإعلانات
وإعادة محاولة الطلبات التي تعذّر إرسالها للإعدادات التي تم تحميلها مسبقًا.
يوضّح المثال التالي كيفية بدء التحميل المسبق للإعلانات:
Kotlin
جافا
استبدِل AD_UNIT_ID برقم تعريف وحدتك الإعلانية.
يوضّح المثال السابق كيفية استخدام رقم تعريف الوحدة الإعلانية كرقم تعريف للتحميل المسبق. رقم تعريف التحميل المسبق هو معرّف سلسلة تنشئه لتحديد إعدادات التحميل المسبق للإعلانات. إذا كان تطبيقك يتطلّب إعدادات استهداف متعدّدة لرقم تعريف الوحدة الإعلانية نفسه، مرِّر معرّف سلسلة مخصّصًا.
لا تتيح ميزة التحميل المسبق للإعلانات تغيير مَعلمات الاستهداف أو طلبات عرض الإعلانات. إذا كنت بحاجة إلى تغيير مَعلمات الاستهداف بين الطلبات، استخدِم ميزة التحميل الفردي.
الحصول على الإعلان الذي تم تحميله مسبقًا وعرضه
قبل عرض الإعلان، استدعِ الطريقة pollAd.
لا تخزِّن عنصر الإعلان الذي تم تحميله مسبقًا. عند استدعاء الطريقة
pollAd، تستردّ GMA Next-Gen SDK إعلانًا متاحًا
وتحمِّل مسبقًا تلقائيًا الإعلان التالي في الخلفية. إذا لم يتوفّر أي إعلان
، لا تعرض GMA Next-Gen SDK أي إعلانات.
show لعرض الإعلان.
يوضّح المثال التالي كيفية استرداد إعلان تم تحميله مسبقًا وعرضه:
Kotlin
جافا
عندما يصل تطبيقك إلى موضع إعلان ويمكنه استدعاء الطريقة show، استدعِ الطريقة pollAd. لا تستدعِ الطريقة pollAd في معاودات الاتصال الخاصة بالتحميل المسبق أو بعد التحقّق من الطريقة isAdAvailable لعرض إعلان. إذا كنت بحاجة
إلى فحص بيانات الإعلان الوصفية قبل عرض الإعلان،
اقرأ معلومات الاستجابة بدون إزالة الإعلان من ذاكرة التخزين المؤقت.
الاستماع إلى أحداث الإعلانات
قبل عرض الإعلان، استمع إلى أحداث الإعلانات. يسجِّل المثال التالي معاودات الاتصال لأحداث الإعلانات:
Kotlin
private fun listenToAdEvents() { // Listen for ad events. val ad = appOpenAd if (ad == null) { Log.e(TAG, "App open ad is not ready yet.") return } ad.adEventCallback = object : AppOpenAdEventCallback { override fun onAdShowedFullScreenContent() { // App open ad did show. } override fun onAdDismissedFullScreenContent() { // App open ad did dismiss. appOpenAd = null } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError ) { // App open ad failed to show. Log.e(TAG, "App open ad failed to show: ${fullScreenContentError.message}") } override fun onAdImpression() { // App open ad did record an impression. } override fun onAdClicked() { // App open ad did record a click. } } }
جافا
private void listenToAdEvents() { // Listen for ad events. if (appOpenAd == null) { Log.e(TAG, "App open ad is not ready yet."); return; } appOpenAd.setAdEventCallback( new AppOpenAdEventCallback() { @Override public void onAdShowedFullScreenContent() { // App open ad did show. } @Override public void onAdDismissedFullScreenContent() { // App open ad did dismiss. appOpenAd = null; } @Override public void onAdFailedToShowFullScreenContent( @NonNull FullScreenContentError fullScreenContentError) { // App open ad failed to show. Log.e(TAG, "App open ad failed to show: " + fullScreenContentError.getMessage()); } @Override public void onAdImpression() { // App open ad did record an impression. } @Override public void onAdClicked() { // App open ad did record a click. } }); }
اختياري: الاستماع إلى أحداث التحميل المسبق
عند بدء التحميل المسبق للإعلانات، سجِّل أحداث التحميل المسبق لتلقّي إشعار عند التحميل المسبق للإعلانات بنجاح أو تعذُّر التحميل المسبق أو استنفاد ذاكرة التخزين المؤقت للإعلانات.
يوضّح المثال التالي كيفية التسجيل لتلقّي أحداث التحميل المسبق للإعلانات:
Kotlin
val preloadCallback = object : PreloadCallback { override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) { Log.d(TAG, "App open preload ad $preloadId failed to load with error: ${adError.message}") } override fun onAdsExhausted(preloadId: String) { Log.i(TAG, "App open preload ad $preloadId is not available") } override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) { Log.i(TAG, "App open preload ad $preloadId is available") } } val adRequest = AdRequest.Builder(adUnitId).build() val preloadConfig = PreloadConfiguration(adRequest) AppOpenAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
جافا
PreloadCallback preloadCallback = new PreloadCallback() { @Override public void onAdFailedToPreload(@NonNull String preloadId, @NonNull LoadAdError adError) { Log.d( TAG, String.format( "App open preload ad %s failed to load with error: %s", preloadId, adError.getMessage())); } @Override public void onAdsExhausted(@NonNull String preloadId) { Log.i(TAG, String.format("App open preload ad %s is not available", preloadId)); } @Override public void onAdPreloaded(@NonNull String preloadId, @NonNull ResponseInfo responseInfo) { Log.i(TAG, String.format("App open preload ad %s is available", preloadId)); } }; AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest); AppOpenAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
عندما يتعذّر تحميل إعلان، تعمل GMA Next-Gen SDK تلقائيًا على التحميل المسبق للإعلانات وإعادة محاولة
الطلبات التي تعذّر إرسالها للإعدادات التي تم تحميلها مسبقًا. لا تستدعِ طلبات التحميل اليدوي في معاودات الاتصال الخاصة بحالات الفشل. في طرق رد الاتصال الخاصة بأحداث خلال التحميل المُسبق، لا تستدعِ الطرق pollAd أو destroy أو start. يمكن أن يؤدي استدعاء هذه الطرق في معاودات الاتصال إلى استدعاء حلقات تحميل متكرّرة.
اختياري: التحقّق من توفّر الإعلانات
إذا كنت بحاجة إلى معرفة ما إذا كان الإعلان متوفّرًا، تحقَّق من توفّر الإعلانات. يتحقّق المثال التالي مما إذا كان الإعلان الذي تم تحميله مسبقًا متوفّرًا:
Kotlin
private fun isAdAvailable(adUnitId: String): Boolean { return AppOpenAdPreloader.isAdAvailable(adUnitId) }
جافا
private boolean isAdAvailable(String adUnitId) { return AppOpenAdPreloader.isAdAvailable(adUnitId); }
اختياري: ضبط حجم المخزن المؤقت
يتحكّم حجم ذاكرة التخزين المؤقت في عدد الإعلانات التي تم تحميلها مسبقًا والمخزّنة في الذاكرة. تُحسِّن Google تلقائيًا حجم المخزن المؤقت لتحقيق التوازن بين استهلاك الذاكرة ووقت الاستجابة لعرض الإعلانات. يمكنك ضبط حجم ذاكرة التخزين المؤقت المخصّص لزيادة عدد الإعلانات المخزّنة في الذاكرة أو تقليله. ننصحك بضبط حجم ذاكرة التخزين المؤقت على إعلانَين تم تحميلهما مسبقًا. إذا كانت معظم الزيارات واردة من أجهزة ذات ذاكرة منخفضة، قلِّل حجم ذاكرة التخزين المؤقت.
يوضّح المثال التالي كيفية ضبط حجم المخزن المؤقت:
Kotlin
val adRequest = AdRequest.Builder(adUnitId).build() // Define a PreloadConfiguration and set the buffer size to 2 preloaded ads. val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2) AppOpenAdPreloader.start(adUnitId, preloadConfig)
جافا
AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); // Define a PreloadConfiguration and set the buffer size to 2 preloaded ads. PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 2); AppOpenAdPreloader.start(adUnitId, preloadConfig);
حدود ذاكرة التخزين المؤقت للتحميل المسبق
GMA Next-Gen SDK تفرض حدًا على مستوى التطبيق لعدد الإعلانات الإجمالي التي تم تحميلها مسبقًا على مستوى جميع الوحدات الإعلانية وأرقام تعريف التحميل المسبق:
- الحدّ التلقائي: تحتفظ Google بحدّ أقصى يبلغ ستة إعلانات تم تحميلها مسبقًا في الذاكرة. ويتم مشاركة هذا الحدّ على مستوى جميع الأشكال وأرقام تعريف التحميل المسبق.
- ننصحك بالاحتفاظ بحجم ذاكرة التخزين المؤقت يبلغ اثنين لكل رقم تعريف تحميل مسبق.
اختياري: إيقاف التحميل المسبق للإعلانات
أبقِ ميزة التحميل المسبق مفعّلة أثناء عرض تطبيقك للإعلانات. خلال هذه الفترة، لا تستدعِ الطريقة destroy. إذا لم تكن بحاجة إلى عرض الإعلانات لرقم تعريف تحميل مسبق معيّن مرة أخرى في الجلسة، يمكنك إيقاف التحميل المسبق للإعلانات. لإيقاف تحميل الإعلانات لرقم تعريف تحميل مسبق معيّن، استدعِ الطريقة destroy باستخدام رقم تعريف التحميل المسبق. يؤدي استدعاء الطريقة destroy إلى إزالة جميع الإعلانات التي تم تحميلها مسبقًا والمرتبطة برقم تعريف التحميل المسبق من ذاكرة التخزين المؤقت.
يوضّح المثال التالي كيفية إيقاف التحميل المسبق للإعلانات:
Kotlin
private fun stopPreloading(adUnitId: String) { // Stops the preloading and destroy preloaded ads. AppOpenAdPreloader.destroy(adUnitId) }
جافا
private void stopPreloading(String adUnitId) { // Stops the preloading and destroy preloaded ads. AppOpenAdPreloader.destroy(adUnitId); }
اختياري: قراءة معلومات الاستجابة
اقرأ معلومات الاستجابة للإعلان التالي الذي تم تحميله مسبقًا بدون إزالة الإعلان من ذاكرة التخزين المؤقت. إذا كنت بحاجة إلى فحص بيانات الإعلان الوصفية قبل عرض إعلان، اقرأ معلومات الاستجابة بدلاً من استدعاء الطريقة pollAd.
يوضّح المثال التالي كيفية قراءة معلومات الاستجابة للإعلان التالي الذي تم تحميله مسبقًا:
Kotlin
val responseInfo = AppOpenAdPreloader.peekAdResponseInfo(preloadId) if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info.") return } Log.d(TAG, "Peeked ad response ID: ${responseInfo.responseId}")
جافا
ResponseInfo responseInfo = AppOpenAdPreloader.peekAdResponseInfo(preloadId); if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info."); return; } Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());
التعامل مع عمليات التشغيل البارد وشاشات التحميل
يحدث التشغيل البارد عندما يتم تشغيل تطبيقك من القرص، ويحدث التشغيل السريع عندما تعيد فتح التطبيق من الذاكرة. أثناء التشغيل البارد، لا يتوفّر لديك إعلان تم تحميله مسبقًا لعرضه على الفور. أثناء التشغيل السريع، قد يظل لديك إعلان تم تحميله مسبقًا وجاهز للعرض.
أثناء التشغيل البارد، قد يتفاعل المستخدمون مع تطبيقك قبل تحميله وعرض إعلان. لتجنُّب تقديم تجربة سيئة للمستخدمين، اعرِض "الإعلانات على شاشة فتح التطبيق" أثناء عمليات التشغيل البارد من شاشة تحميل فقط أثناء تحميل مواد عرض التطبيق. إذا اكتمل تحميل مواد العرض ووصل المستخدم إلى المحتوى الرئيسي قبل تحميل الإعلان، لا تعرِض الإعلان.
الاقتراحات
اتّبِع الاقتراحات التالية لـ "الإعلانات على شاشة فتح التطبيق":
- لا تعرِض "إعلانًا على شاشة فتح التطبيق" عند تشغيل التطبيق للمرة الأولى.
- إذا اكتمل تحميل شاشة التحميل أثناء عرض الإعلان، أغلِق شاشة التحميل في طريقة رد الاتصال الخاصة بالإعلان الذي تم إغلاقه.
- تنتهي صلاحية "الإعلانات على شاشة فتح التطبيق" بعد أربع ساعات من التحميل. لا تعرِض "إعلانًا على شاشة فتح التطبيق" تم تحميله لأكثر من أربع ساعات.