"توسط AdMob" هي ميزة تتيح لك عرض الإعلانات في تطبيقاتك من مصادر متعددة، بما في ذلك "شبكة AdMob" ومصادر الإعلانات الخارجية، في مكان واحد. تساعد ميزة "توسّط AdMob" في زيادة معدّل التعبئة إلى أقصى حدّ وزيادة معدّل تحقيق الربح من خلال إرسال طلبات عرض الإعلانات إلى شبكات متعددة لضمان عثورك على أفضل شبكة متاحة لعرض الإعلانات. دراسة حالة:
المتطلبات الأساسية
قبل أن تتمكّن من دمج ميزة التوسّط لشكل إعلان معيّن، عليك دمج شكل الإعلان هذا في تطبيقك:
- إعلانات البانر
- الإعلانات البينية
- الإعلانات المدمجة مع المحتوى
- الإعلانات مقابل مكافأة
- الإعلانات البينية مقابل مكافأة
هل أنت مستخدم جديد لميزة التوسّط؟ اطّلِع على نظرة عامة حول "توسط AdMob".
إعداد GMA Next-Gen SDK
يوضّح لك دليل البدء السريع كيفية إعداد GMA Next-Gen SDK. أثناء طلب الإعداد هذا، يتم أيضًا إعداد محوّلات التوسّط. من المهم الانتظار حتى تكتمل عملية الإعداد قبل تحميل الإعلانات للتحقّق من المشاركة الكاملة من كل شبكة إعلانات في طلب عرض الإعلان الأول.
يوضّح الرمز النموذجي التالي كيفية التحقّق من حالة إعداد كل محوّل قبل تقديم طلب عرض الإعلان.
Kotlin
import com.google.android.libraries.ads.mobile.sdk.MobileAds
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val backgroundScope = CoroutineScope(Dispatchers.IO)
backgroundScope.launch {
// Initialize GMA Next-Gen SDK on a background thread.
MobileAds.initialize(this@MainActivity, InitializationConfig.Builder("SAMPLE_APP_ID").build()) {
initializationStatus ->
for ((adapterName, adapterStatus) in initializationStatus.adapterStatusMap) {
Log.d(
"MyApp",
String.format(
"Adapter name: %s, Status code: %s, Status string: %s, Latency: %d",
adapterName,
adapterStatus.initializationState,
adapterStatus.description,
adapterStatus.latency,
),
)
}
// Adapter initialization is complete.
}
// Other methods on MobileAds can now be called.
}
}
}
جافا
import com.google.android.libraries.ads.mobile.sdk.MobileAds;
import com.google.android.libraries.ads.mobile.sdk.initialization.AdapterStatus;
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig;
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(
() -> {
// Initialize GMA Next-Gen SDK on a background thread.
MobileAds.initialize(
this,
new InitializationConfig.Builder("SAMPLE_APP_ID")
.build(),
initializationStatus -> {
Map<String, AdapterStatus> adapterStatusMap =
initializationStatus.getAdapterStatusMap();
for (String adapterClass : adapterStatusMap.keySet()) {
AdapterStatus adapterStatus = adapterStatusMap.get(adapterClass);
Log.d(
"MyApp",
String.format(
"Adapter name: %s, Status code: %s, Status description: %s,"
+ " Latency: %d",
adapterClass,
adapterStatus.getInitializationState(),
adapterStatus.getDescription(),
adapterStatus.getLatency()));
}
// Adapter initialization is complete.
});
// Other methods on MobileAds can now be called.
})
.start();
}
}
استبعاد وحدات com.google.android.gms في عمليات دمج التوسّط
تستمر محوّلات التوسّط في الاعتماد على Google Mobile Ads SDK (Legacy). ومع ذلك، يتضمّن GMA Next-Gen SDK جميع الفئات التي تتطلّبها محوّلات التوسّط. لتجنُّب أخطاء التجميع المرتبطة بالرموز المكرّرة، عليك استبعاد Google Mobile Ads SDK (Legacy) من أن يتم سحبه كعنصر تابع من خلال محوّلات التوسّط.
في ملف build.gradle على مستوى التطبيق، استبعِد وحدتَي play-services-ads وplay-services-ads-lite بشكل عام من جميع التبعيات:
Kotlin
configurations.configureEach { exclude(group = "com.google.android.gms", module = "play-services-ads") exclude(group = "com.google.android.gms", module = "play-services-ads-lite") }
Groovy
configurations.configureEach { exclude group: "com.google.android.gms", module: "play-services-ads" exclude group: "com.google.android.gms", module: "play-services-ads-lite" }
التحقّق من فئة محوّل شبكة الإعلانات التي حمّلت الإعلان
في ما يلي رمز نموذجي يسجّل اسم فئة شبكة الإعلانات لإعلان بانر:
Kotlin
BannerAd.load(
BannerAdRequest.Builder("AD_UNIT_ID", AdSize.BANNER).build(),
object : AdLoadCallback<BannerAd> {
override fun onAdLoaded(ad: BannerAd) {
Log.d(
"MyApp", "Adapter class name: " +
ad.getResponseInfo().mediationAdapterClassName
)
}
}
)
جافا
BannerAd.load(
new BannerAdRequest.Builder("AD_UNIT_ID", AdSize.BANNER).build(),
new AdLoadCallback<BannerAd>() {
@Override
public void onAdLoaded(@NonNull BannerAd ad) {
Log.d("MyApp",
"Adapter class name: " + ad.getResponseInfo().getMediationAdapterClassName());
}
}
);
استخدام "إعلانات البانر" مع ميزة "توسط AdMob"
تأكَّد من إيقاف إعادة التحميل في جميع واجهات مستخدم مصادر الإعلانات التابعة لجهات خارجية لوحدات "إعلانات البانر" المستخدَمة في ميزة "توسّط AdMob". يمنع ذلك إعادة التحميل المزدوجة لأنّ AdMob يشغّل أيضًا إعادة تحميل استنادًا إلى معدّل إعادة تحميل وحدة "إعلانات البانر".
قوانين الخصوصية في الولايات الأمريكية و"اللائحة العامة لحماية البيانات" (GDPR)
إذا كنت بحاجة إلى الالتزام بقوانين الخصوصية في الولايات الأمريكية أو اللائحة العامة لحماية البيانات (GDPR)، اتّبِع الخطوات الواردة في إعدادات اللوائح التنظيمية في الولايات الأمريكية أو إعدادات اللائحة العامة لحماية البيانات (GDPR) لإضافة شركاء التوسّط في قائمة الشركاء الإعلانيين في الولايات الأمريكية أو قائمة الشركاء الإعلانيين بموجب اللائحة العامة لحماية البيانات (GDPR) ضمن "الخصوصية والمراسلة" في AdMob. قد يؤدي عدم الالتزام بذلك إلى عدم تمكّن الشركاء من عرض الإعلانات على تطبيقك.
مزيد من المعلومات عن تفعيل وضع "المعالجة المحدودة للبيانات" (RDP) والحصول على موافقة بموجب "اللائحة العامة لحماية البيانات" (GDPR) باستخدام حزمة تطوير البرامج (SDK) لمنصّة Google User Messaging Platform (UMP)