শুরু করুন

PAL আপনাকে আপনার বিজ্ঞাপনের অনুরোধে এবং বিজ্ঞাপন প্লেব্যাকের সময় Google বিজ্ঞাপন সংকেত পাঠাতে দেয়।

এই নির্দেশিকাটিতে আপনার অ্যাপে Android PAL SDK যোগ করার বিষয়টি আলোচনা করা হয়েছে। PAL ব্যবহার করে একটি নন্স তৈরি করে এমন একটি নমুনা অ্যাপ দেখতে, GitHub থেকে Android উদাহরণটি ডাউনলোড করুন।

লাইব্রেরি হিসেবে Android PAL SDK যোগ করুন

১৮.০.০ সংস্করণ অনুসারে, PAL SDK গুগলের ম্যাভেন রিপোজিটরিতে হোস্ট করা হয়েছে এবং আপনার অ্যাপে নিম্নরূপ যোগ করা যেতে পারে:

implementation 'com.google.android.gms:play-services-pal:22.1.0'

বিকল্পভাবে, PAL SDK গুগলের Maven সংগ্রহস্থল থেকে ডাউনলোড করা যেতে পারে এবং ম্যানুয়ালি আপনার অ্যাপে যোগ করা যেতে পারে।

ননস তৈরি করুন

একটি ননস হল একটি একক এনক্রিপ্টেড স্ট্রিং যা 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. onCreate পদ্ধতিতে একটি ConsentSettings ইনস্ট্যান্স দিয়ে আপনার NonceLoader ইনস্ট্যান্সটি আরম্ভ করুন:

      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      
        // 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 isStorageAllowed = getConsentToStorage();
      
        ConsentSettings consentSettings =
            ConsentSettings.builder().allowStorage(isStorageAllowed).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() পদ্ধতি ব্যবহার করে বিজ্ঞাপন অনুরোধ করার আগে ননসটি পুনরুদ্ধার করুন।

বিজ্ঞাপনের অনুরোধে ননস সংযুক্ত করুন

জেনারেট করা nonce ব্যবহার করতে, আপনার বিজ্ঞাপনের অনুরোধ করার আগে আপনার বিজ্ঞাপন ট্যাগের সাথে একটি givn প্যারামিটার এবং nonce মান যুক্ত করুন:

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

প্লেব্যাক ইভেন্টগুলি ট্র্যাক করুন

প্লেব্যাক ইভেন্ট ট্র্যাক করতে, আপনাকে 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 বিজ্ঞাপন ম্যানেজার সিগন্যাল পাঠান

যখন আপনি Google Ad Manager-এর সাথে কাজ করার জন্য আপনার থার্ড-পার্টি বিজ্ঞাপন সার্ভার সেট আপ করেন, তখন প্রতিটি বিজ্ঞাপন অনুরোধে nonce মান ক্যাপচার এবং ফরোয়ার্ড করার জন্য আপনার সার্ভারের ডকুমেন্টেশন দেখুন। প্রদত্ত উদাহরণটি nonce প্যারামিটার সহ একটি বিজ্ঞাপন অনুরোধ URL এর। nonce প্যারামিটারটি PAL SDK থেকে আপনার মধ্যস্থতাকারী সার্ভারের মাধ্যমে এবং তারপর বিজ্ঞাপন পরিচালকের কাছে প্রেরণ করা হয়, যা আরও ভাল নগদীকরণ সক্ষম করে।

আপনার থার্ড-পার্টি বিজ্ঞাপন সার্ভার কনফিগার করুন যাতে অ্যাড ম্যানেজারের কাছে সার্ভারের অনুরোধে nonce অন্তর্ভুক্ত থাকে। থার্ড-পার্টি বিজ্ঞাপন সার্ভারের ভিতরে কনফিগার করা একটি বিজ্ঞাপন ট্যাগের উদাহরণ এখানে দেওয়া হল:

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

আরও বিস্তারিত জানার জন্য, Google বিজ্ঞাপন ম্যানেজার সার্ভার-সাইড বাস্তবায়ন নির্দেশিকা দেখুন।

বিজ্ঞাপন ব্যবস্থাপক ননস মান সনাক্ত করার জন্য givn= অনুসন্ধান করে। তৃতীয় পক্ষের বিজ্ঞাপন সার্ভারকে তার নিজস্ব কিছু ম্যাক্রো সমর্থন করতে হবে, যেমন %%custom_key_for_google_nonce%% , এবং এটিকে পূর্ববর্তী ধাপে আপনার দেওয়া ননস কোয়েরি প্যারামিটার দিয়ে প্রতিস্থাপন করতে হবে। এটি কীভাবে সম্পন্ন করবেন সে সম্পর্কে আরও তথ্য তৃতীয় পক্ষের বিজ্ঞাপন সার্ভারের ডকুমেন্টেশনে পাওয়া যাবে।