পুরস্কৃত-পণ্য-নির্দিষ্ট বৈশিষ্ট্য যোগ করুন

আপনার ব্যবহারকারীদের জন্য অ্যাপের ভেতরের পণ্য এবং সুবিধাগুলো আনলক করার একটি পদ্ধতি হলো রিওয়ার্ডেড প্রোডাক্ট তৈরি করা, অর্থাৎ এমন আইটেম যা ব্যবহারকারীরা একটি ভিডিও বিজ্ঞাপন দেখার পর পেয়ে থাকেন। রিওয়ার্ডেড প্রোডাক্ট সরবরাহ করার মাধ্যমে, আপনি ব্যবহারকারীদের সরাসরি কোনো কেনাকাটা ছাড়াই অ্যাপের ভেতরের পুরস্কার এবং সুবিধাগুলো অর্জন করার সুযোগ করে দেন।

এই ডকুমেন্টটিতে পুরস্কারযুক্ত প্রোডাক্টের জন্য নির্দিষ্ট কার্যকারিতা কীভাবে বাস্তবায়ন করতে হয় তা ব্যাখ্যা করা হয়েছে। এই পৃষ্ঠার ওয়ার্কফ্লো ডায়াগ্রাম অংশে প্রক্রিয়াটি চিত্রিত করা হয়েছে।

আপনার অ্যাপের পুরস্কৃত পণ্যগুলো শনাক্ত করুন

পুরস্কারযুক্ত পণ্যগুলির SkuType হলো INAPP । ব্যবহারকারীরা যাতে একাধিক বিজ্ঞাপন দেখতে এবং একাধিক পুরস্কার পেতে পারেন, তা নিশ্চিত করার জন্য পণ্যগুলি ব্যবহার করা প্রয়োজন।

কোনো ব্যবহারকারীকে পুরস্কারযুক্ত পণ্য অফার করার আগে, আপনাকে অবশ্যই পণ্যটির SkuDetails সংগ্রহ করতে হবে। এটি করার জন্য, পণ্যের ধরণ হিসেবে SkuType.INAPP ব্যবহার করে querySkuDetailsAsync() ফাংশনটি কল করুন।

বয়স-উপযোগী বিজ্ঞাপন ঘোষণা করুন

শিশু এবং অপ্রাপ্তবয়স্ক ব্যবহারকারীদের সম্পর্কিত আইনি বাধ্যবাধকতা, যেমন চিলড্রেন'স অনলাইন প্রাইভেসি প্রোটেকশন অ্যাক্ট (COPPA) এবং জেনারেল ডেটা প্রোটেকশন রেগুলেশন (GDPR) মেনে চলা সহজ করার জন্য, আপনার অ্যাপে ঘোষণা করা উচিত যে কোন বিজ্ঞাপনগুলিকে মার্কিন যুক্তরাষ্ট্রে শিশু-নির্দেশিত হিসাবে গণ্য করা উচিত এবং কোন বিজ্ঞাপনগুলি তাদের নিজ নিজ দেশে প্রযোজ্য সম্মতির বয়সের কম বয়সী ব্যবহারকারীদের জন্য নির্দেশিত। AdMob হেল্প সেন্টার ব্যাখ্যা করে যে কখন আপনার বিজ্ঞাপনের অনুরোধগুলিকে শিশু-নির্দেশিত হিসাবে এবং কখন সম্মতির বয়সের কম বয়সীদের জন্য ট্যাগ করা উচিত, এবং এর ফলে কী কী প্রভাব পড়বে।

আপনার অ্যাপের বিলিং ক্লায়েন্ট তৈরি করার সময়, বিবেচনা করুন যে পুরস্কারপ্রাপ্ত বিজ্ঞাপনের অনুরোধগুলি শিশুদের জন্য নির্দেশিত হবে, নাকি সম্মতির বয়সের কম বয়সী ব্যবহারকারীদের জন্য নির্দেশিত হবে। যদি বিজ্ঞাপনের অনুরোধগুলিতে এই সীমাবদ্ধতাগুলি থাকে, তাহলে setChildDirected() এবং setUnderAgeOfConsent() মেথডগুলি কল করুন এবং প্রতিটি মেথডে উপযুক্ত মান পাস করুন।

নিম্নলিখিত কোড স্নিপেটটি দেখায় কিভাবে ঘোষণা করতে হয় যে ভিডিও বিজ্ঞাপনগুলি শিশুদের জন্য বা সম্মতির বয়সের কম বয়সী ব্যবহারকারীদের জন্য উপযুক্ত হবে:

কোটলিন

val billingClient = BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build()

জাভা

BillingClient billingClient =
    BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build();

ভিডিও বিজ্ঞাপন লোড করুন

পুরস্কার হিসেবে কোনো পণ্য পাওয়ার জন্য আপনার ব্যবহারকারীকে ভিডিও বিজ্ঞাপন দেখার বিকল্প দেখানোর আগে, আপনাকে ভিডিওটি লোড করতে হবে। এটি করার জন্য, পুরস্কার হিসেবে প্রাপ্ত পণ্যটির প্রতিনিধিত্বকারী SkuDetails অবজেক্টের সাথে যুক্ত করে একটি RewardLoadParams অবজেক্ট তৈরি করুন। এরপর, RewardLoadParams অবজেক্ট এবং একটি RewardResponseListener অবজেক্ট পাস করে আপনার বিলিং ক্লায়েন্টের loadRewardedSku() মেথডটি কল করুন।

ভিডিও লোড হওয়া শেষ হলে RewardResponseListener লিসেনারকে জানানো হয়। ভিডিওটি অনুপলব্ধ হলে বা সার্ভার টাইমআউটের মতো অন্য কোনো ত্রুটি ঘটলে লিসেনারকে জানানো হয়।

আপনার অ্যাপের পুরস্কারযুক্ত পণ্যগুলির সাথে যুক্ত ভিডিওগুলি লোড করার সময় ডিভাইসের পারফরম্যান্স বজায় রাখতে, নিম্নলিখিত সেরা অনুশীলনগুলি মনে রাখবেন:

  • একবারে সর্বাধিক তিনটি পুরস্কৃত প্রোডাক্ট SKU লোড করুন।
  • ব্যবহারকারী যখনই আপনার অ্যাপে প্রবেশ করেন, তখনই ভিডিওগুলো লোড করার চেষ্টা করুন। এই ধাপটি আপনাকে যাচাই করতে সাহায্য করে যে ভিডিওগুলো তখনও লোড করা এবং উপলব্ধ আছে কিনা।
  • ভিডিওগুলো কখন লোড করবেন তা ঠিক করার সময়, ব্যান্ডউইথ ব্যবহার এবং অ্যাপের দ্রুত সাড়া দেওয়ার ক্ষমতার মধ্যে এমন একটি ভারসাম্য বেছে নিন যা আপনার ব্যবহারের ক্ষেত্রে সবচেয়ে উপযুক্ত:

    • কমপক্ষে, সংশ্লিষ্ট রিওয়ার্ডেড প্রোডাক্টের জন্য getSkuDetails() কল করার পরেই ভিডিওগুলো লোড করুন। এতে আপনার অ্যাপ খুব রেসপন্সিভ থাকবে, কিন্তু এমন একটি ভিডিও লোড করতে আপনার নেটওয়ার্ক ডেটা নষ্ট হতে পারে যা ব্যবহারকারী কখনোই দেখে না।
    • ব্যবহারকারী যখন ভিডিওটি প্রদর্শনের জন্য নির্দিষ্ট পেজে যাবেন, তখন ভিডিওটি লোড করুন। এক্ষেত্রে আপনার অ্যাপ খুব কমই ব্যান্ডউইথ অপচয় করে, কিন্তু ভিডিও দেখার বাটনটি ক্লিকযোগ্য হওয়ার আগে ব্যবহারকারীকে কয়েক মুহূর্ত অপেক্ষা করতে হতে পারে।

নিম্নলিখিত কোড স্নিপেটটি এমন একটি ভিডিও বিজ্ঞাপন লোড করার প্রক্রিয়া প্রদর্শন করে, যা ব্যবহারকারী পুরস্কার হিসেবে পণ্যটি পাওয়ার আগে প্লে হয়:

কোটলিন

if (skuDetails.isRewarded()) {
    val params = RewardLoadParams.Builder()
            .setSkuDetails(skuDetails)
            .build()
    mBillingClient.loadRewardedSku(params.build(),
            object : RewardResponseListener {
        override fun onRewardResponse(@BillingResponse responseCode : Int) {
            if (responseCode == BillingResponse.OK) {
                // Enable the reward product, or make
                // any necessary updates to the UI.
            }
        }
    })
}

জাভা

if (skuDetails.isRewarded()) {
    RewardLoadParams.Builder params = RewardLoadParams.newBuilder();
    params.setSkuDetails(skuDetails);
    mBillingClient.loadRewardedSku(params.build(),
        new RewardResponseListener() {
            @Override
            public void onRewardResponse(int responseCode) {
                if (responseCode == BillingResponse.OK) {
                      // Enable the reward product, or make
                      // any necessary updates to the UI.
                  }
            }
        });
}

ব্যবহারকারীদের কেনাকাটার জন্য পুরস্কৃত করুন

যদি গুগল প্লে বিলিং লাইব্রেরি কোনো রিওয়ার্ডেড প্রোডাক্টের সাথে যুক্ত ভিডিওটি সফলভাবে লোড করে—অর্থাৎ, যদি RewardResponseListener টি BillingResponse.OK responseCode পায়—তাহলে আপনি বিলিং ফ্লোটি চালু করতে পারবেন।

অন্যান্য সব ধরনের ইন-অ্যাপ প্রোডাক্টের মতোই, একটি রিওয়ার্ডেড প্রোডাক্টের জন্য বিজ্ঞাপন চালানো শুরু করতে আপনাকে launchBillingFlow() কল করতে হয়। যদিও ব্যবহারকারী রিওয়ার্ডেড প্রোডাক্টটি পাওয়ার জন্য সরাসরি কোনো কেনাকাটা করছেন না, তবুও আপনাকে বিলিং ফ্লোটি চালু করতে হবে, যাতে ব্যবহারকারী প্রোডাক্টটি পেতে এবং ব্যবহার করতে পারেন।

ক্রয়টি গ্রহণ করুন

কোনো ব্যবহারকারী একটি পুরস্কারপ্রাপ্ত পণ্য গ্রহণ ও ব্যবহার করেছেন, এই বিষয়ে আপনার বিলিং ক্লায়েন্টকে অবহিত করতে, আপনার বিলিং ক্লায়েন্ট লিসেনারের onPurchasesUpdated() মেথডে ক্রয়টি পরিচালনা করুন । মনে রাখবেন যে, পুরস্কারপ্রাপ্ত ক্রয়গুলো অবশ্যই ব্যবহার করতে হবে

আপনার পুরস্কৃত পণ্যগুলো পরীক্ষা করুন

আপনার অ্যাপ কীভাবে ভিডিও বিজ্ঞাপন লোড করে এবং ব্যবহারকারীদের পুরস্কার হিসেবে পণ্য সরবরাহ করে, তা পরীক্ষা করার জন্য লাইসেন্সপ্রাপ্ত পরীক্ষকদের সাহায্য নিন, যারা ডিফল্টরূপে আসল বিজ্ঞাপনের পরিবর্তে পরীক্ষামূলক বিজ্ঞাপন পেয়ে থাকেন। এই পরীক্ষকদের জন্য কীভাবে অ্যাকাউন্ট তৈরি করতে হয় তা জানতে, “User-test a Google Play Billing app” দেখুন।

পরীক্ষা করার আরেকটি পদ্ধতি হলো android.test.reward প্রোডাক্ট আইডিটি ব্যবহার করা। এই নির্দিষ্ট প্রোডাক্টটি গুগল প্লে বিলিং-এ একটি সংরক্ষিত নাম, তাই প্লে কনসোলে আপনার ইন-অ্যাপ প্রোডাক্টের তালিকায় এটি যোগ করার প্রয়োজন নেই।

সতর্কতা: আপনার অ্যাপের পুরস্কার দেওয়া পণ্যগুলো পরীক্ষা করার সময় আসল পণ্য ব্যবহার করবেন না ; অন্যথায়, আপনার অ্যাকাউন্টটি স্প্যাম বা প্রতারণামূলক অ্যাকাউন্ট হিসেবে চিহ্নিত হতে পারে।

তবে, টেস্টিং শেষ হয়ে গেলে, আপনার প্রোডাকশন অ্যাপটি ব্যবহারকারীদের কাছে ডেপ্লয় করার আগে android.test.reward জায়গায় আপনার আসল রিওয়ার্ড দেওয়া প্রোডাক্টগুলোর প্রোডাক্ট আইডি বসিয়ে নিতে ভুলবেন না।

পুরস্কৃত পণ্যের কার্যপ্রবাহের চিত্র

নিম্নলিখিত সিকোয়েন্স ডায়াগ্রামটি দেখায় কিভাবে ব্যবহারকারী, আপনার অ্যাপ এবং গুগল প্লে বিলিং লাইব্রেরি একসাথে কাজ করে একটি ভিডিও বিজ্ঞাপন প্রদর্শন করে এবং ব্যবহারকারীকে একটি পুরস্কারপ্রাপ্ত পণ্যে অ্যাক্সেস প্রদান করে:

পুরস্কৃত পণ্য প্রোটোকল প্রদর্শনকারী ক্রম চিত্র
চিত্র ১. গুগল প্লে বিলিং ব্যবহার করে পুরস্কারযুক্ত পণ্য ক্রয় সম্পন্ন করার ধাপসমূহ।