নির্দিষ্ট ডিভাইসের সাথে কাস্টম ডেটা স্টোর ও ফিরিয়ে আনতে কীভাবে ডিভাইস রিকল ব্যবহার করতে হয় তা এই পৃষ্ঠায় বর্ণনা করা হয়েছে। আপনার অ্যাপ একই ডিভাইসে ইনস্টল করা থাকলে, এমনকি ডিভাইস রিসেট করার পরেও, আপনি পরে আবার কাস্টম ডেটা নির্ভরযোগ্যভাবে রিকল করতে পারবেন। এটি আপনাকে ব্যবহারকারীর গোপনীয়তা রক্ষা করার পাশাপাশি, আপনার নির্দিষ্ট করা কোনও অ্যাকশন বা ব্যবহারের উপর ভিত্তি করে কোনও ডিভাইস আবার ব্যবহার করা শনাক্ত করতে ও আটকাতে দেয়।
ডিভাইস রিকল কীভাবে কাজ করে?
ডিভাইস রিকল অ্যাপকে নির্দিষ্ট ডিভাইসের সাথে সম্পর্কিত কাস্টম ডেটা এমনভাবে স্টোর ও রিকল করার সুবিধা দেয় যাতে ব্যবহারকারীর গোপনীয়তা সুরক্ষিত থাকে। ডেটা Google-এর সার্ভারে স্টোর করা হয়, যার ফলে আপনার অ্যাপ আবার ইনস্টল করা বা ডিভাইস রিসেট করার পরেও আপনার অ্যাপ নির্ভরযোগ্যভাবে আপনার কাস্টম ডেটা মনে রাখতে পারে। যেমন, আপনি এই ফিচার ব্যবহার করে এমন ডিভাইস রিকল করতে পারেন যেখানে আপনি গুরুতর অপব্যবহারের প্রমাণ পেয়েছেন, এমন ডিভাইস যা আগে থেকেই বেশি মূল্যের আইটেম (যেমন ফ্রি ট্রায়াল) রিডিম করেছে অথবা এমন ডিভাইস যা অপব্যবহারের উদ্দেশ্যে নতুন অ্যাকাউন্ট তৈরি করার জন্য বারবার ব্যবহার করা হচ্ছে। ডিভাইস রিকল ব্যবহারকারীর গোপনীয়তা রক্ষা করে কারণ অনুরোধকারী অ্যাপটি শুধুমাত্র ডিভাইসের সাথে যুক্ত সীমিত ডেটা রিকল করতে পারে, কোনও ডিভাইস বা ব্যবহারকারীর শনাক্তকারী অ্যাক্সেস না করেই। ডিভাইস রিকল চালু করার পরে, আপনি নিম্নলিখিত কাজগুলি করতে পারবেন:
- প্রতি-ডিভাইস ডেটা পড়া: আপনি ইন্টিগ্রিটি ফলাফল পাওয়ার সময় প্রতিটি ডিভাইসের জন্য তিনটি কাস্টম ভ্যালু বা বিট পড়তে পারবেন। আপনি এই ভ্যালুগুলির জন্য নিজের অর্থ নির্ধারণ করতে পারেন; উদাহরণস্বরূপ, আপনি ভ্যালুগুলিকে তিনটি আলাদা ফ্ল্যাগ হিসাবে বিবেচনা করতে পারেন বা আটটি কাস্টম লেবেল দেখানোর জন্য সেগুলিকে একত্রিত করতে পারেন।
- প্রতি-ডিভাইস ডেটা পরিবর্তন করা: আপনি ইন্টিগ্রিটি টোকেন পাওয়ার পরে, এক বা একাধিক ভ্যালু পরিবর্তন করার জন্য Google Play-এর সার্ভারে সার্ভার-সাইড কল করতে সেই টোকেন ব্যবহার করতে পারবেন। টোকেন ব্যবহার করার জন্য আপনার কাছে ১৪ দিন সময় আছে। এর ফলে, আপনি কোনও ভ্যালু পরিবর্তন করতে পারবেন, যেমন, আপনি প্রথমবার ইন্টিগ্রিটি চেক করার পরে দুই সপ্তাহের মধ্যে অপব্যবহারের ঘটনা ঘটলে। আপনি কোনও ভ্যালু পরিবর্তন করলে, যে মাস ও বছরে পরিবর্তন করা হয়েছে সেটিও স্টোর করা হয়।
ডিভাইস রিকল সংক্রান্ত পূর্বশর্ত ও বিবেচ্য বিষয়
অ্যাপের নিরাপত্তা রক্ষা করতে এবং অপব্যবহার, প্রতারণা ও অননুমোদিত অ্যাক্সেস প্রতিরোধ করতে, ডিভাইস রিকল শুধুমাত্র তথ্য স্টোর ও রিকল করার জন্য ব্যবহার করা যেতে পারে। আপনি কোনও ব্যবহারকারী বা ডিভাইসকে ফিঙ্গারপ্রিন্ট বা ট্র্যাক করার জন্য ডিভাইস রিকল ব্যবহার করতে পারবেন না এবং আপনি লিঙ্গ, বয়স বা লোকেশন ডেটার মতো সংবেদনশীল ব্যবহারকারী বা ডিভাইসের বৈশিষ্ট্য ট্র্যাক করার জন্য ডিভাইস রিকল ব্যবহার করতে পারবেন না।
ডিভাইস রিকল ফিচারের জন্য নিম্নলিখিত পূর্বশর্তগুলি পূরণ করতে হবে:
- ডিভাইস রিকল ফোন, ট্যাবলেট, ফোল্ডেবল, টিভি, অটো এবং Wear OS-এ ব্যবহার করা যেতে পারে। Wear-এ, ডিভাইস রিকল শুধুমাত্র Wear OS 5 বা তার পরবর্তী ভার্সন সহ শিপ করা ডিভাইসে উপলভ্য। এমুলেটরে ডিভাইস রিকল কাজ করে না।
- ডিভাইস রিকল ফিচার ব্যবহার করতে হলে, ডিভাইসে Google Play Store এবং Google Play পরিষেবা, দুটিরই সাম্প্রতিক ভার্সন ইনস্টল ও চালু করা থাকতে হবে।
- ডিভাইস রিকল করার জন্য ব্যবহারকারীর অ্যাকাউন্ট Play লাইসেন্সপ্রাপ্ত হতে হবে, অন্যথায় রায় মূল্যায়ন করা হবে না।
ডিভাইস রিকলের ক্ষেত্রে নিম্নলিখিত সময় সংক্রান্ত বিষয় বিবেচনা করা হয়:
- আপনি কোনও ইন্টিগ্রিটি টোকেন যাচাই করার পরে, কাস্টম ডিভাইস রিকল ডেটা স্টোর করার জন্য এটি ব্যবহার করতে আপনার কাছে ১৪ দিন পর্যন্ত সময় থাকে।
- ডিভাইস রিকলে টাইমস্ট্যাম্প অন্তর্ভুক্ত থাকে যাতে আপনি অনেক আগে পরিবর্তিত ডেটার চেয়ে সম্প্রতি পরিবর্তিত ডেটাকে বেশি অগ্রাধিকার দেওয়ার কথা বিবেচনা করতে পারেন। ডিভাইস অন্য কারও হাতে যেতে পারে বা রিফারবিশ করে আবার বিক্রি করা হতে পারে, তাই দীর্ঘ সময় পরে ডেটা উপেক্ষা বা রিসেট করার কথা বিবেচনা করুন।
- শেষবার রিড বা রাইট অ্যাক্সেসের পর থেকে ৩ বছর পর্যন্ত কোনও ডিভাইসের রিকল বিট স্টোর করা হবে।
- কোনও ডিভাইসের সাথে যুক্ত সব ডেটা মুছে দিতে হলে, আপনার অ্যাপ সেই ডিভাইসের তিনটি ভ্যালুই false-এ রিসেট করতে পারে। এটি অটোমেটিক টাইম স্ট্যাম্প রিসেট করে দেবে।
একাধিক অ্যাপ আছে এমন ডেভেলপার এবং অ্যাপ ট্রান্সফার করছেন এমন ডেভেলপারের ক্ষেত্রে, ডিভাইস রিকল এইভাবে কাজ করে:
- আপনার Google Play ডেভেলপার অ্যাকাউন্টের সব অ্যাপের কাছে ডিভাইস প্রতি একই তিনটি ভ্যালুর অ্যাক্সেস থাকে। অন্যভাবে বলতে গেলে, আপনার কোনও অ্যাপ যদি কোনও ভ্যালু পরিবর্তন করে, তাহলে একই ডিভাইসে ইনস্টল করা আপনার সব অ্যাপ পরিবর্তিত ভ্যালু পড়তে পারবে।
- কোনও অ্যাপ একটি ডেভেলপার অ্যাকাউন্ট থেকে অন্য অ্যাকাউন্টে ট্রান্সফার করা হলে, ডিভাইস রিকল নতুন ডেভেলপার অ্যাকাউন্টের ডিভাইস প্রতি ডেটা দেখাবে, পুরনো ডেভেলপার অ্যাকাউন্টের ডিভাইস প্রতি ডেটা নয়।
ডিভাইস রিকল চালু করুন
আপনি প্রস্তুত হলে, Play Console-এ ডিভাইস রিকল চালু করুন:
- Play Console-এ সাইন-ইন করুন।
- ডিভাইস রিকল ব্যবহার করবে এমন অ্যাপ বেছে নিন।
- বাঁদিকের মেনু থেকে Play-এর মাধ্যমে সুরক্ষিত বিকল্পে নেভিগেট করুন।
- Play Integrity API-এর পাশে, ম্যানেজ করুন বিকল্পে ক্লিক করুন।
- পৃষ্ঠার 'উত্তর' বিভাগে গিয়ে উত্তর পরিবর্তন করুন বিকল্পে ক্লিক করুন।
- ডিভাইস রিকল চালু করুন।
- 'পরিবর্তন সেভ করুন' বিকল্পে ক্লিক করুন।
আপনি ডিভাইস রিকল চালু বা বন্ধ করলে, Play Console-এ সেট-আপ করা যেকোনও Play Integrity API টেস্ট উত্তর মুছে যাবে এবং আপনাকে সেগুলি আবার তৈরি করতে হবে।
ডিভাইস রিকল ভ্যালু পড়ুন
Play Integrity API-এর ক্লাসিক ও স্ট্যান্ডার্ড, উভয় অনুরোধের ক্ষেত্রেই ডিভাইস রিকল কাজ করে। স্ট্যান্ডার্ড অনুরোধে, ওয়ার্মআপ কলে ডিভাইস রিকল রিফ্রেশ করা হয়। অন্যভাবে বলতে গেলে, ডিভাইস প্রতি ডেটা পরিবর্তন করার পরে, আপডেট করা ভ্যালু দেখতে আপনাকে আবার ওয়ার্ম আপ করতে হবে। ডিভাইস রিকল চালু করা হয়ে গেলে, আপনি ইন্টিগ্রিটি ফলাফলে ডিভাইস রিকল ভ্যালু পড়তে পারবেন।
ডিভাইস রিকল ভ্যালু পরিবর্তন করুন
আপনি ইন্টিগ্রিটি ফলাফল ডিকোড করার মতো
সার্ভার-টু-সার্ভার API কল করে
ডিভাইস রিকল ভ্যালু পরিবর্তন করতে পারবেন। true-এ
বিট সেট করলে, এটি লেখার তারিখও আপডেট করবে (এমনকি এটি আগে থেকেই true হলেও)।
false-এ বিট সেট করলে, এটি লেখার তারিখ রিসেট করে খালি করে দেবে। অনুরোধে উল্লেখ না করা
বিট অপরিবর্তিত থাকবে। বিট লেখা এবং রায়ে সেগুলি আবার পড়তে পারার মধ্যে সামান্য প্রোপাগেশন
বিলম্ব আছে। এই
দেরি ৩০ সেকেন্ড পর্যন্ত হতে পারে, যদিও সাধারণত এর থেকে অনেক কম সময় লাগে। ডিভাইস
রিকল রাইট অনুরোধ, ইন্টিগ্রিটি টোকেন অনুরোধের চেয়ে কম ঘন ঘন হওয়া উচিত। এগুলি আপনার ইন্টিগ্রিটি টোকেন অনুরোধ কোটার অংশ হিসেবে বিবেচিত হয় না, তবে
এগুলির জন্য আলাদা রেট সীমা প্রযোজ্য।
playintegrity.googleapis.com/v1/PACKAGE_NAME/deviceRecall:write -d \
'{
"integrityToken": "INTEGRITY_TOKEN",
"newValues": {
"bitFirst": true,
"bitThird": false
}
}'newValues.BitFirst = true // ForceSendFields optional for value true newValues.BitSecond = false // ForceSendFields required for value false newValues.BitThird = nil // do not set ForceSendFields for unspecified bits newValues.ForceSendFields = []string{"BitSecond"}