מעבר ל-GMA Next-Gen SDK

בדף הזה מוסבר איך לאתחל את GMA Next-Gen SDK.

לפני שמתחילים

המדריך הזה מיועד לבעלי אפליקציות ולפלטפורמות של צד שלישי שמבצעים שילוב ישיר של GMA Next-Gen SDK.

אם אתם מתחברים ל-AdMob דרך פלטפורמה של צד שלישי לבחירת רשת שתומכת בבידינג במכרזים של שותפים, כדאי לעיין בטבלה הבאה כדי לוודא שהפלטפורמה תואמת ל-GMA Next-Gen SDK.

הפלטפורמה שבה נערך תהליך בחירת הרשת (Mediation) תואם ל-GMA Next-Gen SDK
AdMost
AppLovin MAX
Chartboost Mediation
DT Fairbid
Gravite
Nimbus
TopOn
TradPlus VisiM
Unity LevelPlay

אם אתם רוצים להשתמש בפלטפורמה שבה נערך תהליך בחירת הרשת (Mediation) שאינה תואמת ל-GMA Next-Gen SDK, עליכם לפנות לפלטפורמה שבה נערך תהליך בחירת הרשת (Mediation) כדי לבקש תמיכה.

הגדרת ה-build ל-GMA Next-Gen SDK

בקטעים הבאים מוסבר איך להגדיר את GMA Next-Gen SDK.

הוספת התלות GMA Next-Gen SDK

‫GMA Next-Gen SDK דורש תלות שונה ב-Gradle. בקובץ ה-build ברמת האפליקציה, מסירים את ההפניה לתלות Google Mobile Ads SDK (Legacy) וכוללים את הארטיפקט החדש.

תלויות של Gradle
Google Mobile Ads SDK (Legacy)

Kotlin

dependencies {
  // ...
  implementation("com.google.android.gms:play-services-ads:25.5.0")
}

Groovy

dependencies {
  // ...
  implementation 'com.google.android.gms:play-services-ads:25.5.0'
}
GMA Next-Gen SDK

Kotlin

dependencies {
  // ...
  // Comment out/remove play-services-ads.
  // implementation("com.google.android.gms:play-services-ads:25.5.0")
  implementation("com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.5.0")
}

Groovy

dependencies {
  // ...
  // Comment out/remove play-services-ads.
  // implementation 'com.google.android.gms:play-services-ads:25.5.0'
  implementation 'com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.5.0'
}

החרגת מודולים של com.google.android.gms בשילובים של בחירת רשת

מתאמי הגישור ממשיכים להיות תלויים ב-Google Mobile Ads SDK (Legacy). עם זאת, GMA Next-Gen SDK כולל את כל המחלקות שנדרשות על ידי מתאמי הגישור. כדי להימנע משגיאות קומפילציה שקשורות לסמלים כפולים, צריך להחריג את Google Mobile Ads SDK (Legacy) כך שלא יימשך כתלות על ידי מתאמי גישור.

בקובץ ה-build ברמת האפליקציה, צריך להחריג את המודולים 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"
}

הגדרת רמות ה-API המינימליות והמיועדות לטירגוט ב-Android

‫GMA Next-Gen SDK דורש רמת API מינימלית של Android‏ 24 ורמת API של Android‏ 34 למהדר. משנים את הערכים של minSdk ו-compileSdk בקובץ build ברמת האפליקציה ל-24 ומעלה ול-34 ומעלה, בהתאמה.

אתחול GMA Next-Gen SDK

ב-GMA Next-Gen SDK צריך לבצע אתחול לפני טעינת המודעות. זה שינוי לעומת Google Mobile Ads SDK (Legacy), שבו האתחול הוא אופציונלי אבל מומלץ. אם לא הפעלתם את ה-SDK לפני טעינת המודעות, תצטרכו לעדכן את הקוד.

בקטע הזה מוסבר על ההבדלים בהטמעה של אתחול SDK בין Google Mobile Ads SDK (Legacy) לבין GMA Next-Gen SDK.

הגדרת מזהה האפליקציה שמקושרת ל-AdMob

בדוגמאות הבאות מוגדר מזהה האפליקציה ב-AdMob ב-Google Mobile Ads SDK (Legacy) וב-GMA Next-Gen SDK:

Google Mobile Ads SDK (Legacy)

ההטמעה דורשת תג <meta-data> עם android:name="com.google.android.gms.ads.APPLICATION_ID" שמכיל את מזהה האפליקציה שמקושרת ל-AdMob בקובץ AndroidManifest.xml של האפליקציה.

<manifest>
  <application>
    <!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 -->
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="SAMPLE_APP_ID"/>
  </application>
</manifest>
GMA Next-Gen SDK

ספק את מזהה האפליקציה שמקושרת ל-AdMob באופן פרוגרמטי כחלק מהפעלת ה-SDK.

Kotlin

// Initialize the Google Mobile Ads SDK.
val initConfig = InitializationConfig.Builder("SAMPLE_APP_ID").build()
MobileAds.initialize(this@MainActivity, initConfig) {}

Java

// Initialize GMA Next-Gen SDK.
InitializationConfig initConfig =
    new InitializationConfig.Builder("SAMPLE_APP_ID").build();
MobileAds.initialize(this, initConfig, initializationStatus -> {});

בדיקת שינויים בהטמעה

בדוגמאות הבאות מתבצע אתחול של Google Mobile Ads SDK (Legacy) ו-GMA Next-Gen SDK:

Google Mobile Ads SDK (Legacy)

מתקשרים אל MobileAds.initialize() כדי לאתחל את Google Mobile Ads SDK. מומלץ לבצע את ההפעלה בשרשור ברקע כדי להפחית את מספר שגיאות ה-ANR.

Kotlin

import com.google.android.gms.ads.MobileAds
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 the Google Mobile Ads SDK on a background thread.
      MobileAds.initialize(this@MainActivity) {}
    }
  }
}

Java

import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;

public class MainActivity extends AppCompatActivity {
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new Thread(
            () -> {
              // Initialize the Google Mobile Ads SDK on a background thread.
              MobileAds.initialize(this, initializationStatus -> {});
            })
        .start();
  }
}
GMA Next-Gen SDK

מתקשרים אל MobileAds.initialize() כדי להפעיל את GMA Next-Gen SDK. צריך להפעיל את הפונקציה הזו בשרשור ברקע. אם לא עושים את זה, יכולה להתרחש שגיאה מסוג 'האפליקציה לא מגיבה' (ANR).

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,
        // Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713
        InitializationConfig.Builder("SAMPLE_APP_ID").build()
      ) {
        // Adapter initialization is complete.
      }
      // SDK initialization is complete. If you don't want to wait for bidding adapters to finish
      // initializing, start loading ads now.
    }
  }
}

Java

import com.google.android.libraries.ads.mobile.sdk.MobileAds;
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,
                  // Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713
                  new InitializationConfig.Builder("SAMPLE_APP_ID")
                      .build(),
                  initializationStatus -> {
                    // Adapter initialization is complete.
                  });
              // SDK initialization is complete. If you don't want to wait for bidding adapters to
              // finish initializing, start loading ads now.
            })
        .start();
  }
}