شروع کنید

«پخش آگهی زنده» به شما امکان می‌دهد نشان‌های آگهی Google را در درخواست‌های آگهی و درطول بازپخش آگهی ارسال کنید.

این راهنما افزودن Android PAL SDK به برنامه را پوشش می‌دهد. برای دیدن برنامه نمونه‌ای که از PAL برای تولید یک nonce استفاده می‌کند، نمونه Android را از GitHub بارگیری کنید.

افزودن «کیت توسعه نرم‌افزار Android PAL» به‌عنوان کتابخانه

از نسخه 18.0.0، کیت توسعه نرم‌افزار PAL در مخزن Maven Google میزبانی می‌شود و می‌تواند به روش زیر به برنامه شما اضافه شود:

implementation("com.google.android.gms:play-services-pal:23.1.0")

یا کیت توسعه نرم‌افزار PAL را می‌توانید از مخزن Maven در Google بارگیری کنید و به‌صورت دستی به برنامه‌تان اضافه کنید.

فعال کردن desugaring برنامه

از نسخه ۲۳.۰.۰، «کتابخانه تبلیغات پخش زنده» از شما می‌خواهد که با تنظیم coreLibraryDesugaringEnabled true و افزودن وابستگی به com.android.tools:desugar_jdk_libs در فایل build.gradle، برنامه desugaring را فعال کنید. برای جزئیات بیشتر، میاناهای برنامه‌سازی کاربردی Java 11+ دردسترس ازطریق قندزدایی با مشخصات nio را ببینید.

coreLibraryDesugaringEnabled = true

تولید مقدار یک‌بارمصرف

«نانس» رشته‌ای رمزگذاری‌شده است که PAL بااستفاده از کلاس NonceLoader تولید می‌کند. ‫PAL نیاز دارد که هر درخواست جاری‌سازی با یک مقدار یک‌بارمصرف منحصربه‌فرد همراه باشد. بااین‌حال، می‌توانید از اعداد تصادفی برای چندین درخواست آگهی در یک جاری‌سازی استفاده مجدد کنید. برای تولید یک نانس بااستفاده از PAL SDK، تغییرات زیر را برای وارد کردن و راه‌اندازی PAL انجام دهید و تابعی برای تولید نانس ایجاد کنید:

  1. با انجام مراحل زیر، PAL را وارد و راه‌اندازی کنید:

    1. وارد کردن کلاس‌های PAL:

      import com.google.ads.interactivemedia.pal.ConsentSettings;
      import com.google.ads.interactivemedia.pal.NonceLoader;
      import com.google.ads.interactivemedia.pal.NonceManager;
      import com.google.ads.interactivemedia.pal.NonceRequest;
      import com.google.android.gms.tasks.OnFailureListener;
      import com.google.android.gms.tasks.OnSuccessListener;
      import java.util.HashSet;
      import java.util.Set;
      
      
    2. متغیرهای خصوصی برای ذخیره کردن نمونه‌های NonceLoader و NonceManager ایجاد کنید:

      private NonceLoader nonceLoader;
      private NonceManager nonceManager;
      
    3. نمونه NonceLoader خود را با نمونه ConsentSettings در روش onCreate مقداردهی اولیه کنید:

      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      
        // By default, PAL automatically determines whether to enable limited ads
        // based on the user's TCF (Transparency and Consent Framework) consent data
        // on the device. If you must manually override the default behavior,
        // for example, to meet your app's requirements, use the
        // `ConsentSettings.Builder.forceLimitedAds` property.
        ConsentSettings consentSettings = ConsentSettings.builder().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);
      
        adClickButton = findViewById(R.id.send_click_button);
      
        logView = findViewById(R.id.log_view);
        logView.setMovementMethod(new ScrollingMovementMethod());
      }
      
      

    در برنامه‌تان، برای هر جلسه کاربر، یک نمونه از کلاس NonceLoader ایجاد کنید. اگر برنامه شما چند صفحه یا ساختار معادل دارد، برای هر صفحه یا معادل صفحه، نمونه NonceLoader جدیدی ایجاد کنید. بااستفاده از نمونه NonceLoader یکسان، همبسته‌ساز صفحه &correlator را درطول عمر صفحه یا جلسه کاربر در برنامه بدون تغییر نگه می‌دارید. همچنان بر همبسته‌ساز جاری‌سازی &scor کنترل دارید، که باید آن را برای هر جاری‌سازی جدید با تولید یک مقدار یک‌بارمصرف جدید بازنشانی کنید.

    همه درخواست‌های آگهی جاری‌سازی یکسان باید از نمونه NonceLoader یکسان و مقدار همبستگی جاری‌سازی یکسان برای ویژگی‌های محدود کردن فراوانی و کنارگذاری رقابتی استفاده کنند.

  2. تولید یک نانس:

    public void generateNonceForAdRequest(View view) {
      logMessage("Generate Nonce Request");
      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();
    
      nonceLoader
          .loadNonceManager(nonceRequest)
          .addOnSuccessListener(
              new OnSuccessListener<NonceManager>() {
                @Override
                public void onSuccess(NonceManager manager) {
                  nonceManager = manager;
                  String nonceString = manager.getNonce();
                  logMessage("Nonce generated");
                  logMessage(nonceString.substring(0, 20) + "...");
                  Log.i(LOG_TAG, "Generated nonce: " + nonceString);
    
                  // From here you would trigger your ad request and move on to initialize content.
                  exampleMakeAdRequest(DEFAULT_AD_TAG + "&givn=" + nonceString);
    
                  adClickButton.setEnabled(true);
                }
              })
          .addOnFailureListener(
              new OnFailureListener() {
                @Override
                public void onFailure(Exception error) {
                  logMessage("Nonce generation failed");
                  Log.e(LOG_TAG, "Nonce generation failed: " + error.getMessage());
                }
              });
    }
    
    

    برای همه درخواست‌های آگهی در یک پخش جاری‌سازی واحد، فقط به یک مقدار یک‌بارمصرف نیاز دارید. برای اهداف آزمایش، این تابع را هنگام کلیک کردن روی دکمه‌ای در برنامه آزمایشی‌تان فراخوانی کنید. پارامترهای NonceRequest تنظیم‌شده در این راهنما پارامترهای نمونه هستند. پارامترهایتان را براساس ویژگی‌های برنامه خودتان تنظیم کنید.

    این تابع به‌صورت ناهمزمان یک «تک‌مصرف» تولید می‌کند. باید هر دو حالت موفقیت و عدم موفقیت درخواست تک‌عنصری را مدیریت کنید. پس‌از دردسترس قرار گرفتن مدیر نومن، قبل‌از اینکه بااستفاده از روش nonceManager.getNonce() درخواست آگهی کنید، نومن را بازیابی کنید.

پیوست کردن تک‌عنصری به درخواست آگهی

برای استفاده از نانس تولیدشده، برچسب آگهی‌تان را با پارامتر givn و مقدار نانس قبل‌از ایجاد درخواست‌های آگهی پیوست کنید:

// From here you would trigger your ad request and move on to initialize content.
exampleMakeAdRequest(DEFAULT_AD_TAG + "&givn=" + nonceString);

اگر از Google درخواست آگهی می‌کنید و آگهی‌ها را ارائه می‌کنید، باید نماد و رونهاد AdChoices را ارائه کنید. برای جزئیات مربوط به تجزیه پاسخ VAST و پرداز کردن نمادها، به نماد و رونهاد AdChoices مراجعه کنید.

ردیابی رویدادهای بازپخش

برای پیگیری رویدادهای بازپخش، باید مدیریت‌کننده‌های رویداد را تنظیم کنید تا نشان‌های آگهی را به Google ارسال کنند:

// Triggered when a user clicks-through on an ad which was requested using a PAL nonce.
public void sendAdClick(View view) {
  logMessage("Ad click sent");
  if (nonceManager != null) {
    nonceManager.sendAdClick();
  }
}

// In a typical PAL app, this is called when a user touch or click is detected,
// on the ad other than an ad click-through.
public void onVideoViewTouch(MotionEvent e) {
  if (nonceManager != null) {
    nonceManager.sendAdTouch(e);
  }
}

// In a typical PAL app, this is called when a content playback session starts.
public void sendPlaybackStart() {
  logMessage("Playback start");
  if (nonceManager != null) {
    nonceManager.sendPlaybackStart();
  }
}

// In a typical PAL app, this is called when a content playback session ends.
public void sendPlaybackEnd() {
  logMessage("Playback end");
  if (nonceManager != null) {
    nonceManager.sendPlaybackEnd();
  }
}

در اینجا زمان فراخوانی هر تابع در پیاده‌سازی شما آمده است:

  • sendPlaybackStart(): وقتی جلسه بازپخش ویدیو شما شروع می‌شود
  • sendPlaybackEnd(): وقتی جلسه بازپخش ویدیو شما به پایان می‌رسد
  • ‫sendAdClick(): هر بار که بیننده روی آگهی کلیک می‌کند
  • ‫sendAdTouch(): در هر تعامل لمسی با پخش‌کننده

برای اهداف آزمایش، روش‌های مدیریت‌کننده رویداد را به رویدادهای کلیک دکمه پیوست کنید. در پیاده‌سازی تولید، برنامه خود را برای رویدادهای پخش‌کننده تنظیم کنید تا روش‌های کنترل‌کننده رویداد را فراخوانی کند.

(اختیاری) ارسال نشان‌های Google Ad Manager ازطریق سرورهای آگهی طرف سوم

وقتی کارساز آگهی طرف سوم خود را برای کار با Google Ad Manager راه‌اندازی می‌کنید، برای دریافت و بازارسال مقدار یک‌بارمصرف در هر درخواست آگهی، به مستندات کارساز خود مراجعه کنید. مثال ارائه‌شده مربوط به نشانی وب درخواست آگهی با پارامتر یک‌بارمصرف است که در آن گنجانده شده است. پارامتر nonce از «کیت توسعه نرم‌افزار PAL»، ازطریق سرورهای واسطه شما، و سپس به Ad Manager منتقل می‌شود و درآمدزایی بهتر را امکان‌پذیر می‌کند.

سرور آگهی طرف سوم خود را پیکربندی کنید تا مقدار یک‌بارمصرف را در درخواست سرور به Ad Manager بگنجاند. در اینجا نمونه‌ای از برچسب آگهی پیکربندی‌شده در سرور آگهی طرف سوم آورده شده است:

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

برای جزئیات بیشتر، راهنمای پیاده‌سازی سمت سرور Google Ad Manager را ببینید.

‫Ad Manager به‌دنبال givn= می‌گردد تا مقدار تک‌منشی را شناسایی کند. کارساز آگهی طرف سوم باید از برخی‌از کلان‌های خود، مانند %%custom_key_for_google_nonce%%، پشتیبانی کند و آن را با پارامتر پُرسمان یک‌بارمصرف که در مرحله قبلی ارائه کردید جایگزین کند. اطلاعات بیشتر درباره نحوه انجام این کار در اسناد کارگزار آگهی طرف سوم دردسترس است.