অনেক ব্যবহারকারী এখনও নতুন Android-চালিত ডিভাইস সেট-আপ করার সময় তাদের নিজস্ব ক্রেডেনশিয়াল ম্যানেজ করেন। এই ম্যানুয়াল প্রসেসটি চ্যালেঞ্জিং হতে পারে এবং প্রায়শই ব্যবহারকারীর অভিজ্ঞতা খারাপ করে। Block Store API হল Google Play পরিষেবা দ্বারা পরিচালিত একটি লাইব্রেরি, যা ব্যবহারকারীর পাসওয়ার্ড সেভ করার সাথে সম্পর্কিত জটিলতা বা নিরাপত্তা ঝুঁকি ছাড়াই অ্যাপের জন্য ব্যবহারকারীর ক্রেডেনশিয়াল সেভ করার উপায় প্রদান করে এই সমস্যার সমাধান করতে চায়।
Block Store API আপনার অ্যাপকে ডেটা স্টোর করার অনুমতি দেয়, যাতে পরে নতুন ডিভাইসে ব্যবহারকারীদের আবার যাচাই করার জন্য এটি ডেটা ফিরিয়ে আনতে পারে। এটি ব্যবহারকারীকে আরও নির্বিঘ্ন অভিজ্ঞতা প্রদান করতে সাহায্য করে, কারণ নতুন ডিভাইসে প্রথমবার আপনার অ্যাপ লঞ্চ করার সময় তাদের সাইন-ইন স্ক্রিন দেখতে হয় না।
Block Store ব্যবহার করার সুবিধাগুলি নিচে দেওয়া হল:
- ডেভেলপারদের জন্য এনক্রিপ্ট করা ক্রেডেনশিয়াল স্টোরেজ সমাধান। সম্ভব হলে ক্রেডেনশিয়াল এন্ড-টু-এন্ড এনক্রিপ্ট করা হয়।
- ইউজারনেম ও পাসওয়ার্ডের পরিবর্তে টোকেন সেভ করুন।
- সাইন-ইন ফ্লো থেকে জটিলতা দূর করা।
- জটিল পাসওয়ার্ড ম্যানেজ করার বোঝা থেকে ব্যবহারকারীদের মুক্তি দিন।
- Google ব্যবহারকারীর পরিচয় যাচাই করে।
শুরু করার আগে
আপনার অ্যাপ প্রস্তুত করতে, নিম্নলিখিত বিভাগে উল্লেখ করা ধাপগুলি সম্পূর্ণ করুন।
আপনার অ্যাপ কনফিগার করুন
আপনার প্রোজেক্ট-লেভেল build.gradle ফাইলে, আপনার buildscript
এবং allprojects উভয় বিভাগেই Google-এর Maven
রিপোজিটরি অন্তর্ভুক্ত করুন:
buildscript {
repositories {
google()
mavenCentral()
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
Block Store API-এর জন্য Google Play পরিষেবা ডিপেন্ডেন্সি
আপনার মডিউলের Gradle বিল্ড ফাইলে যোগ করুন, যা সাধারণত app/build.gradle:
dependencies {
implementation 'com.google.android.gms:play-services-auth-blockstore:16.4.0'
}
এটি কীভাবে কাজ করে
Block Store ডেভেলপারদের ১৬ বাইট অ্যারে পর্যন্ত সেভ ও রিস্টোর করার অনুমতি দেয়। এটি আপনাকে বর্তমান ব্যবহারকারীর সেশন সম্পর্কিত গুরুত্বপূর্ণ তথ্য সেভ করতে দেয় এবং আপনার পছন্দমতো এই তথ্য সেভ করার সুবিধা প্রদান করে। এই ডেটা এন্ড-টু-এন্ড এনক্রিপ্ট করা যেতে পারে এবং ব্লক স্টোরকে সাপোর্ট করে এমন পরিকাঠামো ব্যাক-আপ ও রিস্টোর পরিকাঠামোর উপরে তৈরি করা হয়।
এই গাইডে Block Store-এ ব্যবহারকারীর টোকেন সেভ করার ব্যবহারিক উদাহরণ কভার করা হবে। Block Store ব্যবহার করে এমন অ্যাপ কীভাবে কাজ করবে তা নিম্নলিখিত ধাপে উল্লেখ করা হয়েছে:
- আপনার অ্যাপের যাচাইকরণ ফ্লো চলাকালীন বা তারপরে যেকোনও সময়, আপনি ব্যবহারকারীর যাচাইকরণ টোকেন Block Store-এ সেভ করতে পারবেন যাতে পরে তা ফিরিয়ে আনা যায়।
- টোকেনটি স্থানীয়ভাবে স্টোর করা হবে এবং ক্লাউডেও ব্যাক-আপ নেওয়া যেতে পারে, সম্ভব হলে এন্ড-টু-এন্ড এনক্রিপ্ট করা হবে।
- ব্যবহারকারী নতুন ডিভাইসে রিস্টোর ফ্লো শুরু করলে ডেটা ট্রান্সফার করা হয়।
- রিস্টোর ফ্লো চলাকালীন ব্যবহারকারী আপনার অ্যাপ রিস্টোর করলে, আপনার অ্যাপ তখন নতুন ডিভাইসে ব্লক স্টোর থেকে সেভ করা টোকেন ফিরিয়ে আনতে পারে।
টোকেন সেভ করা হচ্ছে
কোনও ব্যবহারকারী আপনার অ্যাপে সাইন-ইন করলে, আপনি সেই ব্যবহারকারীর জন্য যে যাচাইকরণ টোকেন তৈরি করেন, তা ব্লক স্টোরে সেভ করতে পারবেন। আপনি অনন্য কী পেয়ার ভ্যালু ব্যবহার করে এই টোকেন স্টোর করতে পারবেন
যার এন্ট্রি প্রতি সর্বাধিক ৪কেবি আছে। টোকেন স্টোর করতে,
StoreBytesData.Builder-এর ইনস্ট্যান্সে setBytes() এবং setKey() কল করুন যাতে সোর্স ডিভাইসে ব্যবহারকারীর ক্রেডেনশিয়াল স্টোর করা যায়। Block Store-এর মাধ্যমে টোকেন সেভ করার পরে, টোকেনটি এনক্রিপ্ট করা হয় এবং
ডিভাইসে স্থানীয়ভাবে স্টোর করা হয়।
নিচের স্যাম্পেল থেকে জানতে পারবেন যে কীভাবে লোকাল ডিভাইসে যাচাইকরণ টোকেন সেভ করতে হয়:
জাভা
BlockstoreClient client = Blockstore.getClient(this);
byte[] bytes1 = new byte[] { 1, 2, 3, 4 }; // Store one data block.
String key1 = "com.example.app.key1";
StoreBytesData storeRequest1 = StoreBytesData.Builder()
.setBytes(bytes1)
// Call this method to set the key-value pair the data should be associated with.
.setKeys(Arrays.asList(key1))
.build();
client.storeBytes(storeRequest1)
.addOnSuccessListener(result -> Log.d(TAG, "stored " + result + " bytes"))
.addOnFailureListener(e -> Log.e(TAG, "Failed to store bytes", e));
Kotlin
val client = Blockstore.getClient(this)
val bytes1 = byteArrayOf(1, 2, 3, 4) // Store one data block.
val key1 = "com.example.app.key1"
val storeRequest1 = StoreBytesData.Builder()
.setBytes(bytes1) // Call this method to set the key value with which the data should be associated with.
.setKeys(Arrays.asList(key1))
.build()
client.storeBytes(storeRequest1)
.addOnSuccessListener { result: Int ->
Log.d(TAG,
"Stored $result bytes")
}
.addOnFailureListener { e ->
Log.e(TAG, "Failed to store bytes", e)
}
ডিফল্ট টোকেন ব্যবহার করুন
StoreBytes ব্যবহার করে কোনও 'কী' ছাড়াই সেভ করা ডেটা ডিফল্ট 'কী' ব্যবহার করে
BlockstoreClient.DEFAULT_BYTES_DATA_KEY।
জাভা
BlockstoreClient client = Blockstore.getClient(this);
// The default key BlockstoreClient.DEFAULT_BYTES_DATA_KEY.
byte[] bytes = new byte[] { 9, 10 };
StoreBytesData storeRequest = StoreBytesData.Builder()
.setBytes(bytes)
.build();
client.storeBytes(storeRequest)
.addOnSuccessListener(result -> Log.d(TAG, "stored " + result + " bytes"))
.addOnFailureListener(e -> Log.e(TAG, "Failed to store bytes", e));
Kotlin
val client = Blockstore.getClient(this);
// the default key BlockstoreClient.DEFAULT_BYTES_DATA_KEY.
val bytes = byteArrayOf(1, 2, 3, 4)
val storeRequest = StoreBytesData.Builder()
.setBytes(bytes)
.build();
client.storeBytes(storeRequest)
.addOnSuccessListener { result: Int ->
Log.d(TAG,
"stored $result bytes")
}
.addOnFailureListener { e ->
Log.e(TAG, "Failed to store bytes", e)
}
টোকেন ফিরিয়ে আনা হচ্ছে
পরে, কোনও ব্যবহারকারী নতুন ডিভাইসে রিস্টোর ফ্লো ব্যবহার করলে, Google Play
পরিষেবা প্রথমে ব্যবহারকারীকে যাচাই করে, তারপর আপনার Block Store ডেটা ফিরিয়ে আনে। ব্যবহারকারী
রিস্টোর ফ্লোর অংশ হিসেবে আপনার অ্যাপ ডেটা রিস্টোর করতে আগেই সম্মতি দিয়েছেন, তাই অতিরিক্ত
সম্মতির প্রয়োজন নেই। ব্যবহারকারী আপনার অ্যাপ খুললে, আপনি retrieveBytes() কল করে
Block Store থেকে আপনার টোকেনের জন্য অনুরোধ করতে পারবেন। নতুন ডিভাইসে ব্যবহারকারীকে সাইন-ইন করে রাখার জন্য
উদ্ধার করা টোকেন ব্যবহার করা যেতে পারে।
নির্দিষ্ট কী-এর উপর ভিত্তি করে কীভাবে একাধিক টোকেন ফিরিয়ে আনা যায় তা নিম্নলিখিত স্যাম্পেলে দেখানো হয়েছে।
জাভা
BlockstoreClient client = Blockstore.getClient(this);
// Retrieve data associated with certain keys.
String key1 = "com.example.app.key1";
String key2 = "com.example.app.key2";
String key3 = BlockstoreClient.DEFAULT_BYTES_DATA_KEY; // Used to retrieve data stored without a key
List<String> requestedKeys = Arrays.asList(key1, key2, key3); // Add keys to array
RetrieveBytesRequest retrieveRequest = new RetrieveBytesRequest.Builder()
.setKeys(requestedKeys)
.build();
client.retrieveBytes(retrieveRequest)
.addOnSuccessListener(
result -> {
Map<String, BlockstoreData> blockstoreDataMap = result.getBlockstoreDataMap();
for (Map.Entry<String, BlockstoreData> entry : blockstoreDataMap.entrySet()) {
Log.d(TAG, String.format(
"Retrieved bytes %s associated with key %s.",
new String(entry.getValue().getBytes()), entry.getKey()));
}
})
.addOnFailureListener(e -> Log.e(TAG, "Failed to store bytes", e));
Kotlin
val client = Blockstore.getClient(this)
// Retrieve data associated with certain keys.
val key1 = "com.example.app.key1"
val key2 = "com.example.app.key2"
val key3 = BlockstoreClient.DEFAULT_BYTES_DATA_KEY // Used to retrieve data stored without a key
val requestedKeys = Arrays.asList(key1, key2, key3) // Add keys to array
val retrieveRequest = RetrieveBytesRequest.Builder()
.setKeys(requestedKeys)
.build()
client.retrieveBytes(retrieveRequest)
.addOnSuccessListener { result: RetrieveBytesResponse ->
val blockstoreDataMap =
result.blockstoreDataMap
for ((key, value) in blockstoreDataMap) {
Log.d(ContentValues.TAG, String.format(
"Retrieved bytes %s associated with key %s.",
String(value.bytes), key))
}
}
.addOnFailureListener { e: Exception? ->
Log.e(ContentValues.TAG,
"Failed to store bytes",
e)
}
সব টোকেন ফিরিয়ে আনা হচ্ছে।
BlockStore-এ সেভ করা সব টোকেন কীভাবে ফিরিয়ে আনা যায় তা নিম্নলিখিত উদাহরণ থেকে দেখুন।
জাভা
BlockstoreClient client = Blockstore.getClient(this)
// Retrieve all data.
RetrieveBytesRequest retrieveRequest = new RetrieveBytesRequest.Builder()
.setRetrieveAll(true)
.build();
client.retrieveBytes(retrieveRequest)
.addOnSuccessListener(
result -> {
Map<String, BlockstoreData> blockstoreDataMap = result.getBlockstoreDataMap();
for (Map.Entry<String, BlockstoreData> entry : blockstoreDataMap.entrySet()) {
Log.d(TAG, String.format(
"Retrieved bytes %s associated with key %s.",
new String(entry.getValue().getBytes()), entry.getKey()));
}
})
.addOnFailureListener(e -> Log.e(TAG, "Failed to store bytes", e));
Kotlin
val client = Blockstore.getClient(this)
val retrieveRequest = RetrieveBytesRequest.Builder()
.setRetrieveAll(true)
.build()
client.retrieveBytes(retrieveRequest)
.addOnSuccessListener { result: RetrieveBytesResponse ->
val blockstoreDataMap =
result.blockstoreDataMap
for ((key, value) in blockstoreDataMap) {
Log.d(ContentValues.TAG, String.format(
"Retrieved bytes %s associated with key %s.",
String(value.bytes), key))
}
}
.addOnFailureListener { e: Exception? ->
Log.e(ContentValues.TAG,
"Failed to store bytes",
e)
}
ডিফল্ট কী কীভাবে ফিরিয়ে আনতে হয় তা নিম্নলিখিত উদাহরণ থেকে দেখুন।
জাভা
BlockStoreClient client = Blockstore.getClient(this);
RetrieveBytesRequest retrieveRequest = new RetrieveBytesRequest.Builder()
.setKeys(Arrays.asList(BlockstoreClient.DEFAULT_BYTES_DATA_KEY))
.build();
client.retrieveBytes(retrieveRequest);
Kotlin
val client = Blockstore.getClient(this)
val retrieveRequest = RetrieveBytesRequest.Builder()
.setKeys(Arrays.asList(BlockstoreClient.DEFAULT_BYTES_DATA_KEY))
.build()
client.retrieveBytes(retrieveRequest)
টোকেন মুছে ফেলা হচ্ছে
নিম্নলিখিত কারণে BlockStore থেকে টোকেন মুছে ফেলার প্রয়োজন হতে পারে:
- ব্যবহারকারী সাইন-আউট ইউজার ফ্লো সম্পূর্ণ করেন।
- টোকেন তুলে নেওয়া হয়েছে বা এটি ভুল।
টোকেন ফিরিয়ে আনার মতোই, আপনি কোন টোকেন মুছতে হবে তা নির্দিষ্ট করতে পারেন। এর জন্য, যেসব 'কী' মুছতে হবে সেগুলির একটি অ্যারে সেট করতে হবে।
নির্দিষ্ট কিছু 'কী' কীভাবে মুছতে হয় তা নিম্নলিখিত উদাহরণ থেকে দেখানো হয়েছে:
জাভা
BlockstoreClient client = Blockstore.getClient(this);
// Delete data associated with certain keys.
String key1 = "com.example.app.key1";
String key2 = "com.example.app.key2";
String key3 = BlockstoreClient.DEFAULT_BYTES_DATA_KEY; // Used to delete data stored without key
List<String> requestedKeys = Arrays.asList(key1, key2, key3) // Add keys to array
DeleteBytesRequest deleteRequest = new DeleteBytesRequest.Builder()
.setKeys(requestedKeys)
.build();
client.deleteBytes(deleteRequest)
Kotlin
val client = Blockstore.getClient(this)
// Retrieve data associated with certain keys.
val key1 = "com.example.app.key1"
val key2 = "com.example.app.key2"
val key3 = BlockstoreClient.DEFAULT_BYTES_DATA_KEY // Used to retrieve data stored without a key
val requestedKeys = Arrays.asList(key1, key2, key3) // Add keys to array
val retrieveRequest = DeleteBytesRequest.Builder()
.setKeys(requestedKeys)
.build()
client.deleteBytes(retrieveRequest)
সব টোকেন মুছে দিন
Block Store-এ সেভ করা সব টোকেন কীভাবে মুছবেন তা নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
জাভা
// Delete all data.
DeleteBytesRequest deleteAllRequest = new DeleteBytesRequest.Builder()
.setDeleteAll(true)
.build();
client.deleteBytes(deleteAllRequest)
.addOnSuccessListener(result -> Log.d(TAG, "Any data found and deleted? " + result));
Kotlin
// Delete all data.
val deleteAllRequest = DeleteBytesRequest.Builder()
.setDeleteAll(true)
.build()
client.deleteBytes(deleteAllRequest)
.addOnSuccessListener { result -> Log.d(TAG, "Any data found and deleted? $result") }
এন্ড-টু-এন্ড এনক্রিপশন
এন্ড-টু-এন্ড এনক্রিপশন উপলভ্য করার জন্য, ডিভাইসটি অবশ্যই Android 9 বা তার পরবর্তী কোনও ভার্সনে
চলতে হবে এবং ব্যবহারকারীকে অবশ্যই তার ডিভাইসের জন্য একটি স্ক্রিন লক
(পিন, প্যাটার্ন বা পাসওয়ার্ড) সেট করতে হবে। আপনি isEndToEndEncryptionAvailable() নম্বরে কল করে ডিভাইসে এনক্রিপশন উপলভ্য হবে কিনা তা যাচাই করতে পারবেন।
ক্লাউড ব্যাক-আপের সময় এনক্রিপশন উপলভ্য হবে কিনা তা কীভাবে যাচাই করবেন তা নিম্নলিখিত স্যাম্পেল থেকে দেখুন:
client.isEndToEndEncryptionAvailable()
.addOnSuccessListener { result ->
Log.d(TAG, "Will Block Store cloud backup be end-to-end encrypted? $result")
}
ক্লাউড ব্যাক-আপ চালু করুন
ক্লাউড ব্যাক-আপ চালু করতে, আপনার StoreBytesData অবজেক্টে setShouldBackupToCloud() পদ্ধতি যোগ করুন। setShouldBackupToCloud()-এর ভ্যালু true হিসেবে সেট করা থাকলে, ব্লক স্টোর নির্দিষ্ট সময় অন্তর ক্লাউডে
বাইট ব্যাক-আপ নেবে।
নিম্নলিখিত স্যাম্পেল থেকে জানতে পারবেন যে কীভাবে ক্লাউড ব্যাক-আপ চালু করতে হয় শুধুমাত্র যখন ক্লাউড ব্যাক-আপ এন্ড-টু-এন্ড এনক্রিপ্ট করা থাকে:
val client = Blockstore.getClient(this)
val storeBytesDataBuilder = StoreBytesData.Builder()
.setBytes(/* BYTE_ARRAY */)
client.isEndToEndEncryptionAvailable()
.addOnSuccessListener { isE2EEAvailable ->
if (isE2EEAvailable) {
storeBytesDataBuilder.setShouldBackupToCloud(true)
Log.d(TAG, "E2EE is available, enable backing up bytes to the cloud.")
client.storeBytes(storeBytesDataBuilder.build())
.addOnSuccessListener { result ->
Log.d(TAG, "stored: ${result.getBytesStored()}")
}.addOnFailureListener { e ->
Log.e(TAG, "Failed to store bytes", e)
}
} else {
Log.d(TAG, "E2EE is not available, only store bytes for D2D restore.")
}
}
কীভাবে পরীক্ষা করতে হয়
রিস্টোর ফ্লো পরীক্ষা করার জন্য ডেভেলপমেন্টের সময় নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করুন।
একই ডিভাইসে আনইনস্টল ও আবার ইনস্টল করা
ব্যবহারকারী ব্যাক-আপ পরিষেবা চালু করলে (এটি সেটিংস > Google > ব্যাক-আপ থেকে চেক করা যাবে), অ্যাপ আনইনস্টল ও আবার ইনস্টল করার পরেও ব্লক স্টোর ডেটা থেকে যায়।
পরীক্ষা করার জন্য আপনি এইসব ধাপ অনুসরণ করতে পারেন:
- আপনার টেস্ট অ্যাপে Block Store API ইন্টিগ্রেট করুন।
- আপনার ডেটা স্টোর করার জন্য Block Store API কল করতে টেস্ট অ্যাপ ব্যবহার করুন।
- আপনার টেস্ট অ্যাপ আনইনস্টল করুন এবং তারপরে একই ডিভাইসে আপনার অ্যাপ আবার ইনস্টল করুন।
- আপনার ডেটা ফিরিয়ে আনতে Block Store API কল করার জন্য টেস্ট অ্যাপ ব্যবহার করুন।
- আনইনস্টল করার আগে যে বাইট স্টোর করা হয়েছিল, সেটিই ফিরিয়ে আনা হয়েছে কিনা তা যাচাই করুন।
ডিভাইস-টু-ডিভাইস
বেশিরভাগ ক্ষেত্রে, এর জন্য টার্গেট ডিভাইস ফ্যাক্টরি রিসেট করতে হবে। তারপর আপনি Android ওয়্যারলেস রিস্টোর ফ্লো বা Google কেবেল রিস্টোর (কাজ করে এমন ডিভাইসের জন্য) বিকল্পে যেতে পারবেন।
ক্লাউড রিস্টোর
- আপনার টেস্ট অ্যাপে Block Store API ইন্টিগ্রেট করুন। টেস্ট অ্যাপটি Play Store-এ জমা দিতে হবে।
- সোর্স ডিভাইসে, আপনার ডেটা স্টোর করার জন্য Block Store API কল করতে টেস্ট অ্যাপ ব্যবহার করুন,
shouldBackUpToCloud-এর ভ্যালুtrue-এ সেট করা আছে। - Android 8.0 (API লেভেল ২৬) বা তার পরবর্তী যেকোনও ভার্সন চলছে এমন ডিভাইসে, আপনি ম্যানুয়ালি
Block Store ক্লাউড ব্যাক-আপ ট্রিগার করতে পারবেন: সেটিংস > Google > ব্যাক-আপ বিকল্পে যান,
"এখনই ব্যাক-আপ নিন" বোতামে ক্লিক করুন।
- Block Store ক্লাউড ব্যাক-আপ সফল হয়েছে কিনা তা যাচাই করতে, আপনি এগুলি করতে পারেন:
- ব্যাক-আপ নেওয়া হয়ে গেলে,
[CloudSyncBackupTaskService]ট্যাগ সহ লগ লাইন সার্চ করুন। - আপনি এই ধরনের লাইন দেখতে পাবেন:
..., [CloudSyncBackupTaskService] sync result: SUCCESS,..., uploaded size: [size] bytes ...
- ব্যাক-আপ নেওয়া হয়ে গেলে,
- Block Store ক্লাউড ব্যাক-আপের পরে, ৫ মিনিটের "কুলডাউন" পিরিয়ড থাকে। সেই ৫ মিনিটের মধ্যে, "এখনই ব্যাক-আপ নিন" বোতামে ক্লিক করলে, অন্য Block Store ক্লাউড ব্যাক-আপ ট্রিগার হবে না।
- Block Store ক্লাউড ব্যাক-আপ সফল হয়েছে কিনা তা যাচাই করতে, আপনি এগুলি করতে পারেন:
- টার্গেট ডিভাইস ফ্যাক্টরি রিসেট করুন এবং ক্লাউড রিস্টোর ফ্লো সম্পূর্ণ করুন। রিস্টোর ফ্লো চলাকালীন আপনার টেস্ট অ্যাপ রিস্টোর করতে বেছে নিন। ক্লাউড রিস্টোর ফ্লো সম্পর্কে আরও তথ্যের জন্য, কাজ করে এমন ক্লাউড রিস্টোর ফ্লো দেখুন।
- টার্গেট ডিভাইসে, আপনার ডেটা ফিরিয়ে আনতে Block store API কল করার জন্য টেস্ট অ্যাপ ব্যবহার করুন।
- সোর্স ডিভাইসে যা স্টোর করা ছিল, উদ্ধার করা বাইট একই কিনা তা যাচাই করুন।
ডিভাইস সংক্রান্ত প্রয়োজনীয়তা
Block Store অপারেশনে অংশগ্রহণকারী ডিভাইসের জন্য নিম্নলিখিত প্রয়োজনীয়তাগুলি পর্যালোচনা করুন।
এন্ড-টু-এন্ড এনক্রিপশন
- Android 9 (API 29) বা তার পরবর্তী যেকোনও ভার্সনে চলে এমন ডিভাইসে এন্ড-টু-এন্ড এনক্রিপশন কাজ করে।
- এন্ড-টু-এন্ড এনক্রিপশন চালু করতে এবং ব্যবহারকারীর ডেটা সঠিকভাবে এনক্রিপ্ট করতে, ডিভাইসে পিন, প্যাটার্ন বা পাসওয়ার্ড সহ স্ক্রিন লক সেট করা থাকতে হবে।
ডিভাইস থেকে ডিভাইসে রিস্টোর করার ফ্লো
ডিভাইস থেকে ডিভাইসে রিস্টোর করার জন্য আপনার কাছে একটি সোর্স ডিভাইস ও একটি টার্গেট ডিভাইস থাকতে হবে। এই দুটি ডিভাইসের মধ্যে ডেটা ট্রান্সফার করা হবে।
ব্যাক-আপ নেওয়ার জন্য সোর্স ডিভাইসে Android 6 (API 23) বা তার পরবর্তী যেকোনও ভার্সন থাকতে হবে।
রিস্টোর করার ক্ষমতা পেতে Android 9 (API 29) বা তার পরবর্তী ভার্সনে চলা ডিভাইসকে টার্গেট করুন।
ডিভাইস থেকে ডিভাইসে রিস্টোর করার ফ্লো সম্পর্কে আরও জানতে, ডিভাইস থেকে ডিভাইসে রিস্টোর করার কাজ করে এমন ফ্লো দেখুন।
ক্লাউড ব্যাক-আপ ও রিস্টোর ফ্লো
ক্লাউড ব্যাক-আপ ও রিস্টোর করার জন্য একটি সোর্স ডিভাইস ও একটি টার্গেট ডিভাইস প্রয়োজন হবে।
ব্যাক-আপ নেওয়ার জন্য সোর্স ডিভাইসে Android 6 (API 23) বা তার পরবর্তী যেকোনও ভার্সন থাকতে হবে।
টার্গেট ডিভাইসগুলি তাদের বিক্রেতাদের উপর ভিত্তি করে কাজ করে। Pixel ডিভাইসে Android 9 (API 29) থেকে এই ফিচার ব্যবহার করা যাবে এবং অন্যান্য সব ডিভাইসে Android 12 (API 31) বা তার পরবর্তী ভার্সন থাকতে হবে।