শুরু করুন

Google ব্যবহারকারী মেসেজিং প্ল্যাটফর্ম (UMP) SDK হল একটি গোপনীয়তা এবং মেসেজিং টুল যা আপনাকে গোপনীয়তা পছন্দগুলি পরিচালনা করতে সহায়তা করে৷ আরও তথ্যের জন্য, গোপনীয়তা এবং বার্তাপ্রেরণ সম্পর্কে দেখুন।

পূর্বশর্ত

  • Android API স্তর 21 বা উচ্চতর

একটি বার্তা টাইপ তৈরি করুন

আপনার অ্যাড ম্যানেজার অ্যাকাউন্টের গোপনীয়তা এবং মেসেজিং ট্যাবের অধীনে উপলভ্য ব্যবহারকারী বার্তাগুলির একটি দিয়ে ব্যবহারকারীর বার্তা তৈরি করুন। UMP SDK আপনার প্রোজেক্টে সেট করা অ্যাড ম্যানেজার অ্যাপ্লিকেশন আইডি থেকে তৈরি একটি গোপনীয়তা বার্তা প্রদর্শন করার চেষ্টা করে।

আরো বিস্তারিত জানার জন্য, গোপনীয়তা এবং বার্তাপ্রেরণ সম্পর্কে দেখুন।

Gradle দিয়ে ইনস্টল করুন

Google ব্যবহারকারী মেসেজিং প্ল্যাটফর্ম SDK-এর জন্য আপনার মডিউলের অ্যাপ-লেভেল গ্রেডল ফাইলে নির্ভরতা যোগ করুন, সাধারণত app/build.gradle :

dependencies {
  implementation("com.google.android.ump:user-messaging-platform:3.1.0")
}

আপনার অ্যাপের build.gradle এ পরিবর্তন করার পর, Gradle ফাইলের সাথে আপনার প্রোজেক্ট সিঙ্ক করতে ভুলবেন না।

অ্যাপ্লিকেশন আইডি যোগ করুন

আপনি অ্যাড ম্যানেজার UI- তে আপনার অ্যাপ্লিকেশন আইডি খুঁজে পেতে পারেন। নিম্নলিখিত কোড স্নিপেট সহ আপনার AndroidManifest.xml এ ID যোগ করুন:

<manifest>
  <application>
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
  </application>
</manifest>

সম্মতি সংগ্রহ করতে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:

  1. সবচেয়ে সাম্প্রতিক ব্যবহারকারীর সম্মতি তথ্যের জন্য অনুরোধ.
  2. প্রয়োজনে একটি সম্মতি ফর্ম লোড করুন এবং উপস্থাপন করুন।

প্রতিটি অ্যাপ লঞ্চের সময় আপনার requestConsentInfoUpdate() ব্যবহার করে ব্যবহারকারীর সম্মতির তথ্য আপডেট করার অনুরোধ করা উচিত। এই অনুরোধ নিম্নলিখিত পরীক্ষা করে:

  • সম্মতি প্রয়োজন কিনা । উদাহরণস্বরূপ, প্রথমবারের জন্য সম্মতি প্রয়োজন, বা পূর্ববর্তী সম্মতির সিদ্ধান্তের মেয়াদ শেষ হয়ে গেছে।
  • একটি গোপনীয়তা বিকল্প এন্ট্রি পয়েন্ট প্রয়োজন কিনা . কিছু গোপনীয়তা বার্তার জন্য অ্যাপের প্রয়োজন হয় যাতে ব্যবহারকারীরা যে কোনো সময় তাদের গোপনীয়তা বিকল্পগুলি পরিবর্তন করতে পারেন।

প্রয়োজনে একটি গোপনীয়তা বার্তা ফর্ম লোড করুন এবং উপস্থাপন করুন

আপনি সর্বাধিক আপ-টু-ডেট সম্মতির স্থিতি পাওয়ার পরে, ব্যবহারকারীর সম্মতি সংগ্রহের জন্য প্রয়োজনীয় যেকোন ফর্ম লোড করতে loadAndShowConsentFormIfRequired() এ কল করুন। লোড করার পরে, ফর্মগুলি অবিলম্বে উপস্থিত হয়।

নিম্নলিখিত কোডটি প্রদর্শন করে যে কীভাবে ব্যবহারকারীর সর্বশেষ সম্মতির তথ্যের জন্য অনুরোধ করতে হয়। যদি প্রয়োজন হয়, কোডটি লোড হয় এবং একটি গোপনীয়তা বার্তা ফর্ম উপস্থাপন করে:

জাভা


// Requesting an update to consent information should be called on every app launch.
consentInformation.requestConsentInfoUpdate(
    activity,
    params,
    () ->
        UserMessagingPlatform.loadAndShowConsentFormIfRequired(
            activity,
            formError -> {
              // Consent has been gathered.
              onConsentGatheringCompleteListener.consentGatheringComplete(formError);
            }),
    requestConsentError ->
        onConsentGatheringCompleteListener.consentGatheringComplete(requestConsentError));

কোটলিন


// Requesting an update to consent information should be called on every app launch.
consentInformation.requestConsentInfoUpdate(
  activity,
  params,
  {
    UserMessagingPlatform.loadAndShowConsentFormIfRequired(activity) { formError ->
      // Consent has been gathered.
      onConsentGatheringCompleteListener.consentGatheringComplete(formError)
    }
  },
  { requestConsentError ->
    onConsentGatheringCompleteListener.consentGatheringComplete(requestConsentError)
  },
)

গোপনীয়তা বিকল্প

কিছু গোপনীয়তা বার্তা ফর্ম প্রকাশক-রেন্ডার করা গোপনীয়তা বিকল্প এন্ট্রি পয়েন্ট থেকে উপস্থাপিত হয়, ব্যবহারকারীদের যে কোনো সময় তাদের গোপনীয়তা বিকল্পগুলি পরিচালনা করতে দেয়। গোপনীয়তা বিকল্প এন্ট্রি পয়েন্টে আপনার ব্যবহারকারীরা কোন বার্তা দেখেন সে সম্পর্কে আরও জানতে, উপলব্ধ ব্যবহারকারী বার্তা প্রকারগুলি দেখুন।

একটি গোপনীয়তা বিকল্প এন্ট্রি পয়েন্ট প্রয়োজন কিনা পরীক্ষা করুন

আপনি requestConsentInfoUpdate() কল করার পরে, আপনার অ্যাপের জন্য একটি গোপনীয়তা বিকল্প এন্ট্রি পয়েন্ট প্রয়োজন কিনা তা নির্ধারণ করতে ConsentInformation.PivacyOptionsRequirementStatus চেক করুন:

জাভা


/** Helper variable to determine if the privacy options form is required. */
public boolean isPrivacyOptionsRequired() {
  return consentInformation.getPrivacyOptionsRequirementStatus()
      == PrivacyOptionsRequirementStatus.REQUIRED;
}

কোটলিন


/** Helper variable to determine if the privacy options form is required. */
val isPrivacyOptionsRequired: Boolean
  get() =
    consentInformation.privacyOptionsRequirementStatus ==
      ConsentInformation.PrivacyOptionsRequirementStatus.REQUIRED

আপনার অ্যাপে একটি দৃশ্যমান উপাদান যোগ করুন

যদি একটি গোপনীয়তা এন্ট্রি পয়েন্ট প্রয়োজন হয়, আপনার অ্যাপে একটি দৃশ্যমান এবং ইন্টারঅ্যাক্টেবল UI উপাদান যোগ করুন যা গোপনীয়তা বিকল্প ফর্ম উপস্থাপন করে। যদি একটি গোপনীয়তা এন্ট্রি পয়েন্টের প্রয়োজন না হয়, তাহলে আপনার UI উপাদানটি দৃশ্যমান এবং ইন্টারঅ্যাক্টেবল না হওয়ার জন্য কনফিগার করুন।

জাভা


if (googleMobileAdsConsentManager.isPrivacyOptionsRequired()) {
  // Regenerate the options menu to include a privacy setting.
  invalidateOptionsMenu();
}

কোটলিন


if (googleMobileAdsConsentManager.isPrivacyOptionsRequired) {
  // Regenerate the options menu to include a privacy setting.
  invalidateOptionsMenu()
}

গোপনীয়তা বিকল্প ফর্ম উপস্থাপন করুন

ব্যবহারকারী আপনার উপাদানের সাথে ইন্টারঅ্যাক্ট করলে, গোপনীয়তা বিকল্প ফর্মটি উপস্থাপন করুন:

জাভা


UserMessagingPlatform.showPrivacyOptionsForm(activity, onConsentFormDismissedListener);

কোটলিন


UserMessagingPlatform.showPrivacyOptionsForm(activity, onConsentFormDismissedListener)

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

আপনার অ্যাপে বিজ্ঞাপনের অনুরোধ করার আগে, আপনি canRequestAds() ব্যবহার করে ব্যবহারকারীর কাছ থেকে সম্মতি পেয়েছেন কিনা তা পরীক্ষা করুন। সম্মতি সংগ্রহ করার সময় চেক করার দুটি জায়গা আছে:

  • বর্তমান অধিবেশনে সম্মতির পর।
  • আপনি requestConsentInfoUpdate() কল করার পরপরই। পূর্ববর্তী অধিবেশনে সম্ভাব্য সম্মতি পাওয়া গেছে। লেটেন্সি সর্বোত্তম অনুশীলন হিসাবে, আমরা সুপারিশ করি যে কলব্যাক সম্পূর্ণ হওয়ার জন্য অপেক্ষা করবেন না যাতে আপনি আপনার অ্যাপ চালু হওয়ার পরে যত তাড়াতাড়ি সম্ভব বিজ্ঞাপন লোড করা শুরু করতে পারেন।

সম্মতি সংগ্রহের প্রক্রিয়া চলাকালীন কোনো ত্রুটি দেখা দিলে, আপনি বিজ্ঞাপনের জন্য অনুরোধ করতে পারেন কিনা তা দেখতে হবে। UMP SDK আগের সেশনের সম্মতি স্ট্যাটাস ব্যবহার করে।

সম্মতি সংগ্রহের প্রক্রিয়া চলাকালীন আপনি বিজ্ঞাপনের অনুরোধ করতে পারেন কিনা তা নিচের কোডটি পরীক্ষা করে:

জাভা


googleMobileAdsConsentManager.gatherConsent(
    this,
    consentError -> {
      if (consentError != null) {
        // Consent not obtained in current session.
        Log.w(
            TAG,
            String.format("%s: %s", consentError.getErrorCode(), consentError.getMessage()));
      }

      if (googleMobileAdsConsentManager.canRequestAds()) {
        initializeMobileAdsSdk();
      }
      // ...
    });

// This sample attempts to load ads using consent obtained in the previous session.
if (googleMobileAdsConsentManager.canRequestAds()) {
  initializeMobileAdsSdk();
}

কোটলিন


googleMobileAdsConsentManager.gatherConsent(this) { error ->
  if (error != null) {
    // Consent not obtained in current session.
    Log.d(TAG, "${error.errorCode}: ${error.message}")
  }

  if (googleMobileAdsConsentManager.canRequestAds) {
    initializeMobileAdsSdk()
  }
  // ...
}

// This sample attempts to load ads using consent obtained in the previous session.
if (googleMobileAdsConsentManager.canRequestAds) {
  initializeMobileAdsSdk()
}

ব্যবহারকারীর সম্মতি সংগ্রহ করার পরে নিম্নলিখিত কোডটি Google মোবাইল বিজ্ঞাপন SDK সেট আপ করে:

জাভা


private void initializeMobileAdsSdk() {
  if (isMobileAdsInitializeCalled.getAndSet(true)) {
    return;
  }
  new Thread(
          () -> {
            // Initialize the Google Mobile Ads SDK on a background thread.
            MobileAds.initialize(this, initializationStatus -> {});

            // Load an ad on the main thread.
            runOnUiThread(this::loadBanner);
          })
      .start();
}

কোটলিন


private fun initializeMobileAdsSdk() {
  if (isMobileAdsInitializeCalled.getAndSet(true)) {
    return
  }
  CoroutineScope(Dispatchers.IO).launch {
    // Initialize the Google Mobile Ads SDK on a background thread.
    MobileAds.initialize(this@MainActivity) {}

    runOnUiThread {
      // Load an ad on the main thread.
      loadBanner()
    }
  }
}

টেস্টিং

আপনি বিকাশের সাথে সাথে আপনার অ্যাপে ইন্টিগ্রেশন পরীক্ষা করতে চাইলে, আপনার পরীক্ষা ডিভাইসটিকে প্রোগ্রাম্যাটিকভাবে নিবন্ধন করতে এই পদক্ষেপগুলি অনুসরণ করুন৷ আপনার অ্যাপ রিলিজ করার আগে এই টেস্ট ডিভাইস আইডি সেট করে এমন কোডটি সরিয়ে ফেলতে ভুলবেন না।

  1. requestConsentInfoUpdate() কল করুন।
  2. নিম্নলিখিত উদাহরণের অনুরূপ একটি বার্তার জন্য লগ আউটপুট পরীক্ষা করুন, যা আপনার ডিভাইস আইডি দেখায় এবং এটিকে একটি পরীক্ষা ডিভাইস হিসাবে কীভাবে যুক্ত করতে হয়:

    Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") to set this as a debug device.
    
  3. আপনার ক্লিপবোর্ডে আপনার টেস্ট ডিভাইস আইডি কপি করুন।

  4. ConsentDebugSettings.Builder().TestDeviceHashedIds কল করতে আপনার কোড পরিবর্তন করুন এবং আপনার পরীক্ষার ডিভাইস আইডিগুলির একটি তালিকায় পাস করুন৷

    জাভা

    ConsentDebugSettings debugSettings = new ConsentDebugSettings.Builder(this)
        .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID")
        .build();
    
    ConsentRequestParameters params = new ConsentRequestParameters
        .Builder()
        .setConsentDebugSettings(debugSettings)
        .build();
    
    consentInformation = UserMessagingPlatform.getConsentInformation(this);
    // Include the ConsentRequestParameters in your consent request.
    consentInformation.requestConsentInfoUpdate(
        this,
        params,
        // ...
    );
    

    কোটলিন

    val debugSettings = ConsentDebugSettings.Builder(this)
        .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID")
        .build()
    
    val params = ConsentRequestParameters
        .Builder()
        .setConsentDebugSettings(debugSettings)
        .build()
    
    consentInformation = UserMessagingPlatform.getConsentInformation(this)
    // Include the ConsentRequestParameters in your consent request.
    consentInformation.requestConsentInfoUpdate(
        this,
        params,
        // ...
    )
    

একটি ভূগোল জোর করে

UMP SDK আপনার অ্যাপের আচরণ পরীক্ষা করার একটি উপায় প্রদান করে যেন ডিভাইসটি DebugGeography ব্যবহার করে EEA বা UK-এর মতো বিভিন্ন অঞ্চলে অবস্থিত। মনে রাখবেন যে ডিবাগ সেটিংস শুধুমাত্র পরীক্ষা ডিভাইসে কাজ করে।

জাভা

ConsentDebugSettings debugSettings = new ConsentDebugSettings.Builder(this)
    .setDebugGeography(ConsentDebugSettings.DebugGeography.DEBUG_GEOGRAPHY_EEA)
    .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID")
    .build();

ConsentRequestParameters params = new ConsentRequestParameters
    .Builder()
    .setConsentDebugSettings(debugSettings)
    .build();

consentInformation = UserMessagingPlatform.getConsentInformation(this);
// Include the ConsentRequestParameters in your consent request.
consentInformation.requestConsentInfoUpdate(
    this,
    params,
    ...
);

কোটলিন

val debugSettings = ConsentDebugSettings.Builder(this)
    .setDebugGeography(ConsentDebugSettings.DebugGeography.DEBUG_GEOGRAPHY_EEA)
    .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID")
    .build()

val params = ConsentRequestParameters
    .Builder()
    .setConsentDebugSettings(debugSettings)
    .build()

consentInformation = UserMessagingPlatform.getConsentInformation(this)
// Include the ConsentRequestParameters in your consent request.
consentInformation.requestConsentInfoUpdate(
    this,
    params,
    ...
)

UMP SDK দিয়ে আপনার অ্যাপ পরীক্ষা করার সময়, আপনি SDK-এর অবস্থা রিসেট করা সহায়ক বলে মনে করতে পারেন যাতে আপনি একজন ব্যবহারকারীর প্রথম ইনস্টল অভিজ্ঞতা অনুকরণ করতে পারেন। SDK এটি করার জন্য reset() পদ্ধতি প্রদান করে।

জাভা

consentInformation.reset();

কোটলিন

consentInformation.reset()

গিটহাবের উদাহরণ

জাভা ব্যানার উদাহরণ এবং কোটলিন ব্যানার উদাহরণে এই পৃষ্ঠায় আচ্ছাদিত UMP SDK ইন্টিগ্রেশনের একটি সম্পূর্ণ উদাহরণ দেখুন।