বিষয় API বিকাশকারী গাইড

আপনি Android ডকুমেন্টেশনের গোপনীয়তা স্যান্ডবক্সের মাধ্যমে পড়ার সময়, আপনি যে প্রোগ্রামটির সাথে কাজ করছেন সেটি নির্বাচন করতে বিকাশকারী পূর্বরূপ বা বিটা বোতামটি ব্যবহার করুন, কারণ নির্দেশাবলী পরিবর্তিত হতে পারে।


মতামত প্রদান

টপিক এপিআই ব্যবহারকারীর অ্যাপ ব্যবহারের উপর ভিত্তি করে ডিভাইসে মোটা দানাদার আগ্রহের সংকেত দেয়। এই সংকেতগুলি, যাকে বলা হয় বিষয়গুলি , বিজ্ঞাপনদাতাদের সাথে শেয়ার করা হয় যাতে অ্যাপ জুড়ে স্বতন্ত্র ব্যবহারকারীদের ট্র্যাক না করে আগ্রহ-ভিত্তিক বিজ্ঞাপন সমর্থন করে৷ ডিজাইন প্রস্তাবে বিষয় API সম্পর্কে আরও জানুন। গুরুত্বপূর্ণ: আপনি যে প্রোগ্রামটির সাথে কাজ করছেন সেটি বেছে নিতে SDK এক্সটেনশন রিলিজ বা বিকাশকারী পূর্বরূপ বোতামটি নির্বাচন করুন, কারণ নির্দেশাবলী ভিন্ন হতে পারে।

সেটআপ

গোপনীয়তা-সংরক্ষণকারী API-এর সবচেয়ে আপ-টু-ডেট সংস্করণ পেতে সর্বশেষ Android গোপনীয়তা স্যান্ডবক্স SDK ব্যবহার করুন। বিষয় API ব্যবহার করার জন্য আপনার অ্যাপের জন্য আপনাকে একটি অনুমতি অন্তর্ভুক্ত করতে হবে এবং আপনার ম্যানিফেস্টে একটি বিজ্ঞাপন পরিষেবা কনফিগারেশন তৈরি করতে হবে:

<uses-permission android:name="android.permission.ACCESS_ADSERVICES_TOPICS" />

আপনার ম্যানিফেস্টের <application> উপাদানে একটি বিজ্ঞাপন পরিষেবা কনফিগারেশন উল্লেখ করুন:

<property android:name="android.adservices.AD_SERVICES_CONFIG"
   android:resource="@xml/ad_services_config" />

ম্যানিফেস্টে উল্লেখ করা বিজ্ঞাপন পরিষেবা XML সংস্থান নির্দিষ্ট করুন, যেমন res/xml/ad_services_config.xml । সমস্ত SDK-এ অ্যাক্সেস মঞ্জুর করার জন্য allowAllToAccess অ্যাট্রিবিউট ব্যবহার করুন, অথবা স্বতন্ত্র SDK-তে অ্যাক্সেস দেওয়ার জন্য allowSdksToAccess অ্যাট্রিবিউট ব্যবহার করুন৷ বিজ্ঞাপন পরিষেবার অনুমতি এবং SDK অ্যাক্সেস নিয়ন্ত্রণ সম্পর্কে আরও জানুন৷

<ad-services-config>
    <topics allowAllToAccess="true" />
</ad-services-config>

অতিরিক্তভাবে, আপনাকে এই অ্যাডবি কমান্ডের সাহায্যে টপিক এপিআই (ডিফল্টরূপে অক্ষম) অ্যাক্সেস সক্ষম করতে হবে।

adb shell device_config put adservices ppapi_app_signature_allow_list \"\*\"
adb shell setprop debug.adservices.disable_topics_enrollment_check true

টপিক্স এপিআই-এর প্রাথমিক কার্যকারিতা TopicsManager অবজেক্টের ভিতরে getTopics() পদ্ধতিতে থাকে, যেমন এই উদাহরণে দেখানো হয়েছে:

কোটলিন

fun getTopics(
        getTopicsRequest: GetTopicsRequest,
        executor: Executor,
        callback: OutcomeReceiver<GetTopicsResponse, Exception>
    ) { }

জাভা

public void getTopics (@NonNull GetTopicsRequest getTopicsRequest,
    @NonNull Executor executor,
    @NonNull OutcomeReceiver<GetTopicsResponse, Exception> callback)

এই পদ্ধতিটি ব্যবহার করতে, TopicsManager অবজেক্ট এবং টপিক ডেটা পাওয়ার জন্য প্রয়োজনীয় প্যারামিটারগুলি শুরু করুন। GetTopicsRequest টপিক API ডেটা পুনরুদ্ধার করার জন্য প্রয়োজনীয় তথ্য পাস করে, যার মধ্যে একটি পতাকাও রয়েছে যা নির্দেশ করে যে কলকারী একজন পর্যবেক্ষক হিসাবে কাজ করতে চলেছেন কি না। একজন পর্যবেক্ষক হিসাবে কাজ না করার সময়, getTopics কল পূর্ববর্তী যুগের একটি বিষয় ফেরত দেয়, কিন্তু নিম্নলিখিতটির জন্য বিষয় ডেটা প্রভাবিত করবে না। OutcomeReceiver কলব্যাক অ্যাসিঙ্ক্রোনাসভাবে ফলাফল পরিচালনা করে। যেমন:

কোটলিন

private fun topicGetter() {
    val mContext = baseContext
    val mTopicsManager = mContext.getSystemService(TopicsManager::class.java)
    val mExecutor: Executor = Executors.newCachedThreadPool()
    val shouldRecordObservation = false
    val mTopicsRequestBuilder: GetTopicsRequest.Builder = GetTopicsRequest.Builder()
    mTopicsRequestBuilder.setAdsSdkName(baseContext.packageName)
    mTopicsRequestBuilder.setShouldRecordObservation(shouldRecordObservation)
    mTopicsManager.getTopics(mTopicsRequestBuilder.build(), mExecutor,
        mCallback as OutcomeReceiver<GetTopicsResponse, Exception>)
}
private var mCallback: OutcomeReceiver<GetTopicsResponse, java.lang.Exception> =
object : OutcomeReceiver<GetTopicsResponse, java.lang.Exception> {
    override fun onResult(result: GetTopicsResponse) {
        // handle successful result
        val topicsResult = result.topics
        for (i in topicsResult.indices) {
            Log.i("Topic", topicsResult[i].getTopicId().toString())
        }
        if (topicsResult.size == 0) {
            Log.i("Topic", "Returned Empty")
        }
    }
    override fun onError(error: java.lang.Exception) {
        // handle error
        Log.i("Topic", "Error, did not return successfully")
    }
}

জাভা

public void TopicGetter() {
    @NonNull Context mContext = getBaseContext();
    TopicsManager mTopicsManager = mContext.getSystemService(TopicsManager.class);
    Executor mExecutor = Executors.newCachedThreadPool();
    boolean shouldRecordObservation = false;
    GetTopicsRequest.Builder mTopicsRequestBuilder = new GetTopicsRequest.Builder();
    mTopicsRequestBuilder.setAdsSdkName(getBaseContext().getPackageName());
    mTopicsRequestBuilder.setShouldRecordObservation(shouldRecordObservation);
    mTopicsManager.getTopics(mTopicsRequestBuilder.build(), mExecutor, mCallback);
}
OutcomeReceiver mCallback = new OutcomeReceiver<GetTopicsResponse, Exception>() {
    @Override
    public void onResult(@NonNull GetTopicsResponse result) {
        //Handle Successful Result
        List<Topic> topicsResult = result.getTopics();
        for (int i = 0; i < topicsResult.size(); i++) {
            Log.i("Topic", topicsResult.get(i).getTopicId().toString());
        }
        if (topicsResult.size() == 0) {
            Log.i("Topic", "Returned Empty");
        }
    }
    @Override
    public void onError(@NonNull Exception error) {
        // Handle error
        Log.i("Topic", "Experienced an error, and did not return successfully");
    }
};

বিষয়ের একটি সেট অনুরোধ

একবার আপনার সেটআপ প্রস্তুত হয়ে গেলে, আপনি getTopics() পদ্ধতির ফলস্বরূপ একটি GetTopicsResponse পাওয়ার জন্য একটি কল করতে পারেন:

কোটলিন

mTopicsManager.getTopics(mTopicsRequestBuilder.build(), mExecutor,
        mCallback as OutcomeReceiver<GetTopicsResponse, java.lang.Exception>)

জাভা

mTopicsManager.getTopics(mTopicsRequestBuilder.build(), mExecutor, mCallback);

উপরের আমন্ত্রণটি আইডি মান ধারণকারী বিষয় বস্তুর একটি তালিকা প্রদান করবে যা ওপেন সোর্স শ্রেণীবিভাগের বিষয়গুলির সাথে সম্পর্কিত যা ব্যবহারকারীর জন্য প্রাসঙ্গিক, বা একটি প্রাসঙ্গিক ত্রুটি। বিষয়গুলি এই উদাহরণের অনুরূপ হবে:

/Internet & Telecom/Text & Instant Messaging

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

টেস্টিং

বিষয় API অ্যাপ ব্যবহারের উপর ভিত্তি করে প্রাসঙ্গিক এবং নতুন বিষয় প্রদান করে। এই প্রারম্ভিক সংস্করণটি API আচরণগুলির একটি পূর্বরূপ দেয় এবং আমরা ভবিষ্যতের প্রকাশের ক্ষেত্রে বিষয়গুলির গুণমান উন্নত করব৷ সম্পূর্ণ অভিজ্ঞতা পেতে, আমরা একাধিক অ্যাপ সহ একটি পরীক্ষার পরিবেশ সুপারিশ করি যেখানে আপনি কীভাবে বিষয়গুলি নির্বাচন করা হয় তা দেখতে getTopics() কল করেন৷ GitHub-এ SDK রানটাইম এবং গোপনীয়তা সংরক্ষণকারী API-এর সংগ্রহস্থলে আপনাকে শুরু করতে সাহায্য করার জন্য পৃথক Android স্টুডিও প্রকল্পগুলির একটি সেট রয়েছে, যার মধ্যে নমুনাগুলি রয়েছে যা প্রদর্শন করে যে কীভাবে টপিক এপিআই শুরু করতে হয় এবং কল করতে হয়।

বিষয় গণনা একটি "যুগ" শেষে সঞ্চালিত হয়. ডিফল্টরূপে, প্রতিটি যুগ 7 দিন দীর্ঘ, তবে আপনি ফলাফল পেতে এই ব্যবধানটি পরিবর্তন করতে পারেন। এই অ্যান্ড্রয়েড ডিবাগ ব্রিজ শেল কমান্ডটি যুগের দৈর্ঘ্যকে 5 মিনিটে ছোট করে:

adb shell device_config put adservices topics_epoch_job_period_ms 300000

আপনি get এর সাথে topics_epoch_job_period_ms মান নিশ্চিত করতে পারেন:

adb shell device_config get adservices topics_epoch_job_period_ms

ম্যানুয়ালি ইপোক কম্পিউটেশন ট্রিগার করতে, নিম্নলিখিত কমান্ডটি চালান:

adb shell cmd jobscheduler run -f com.google.android.adservices.api 2

নমুনা অ্যাপ ব্যবহার করার পাশাপাশি, একটি কোল্যাব রয়েছে যা আপনি বিষয় শ্রেণিবদ্ধকারীর বিরুদ্ধে অ্যাপের তথ্যের বিভিন্ন সমন্বয় পরীক্ষা করতে ব্যবহার করতে পারেন। getTopics কল করার সময় আপনার অ্যাপ যে ধরনের ফলাফল পেতে পারে তা দেখতে এই কোল্যাবটি ব্যবহার করুন।

সীমাবদ্ধতা

বিষয় API-এর জন্য অগ্রগতি ক্ষমতার একটি তালিকার জন্য, রিলিজ নোটগুলি পড়ুন।

বাগ এবং সমস্যা রিপোর্টিং

আপনার প্রতিক্রিয়া Android এ গোপনীয়তা স্যান্ডবক্সের একটি গুরুত্বপূর্ণ অংশ! Android-এ গোপনীয়তা স্যান্ডবক্সের উন্নতির জন্য আপনার খুঁজে পাওয়া যেকোন সমস্যা বা ধারণা সম্পর্কে আমাদের জানান

{% শব্দার্থে %} {% endverbatim %}