Başlarken

İlk adım, Android PAL SDK'sını uygulamanıza eklemektir.

Android PAL SDK'sını kitaplık olarak ekleme

18.0.0 sürümünden itibaren PAL SDK'sı, Google'ın Maven deposunda barındırılır ve uygulamanıza aşağıdaki şekilde ekleyebilirsiniz:

app/build.gradle

...
dependencies {
    implementation 'com.google.android.gms:play-services-pal:20.2.0'
    ...
}

Alternatif olarak PAL SDK'sı Google'ın Maven deposundan indirilip uygulamanıza manuel olarak eklenebilir.

Tek seferlik sayı oluşturma

Bir "tek seferlik rastgele sayı" PAL tarafından NonceLoader kullanılarak oluşturulan tek bir şifrelenmiş dizedir. PAL SDK'sı, her yeni akış isteğine yeni bir akış isteğinin eşlik etmesini gerektirir. tek seferlik rastgele sayı. Ancak nonce'lar içindeki birden fazla reklam isteği için yeniden kullanılabilir görebilirsiniz. PAL SDK'yı kullanarak tek seferlik bir tek seferlik rastgele sayı oluşturmak için MyActivity.java Tek seferlik rastgele sayı oluşturmak üzere PAL kullanan örnek bir uygulama görmek için Android örneğini şuradan indirin: GitHub'a gidin.

Öncelikle PAL SDK'sını içe aktarmanız ve saklamak için bazı özel mülkler oluşturmanız gerekir NonceLoader ve NonceManager ayarlarını yapın, ardından NonceLoader'ınızı başlatın.

NonceLoader sınıfının yalnızca bir örneğini oluşturmanızı öneririz. Uygulamanızda birden fazla sayfa veya eşdeğeri olmadığı sürece uygulamanızdaki her kullanıcı oturumu birlikte çalışır. Bu işlem, sayfa ilişkilendiricisini (&correlator) bir sayfa ya da kullanıcının uygulamadaki oturumunun süresi baz alınır. Kontrol sizde olmaya devam eder. her yeni akış için bir kez sıfırlanması gereken akış ilişkilendiricisi (&scor).

Aynı akışın tüm reklam istekleri, aynı NonceLoader ve sıklık sınırı ve rakip hariç tutma için akış ilişkilendirici değeri özellikleri düzgün şekilde çalışmasını sağlar.

import android.app.Activity;
import android.os.Bundle;
import com.google.ads.interactivemedia.pal.NonceLoader;
import com.google.ads.interactivemedia.pal.NonceManager;
import com.google.ads.interactivemedia.pal.NonceRequest;
import com.google.ads.interactivemedia.pal.ConsentSettings;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;

import java.util.HashSet;
import java.util.Set;

public class MainActivity extends Activity {
...
  private NonceLoader nonceLoader;
  private NonceManager nonceManager = null;
  private ConsentSettings consentSettings;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // The default value for allowStorage() is false, but can be
    // changed once the appropriate consent has been gathered. The
    // getConsentToStorage() method is a placeholder for the publisher's own
    // method of obtaining user consent, either by integrating with a CMP or
    // based on other methods the publisher chooses to handle storage consent.

    boolean isConsentToStorage = getConsentToStorage();

    videoView = findViewById(R.id.video_view);
    videoView.setOnTouchListener(this::onVideoViewTouch);

    consentSettings = ConsentSettings.builder()
            .allowStorage(isConsentToStorage)
            .build();

    // It is important to instantiate the NonceLoader as early as possible to
    // allow it to initialize and preload data for a faster experience when
    // loading the NonceManager. A new NonceLoader will need to be instantiated
    //if the ConsentSettings change for the user.
    nonceLoader = new NonceLoader(this, consentSettings);
    ...
  }

Ardından, tek seferlik rastgele sayı oluşturma işlemini tetiklemek için bir işlev oluşturun. Yalnızca bir tek seferlik rastgele sayı gerekiyor tek bir akış oynatmadaki tüm reklam istekleri için geçerlidir. Test amacıyla, test uygulamanızdaki bir düğmeyi tıklayarak bu işlevi çağırabilir. İlgili içeriği oluşturmak için kullanılan Burada ayarlanan NonceRequest parametresi örnek parametrelerdir. Parametrelerinizi kendi uygulama özelliklerinize göre ayarlamanız gerekir.

Bu işlev, tek seferlik rastgele oluşturmayı eşzamansız olarak tetikler. Bu nedenle, tek seferlik rastgele sayı isteğinin başarılı veya başarısız olmasıyla ilgili işlem yapmak için bir AsyncTask uygulayın:

public void generateNonceForAdRequest() {
  Set supportedApiFrameWorksSet = new HashSet();
  // The values 2, 7, and 9 correspond to player support for VPAID 2.0,
  // OMID 1.0, and SIMID 1.1.
  supportedApiFrameWorksSet.add(2);
  supportedApiFrameWorksSet.add(7);
  supportedApiFrameWorksSet.add(9);

  NonceRequest nonceRequest = NonceRequest.builder()
      .descriptionURL("https://example.com/content1")
      .iconsSupported(true)
      .omidPartnerVersion("6.2.1")
      .omidPartnerName("Example Publisher")
      .playerType("ExamplePlayerType")
      .playerVersion("1.0.0")
      .ppid("testPpid")
      .sessionId("Sample SID")
      .supportedApiFrameworks(supportedApiFrameWorksSet)
      .videoPlayerHeight(480)
      .videoPlayerWidth(640)
      .willAdAutoPlay(true)
      .willAdPlayMuted(false)
      .build();
  NonceCallbackImpl callback = new NonceCallbackImpl();
  nonceLoader
      .loadNonceManager(nonceRequest)
      .addOnSuccessListener(callback)
      .addOnFailureListener(callback);
}

private class NonceCallbackImpl implements OnSuccessListener<NonceManager>, OnFailureListener {
  @Override
  public void onSuccess(NonceManager manager) {
    nonceManager = manager;
    String nonceString = manager.getNonce();
    Log.i("PALSample", "Generated nonce: " + nonceString);
    // from here you would trigger your ad request and move on to initialize content
  }

  @Override
  public void onFailure(Exception error) {
    Log.e("PALSample", "Nonce generation failed: " + error.getMessage());
  }
}

Bir tek seferlik rastgele sayı yöneticisi oluşturulduktan sonra, tek seferlik rastgele sayı nonceManager.getNonce()

Reklam isteğine tek seferlik rastgele sayı ekle

Oluşturulan tek seferlik rastgele sayıyı kullanmak için reklam etiketinizi bir givn parametresi ve tek seferlik rastgele sayısı değerini girin.

/**
 * The ad tag for your ad request, for example:
 * https://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external\
 * /single_ad_samples&ciu_szs=300x250&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1\
 * &cust_params=deployment%3Ddevsite%26sample_ct%3Dlinear&correlator=
 *
 * For more sample ad tags, see
 * developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/tags
 */
private static final String DEFAULT_AD_TAG = "Your ad tag";
...
@Override
public void onSuccess(NonceManager manager) {
  nonceManager = manager;
  String nonceString = manager.getNonce();
  Log.i("PALSample", "Generated nonce: " + nonceString);
  // Append the nonce to the ad tag URL.
  makeAdRequest(DEFAULT_AD_TAG + "&givn=" + nonceString);
}

Oynatma etkinliklerini izleme

Son olarak, oynatıcınız için çeşitli etkinlik işleyiciler uygulamanız gerekir. Örneğin, Bunu test amacıyla düğme tıklama etkinliklerine ekleyebilirsiniz, ancak uygulandığında bunlar uygun oynatıcı etkinlikleri tarafından tetiklenir:

public void sendAdClick() {
  if (nonceManager != null) {
    nonceManager.sendAdClick();
  }
}

public void sendPlaybackStart() {
  if (nonceManager != null) {
    nonceManager.sendPlaybackStart();
  }
}

public void sendPlaybackEnd() {
  if (nonceManager != null) {
    nonceManager.sendPlaybackEnd();
  }
}

public void onVideoViewTouch(MotionEvent e) {
  if (nonceManager != null) {
    nonceManager.sendTouch(e);
  }
}

Uygulamanızda her bir işlevin ne zaman çağrılacağı aşağıda açıklanmıştır:

  • sendPlaybackStart(): Video oynatma oturumunuz başladığında
  • sendPlaybackEnd(): Video oynatma oturumunuz sona erdiğinde
  • sendAdClick(): İzleyici bir reklamı her tıkladığında
  • sendTouch(): Oyuncuyla her dokunma etkileşiminde

(İsteğe bağlı) Üçüncü taraf reklam sunucuları üzerinden Google Ad Manager sinyalleri gönderme

Üçüncü taraf reklam sunucunuzu Google Ad Manager ile çalışacak şekilde ayarladığınızda, her bir reklamdaki tek seferlik rastgele değerini yakalamak ve iletmek için sunucunuzun belgelerine isteği gönderin. Sağlanan örnek, nonce parametresini içeren bir reklam isteği URL'sidir dahil. Tek seferlik rastgele sayı parametresi, Ad Manager'a devrederek daha iyi para kazanma olanağı sağlar.

Üçüncü taraf reklam sunucunuzu, tek seferlik rastgele değeri sunucunun isteği gönderir. Burada, üçüncü taraf reklam sunucusu:

'https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...'

Daha fazla bilgi için Google Ad Manager Sunucu tarafı uygulaması rehberini inceleyin.

Ad Manager, tek seferlik rastgele sayı değerini tanımlamak için givn= değerini arar. Üçüncü taraf reklamı sunucunun kendine ait bir makroyu desteklemesi gerekir (örneğin, %%custom_key_for_google_nonce%% ve bunu tek seferlik sorgu parametresiyle değiştirin adımları gerçekleştirebilirsiniz. Bunun nasıl yapılacağı hakkında daha fazla bilgi üçüncü taraf reklam sunucusunun dokümanlarında bulunmalıdır.