বয়স সংকেত অনুরোধ

এই ডকুমেন্টটিতে প্লে এজ সিগন্যালস এপিআই (Play Age Signals API) ব্যবহার করে কীভাবে বয়সের সংকেতের জন্য অনুরোধ করতে হয়, তা বর্ণনা করা হয়েছে।

প্লে এজ সিগন্যালস ০.০.৪ এসডিকে একটি দ্বি-কার্যকরী আর্কিটেকচার চালু করেছে, যা বয়স সংকেতের অনুরোধ সহজ করতে এবং আমাদের ব্যবহারকারীর পছন্দ-ভিত্তিক মডেলকে সমর্থন করার জন্য ডিজাইন করা হয়েছে। বয়স সংকেতের অনুরোধ করতে, এই উচ্চ-স্তরের কর্মপ্রবাহটি ব্যবহার করুন:

requestAgeSignalsAccess(Activity) মেথডটি কল করুন, যা ageSignalsStatus রিটার্ন করে। ageSignalsStatus এর মান SHARED , NOT_SHARED বা VERIFICATION_REQUIRED হতে পারে।

  • যদি ageSignalsStatus == NOT_SHARED : আপনার অ্যাপ API রেসপন্সে বয়সের সিগন্যাল পাবে না।
  • যদি ageSignalsStatus == SHARED , তাহলে checkAgeSignals() মেথডটি কল করুন। যদি ব্যবহারকারী বা অভিভাবক বয়সের সংকেতগুলো শেয়ার করার সিদ্ধান্ত নিয়ে থাকেন, তাহলে আপনি API রেসপন্সের অংশ হিসেবে বয়সের সংকেতগুলো পাবেন এবং সেই রেসপন্সটি কীভাবে পরিচালনা করবেন তা আপনিই ঠিক করতে পারবেন।
  • যদি ageSignalsStatus == VERIFICATION_REQUIRED : ব্যবহারকারীর বয়স অজানা এবং তিনি এমন একটি প্রযোজ্য এখতিয়ার বা অঞ্চলে আছেন যেখানে বয়স যাচাইকরণ এবং বয়সের সংকেত শেয়ার করা বাধ্যতামূলক। এই অঞ্চলগুলিতে Google Play থেকে বয়সের সংকেত পেতে, ব্যবহারকারীকে তাদের স্ট্যাটাস সমাধান করার জন্য প্লে স্টোরে যেতে বলুন।

কোনো অঞ্চলে বাধ্যতামূলক বয়স ভাগাভাগি প্রযোজ্য কিনা তার উপর নির্ভর করে requestAgeSignalsAccess(Activity) পদ্ধতিটি ভিন্ন ভিন্ন মান ফেরত দেয়:

  • মার্কিন যুক্তরাষ্ট্রের যেসব রাজ্যে অ্যাপ স্টোরগুলোকে ডেভেলপারদের কাছে যাচাইকৃত বয়সের তথ্য সরবরাহ করার আইন রয়েছে, সেখানকার যোগ্য ব্যবহারকারীদের জন্য অ্যাপের মধ্যে এই প্রম্পটটি চালু হয় না। এর পরিবর্তে, ব্যবহারকারীরা যখন প্লে স্টোর অ্যাপে প্রবেশ করবেন, তখন তাদেরকে যাচাই করতে বা তত্ত্বাবধান সেট আপ করতে বলা হবে। যাচাইকরণের অবস্থা নির্ধারণ করতে ageSignalsStatus এর মান ব্যবহার করুন:
  • অন্যান্য অঞ্চলের ব্যবহারকারীদের জন্য, যেখানে বয়স শেয়ারিং ব্যবহারকারী বা অভিভাবকের পছন্দের উপর ভিত্তি করে হয়:
    • ব্যবহারকারীর সেটিং যদি ‘শেয়ার করার আগে জিজ্ঞাসা করুন’ হয়, তাহলে অ্যাপের মধ্যে একটি প্রম্পট দেখানো হয়। ব্যবহারকারী যদি তার বয়স শেয়ার করতে রাজি হন, তাহলে ageSignalsStatus এর মান SHARED হয়; অন্যথায়, NOT_SHARED
    • যদি ব্যবহারকারীর সেটিং ‘সর্বদা শেয়ার করুন’ (Always Share) হয়, তাহলে অ্যাপের ভেতরের প্রম্পটটি দেখানো হয় না এবং ageSignalsStatus এর মান SHARED হয়।
    • যদি ব্যবহারকারীর সেটিং ‘Never Share’ হয়, তাহলে অ্যাপের ভেতরের প্রম্পটটি দেখানো হয় না এবং ageSignalsStatus এর মান NOT_SHARED হয়।
    • তত্ত্বাবধানে থাকা ব্যবহারকারীদের ক্ষেত্রে, অভিভাবকরা ফ্যামিলি লিঙ্ক অ্যাপের সেটিংসে তাদের সন্তানের বয়স শেয়ার করার বিকল্পটি বেছে নিতে পারেন। অভিভাবকরা বয়স শেয়ার করার বিকল্পটি বেছে নিলে ageSignalsStatus এর মান SHARED হবে, অন্যথায় এটি NOT_SHARED হবে।

Google Play-তে বয়স শেয়ারিং কীভাবে কাজ করে, যার মধ্যে ইন-অ্যাপ প্রম্পট এবং বয়সসীমা শেয়ারিং সেটিংস অন্তর্ভুক্ত রয়েছে, তা বুঝতে Google Play-তে বয়সসীমা শেয়ারিং দেখুন।

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে বয়সের সংকেতের জন্য অনুরোধ করতে হয়:

কোটলিন

// 1. Initialize the AgeSignalsManager (usually in onCreate or class initialization)
val ageSignalsManager = AgeSignalsManagerFactory.create(applicationContext)

// 2. Request or check for age signals access.
// Passing the current Activity allows the Play Store to render the age sharing prompt UI if required.
val accessRequest = AgeSignalsAccessRequest.builder()
    .setActivity(this)
    .build()

ageSignalsManager.requestAgeSignalsAccess(accessRequest)
    .addOnSuccessListener { accessResult ->
        if (accessResult.ageSignalsStatus() == AgeSignalsStatus.SHARED) {
            // The user (or parent) has agreed to share age range, or is in an eligible auto-share region.
            // Retrieve the actual age signals.
            retrieveAgeSignals(ageSignalsManager)
        } else {
            // Age signals are not shared (user didn't share age range, parent rejected the request, or not eligible).
        }
    }
    .addOnFailureListener { exception ->
        // Handle API/Play Store connection and system errors
        handleAgeSignalsError(exception)
    }

private fun retrieveAgeSignals(manager: AgeSignalsManager) {
    // 3. Perform the actual age signals query once sharing is active.
    manager.checkAgeSignals(AgeSignalsRequest.builder().build())
        .addOnSuccessListener { ageSignalsResult ->
            val installId = ageSignalsResult.installId()
            val ageLower = ageSignalsResult.ageLower()
            val ageUpper = ageSignalsResult.ageUpper()
            val significantChangeDate = ageSignalsResult.significantChangeApprovalDate()
            val ageRangeSource = ageSignalsResult.ageRangeSource()

            if (ageLower != null) {
                if (ageUpper != null) {
                    // The user is in a specific closed age range [ageLower, ageUpper] (e.g. [13, 15])
                } else {
                    // The user is in the highest open-ended age band [ageLower, null] (e.g. [18, null])
                }
            } else {
                // Both bounds are null: The user is not sharing their age (e.g. they are a verified adult)
            }
        }
        .addOnFailureListener { exception ->
            handleAgeSignalsError(exception)
        }
}

জাভা

// 1. Initialize the AgeSignalsManager (usually in onCreate or class initialization)
AgeSignalsManager ageSignalsManager = AgeSignalsManagerFactory.create(getApplicationContext());

// 2. Request or check for age signals access.
// Passing the current Activity allows the Play Store to render the age sharing prompt UI if required.
AgeSignalsAccessRequest accessRequest = AgeSignalsAccessRequest.builder()
    .setActivity(this)
    .build();

ageSignalsManager.requestAgeSignalsAccess(accessRequest)
    .addOnSuccessListener(accessResult -> {
        Integer status = accessResult.ageSignalsStatus();
        if (status == AgeSignalsStatus.SHARED) {
            // The user (or parent) has agreed to share age range, or is in an eligible auto-share region.
            // Retrieve the actual age signals.
            retrieveAgeSignals(ageSignalsManager);
        } else {
            // Age signals are not shared (user didn't share age range, parent rejected the request, or not eligible).
        }
    })
    .addOnFailureListener(exception -> {
        // Handle API/Play Store connection and system errors
    });

private void retrieveAgeSignals(AgeSignalsManager manager) {
    // 3. Perform the actual age signals query once sharing is active.
    manager.checkAgeSignals(AgeSignalsRequest.builder().build())
        .addOnSuccessListener(ageSignalsResult -> {
            String installId = ageSignalsResult.installId();
            Integer ageLower = ageSignalsResult.ageLower();
            Integer ageUpper = ageSignalsResult.ageUpper();
            Date significantChangeDate = ageSignalsResult.significantChangeApprovalDate();
            @AgeRangeSource Integer ageRangeSource = ageSignalsResult.ageRangeSource();

            if (ageLower != null) {
                if (ageUpper != null) {
                    // The user is in a specific closed age range [ageLower, ageUpper] (e.g. [13, 15])
                } else {
                    // The user is in the highest open-ended age band [ageLower, null] (e.g. [18, null])
                }
            } else {
                // Both bounds are null: The user is not sharing their age (e.g. they are a verified adult)
            }
        })
        .addOnFailureListener(exception -> {
            handleAgeSignalsError(exception);
        });
}

কোড সম্পর্কে মূল বিষয়গুলো

  • ` requestAgeSignalsAccess(Activity) ` মেথডটি ব্যবহারকারীর বর্তমান এজ সিগন্যাল এবং এজ সিগন্যাল শেয়ারিং স্ট্যাটাসের একটি ব্লকিং চেক সম্পাদন করে।
  • আপনি requestAgeSignalsAccess(Activity) কল করার পর, Play শুধুমাত্র তত্ত্বাবধানহীন ব্যবহারকারীদের জন্য একটি বিল্ট-ইন ইন-অ্যাপ প্রম্পট প্রদর্শন করে। তত্ত্বাবধানাধীন ব্যবহারকারীদের অভিভাবকরা `Family Link` অ্যাপে বয়স শেয়ারিং সেটিংস পরিচালনা করে তাদের সন্তানের বয়স শেয়ার করতে পারেন।
  • যদি ব্যবহারকারী বয়স শেয়ার করা খারিজ বা প্রত্যাখ্যান করেন, তাহলে প্রম্পটটি বন্ধ হয়ে যাওয়ার আগে অ্যাপের ভেতরের প্রম্পটটি কয়েকবার দেখানো হবে।
  • ` checkAgeSignals() ` মেথডটি এপিআই রেসপন্স থেকে এজ সিগন্যালের ভ্যালুগুলো সংগ্রহ করে। এই মেথডটি ageRangeSource , ageUpper , ageLower এবং অন্যান্য গুরুত্বপূর্ণ পরিবর্তনের ভ্যালুগুলো রিটার্ন করে।