स्टोर को ब्लॉक करें

कई उपयोगकर्ता नया Android डिवाइस सेट अप करते समय, अपने क्रेडेंशियल मैनेज करते हैं. यह मैन्युअल प्रोसेस चुनौती भरा हो सकता है और इसकी वजह से उपयोगकर्ता अनुभव खराब हो सकता है. ब्लॉक स्टोर एपीआई, Google Play सेवाओं की मदद से काम करने वाली लाइब्रेरी है. इसकी मदद से, ऐप्लिकेशन के लिए उपयोगकर्ता पासवर्ड सेव करने की यह प्रोसेस आसान बनाई जाती है. इसमें उपयोगकर्ता के पासवर्ड सेव करने की प्रोसेस में की गई समस्याओं या सुरक्षा से जुड़े जोखिम की संभावना नहीं होती.

Block Store API से आपका ऐप्लिकेशन, उपयोगकर्ता के क्रेडेंशियल सेव कर पाता है. बाद में, यह नए डिवाइस पर उपयोगकर्ताओं की दोबारा पुष्टि कर पाता है. इससे उपयोगकर्ताओं को ज़्यादा बेहतर अनुभव मिलता है, क्योंकि नए डिवाइस पर पहली बार ऐप्लिकेशन लॉन्च करते समय उन्हें साइन-इन स्क्रीन देखने की ज़रूरत नहीं होती है.

ब्लॉक स्टोर का इस्तेमाल करने के फ़ायदे:

  • डेवलपर के लिए, एन्क्रिप्ट (सुरक्षित) किए गए क्रेडेंशियल स्टोरेज की सुविधा. जब भी संभव हो, क्रेडेंशियल को पूरी तरह सुरक्षित (E2EE) किया जाता है.
  • उपयोगकर्ता नाम और पासवर्ड डालने के बजाय, टोकन सेव करें.
  • साइन इन फ़्लो से होने वाली समस्याएं दूर करें.
  • जटिल पासवर्ड के मैनेजमेंट की ज़िम्मेदारी से उपयोगकर्ताओं को बचाएं.
  • Google, उपयोगकर्ता की पहचान की पुष्टि करता है.

शुरू करने से पहले

अपना ऐप्लिकेशन तैयार करने के लिए, नीचे दिए गए सेक्शन में बताया गया तरीका अपनाएं.

अपने ऐप्लिकेशन को कॉन्फ़िगर करें

अपने प्रोजेक्ट-लेवल की build.gradle फ़ाइल में, buildscript और allprojects, दोनों सेक्शन में Google's Maven रिपॉज़िटरी शामिल करें:

buildscript {
  repositories {
    google()
    mavenCentral()
  }
}

allprojects {
  repositories {
    google()
    mavenCentral()
  }
}

Google Play सेवाएं को अपने मॉड्यूल और#39; Gradle बिल्ड फ़ाइल में ब्लॉक करें एपीआई का इस्तेमाल करें, जो आम तौर पर app/build.gradle होता है:

dependencies {
  implementation 'com.google.android.gms:play-services-auth-blockstore:16.1.0'
}

यह कैसे काम करता है

ब्लॉक स्टोर, टोकन पर आधारित साइन इन मैकेनिज़्म होता है. यह पूरी तरह सुरक्षित (E2EE) होता है. इसे बैक अप और रीस्टोर करने के इन्फ़्रास्ट्रक्चर के लिए बनाया जाता है. नीचे दिया गया तरीका इस बारे में बताता है कि ब्लॉक स्टोर का इस्तेमाल करने वाला ऐप्लिकेशन कैसे काम करेगा:

  1. अपने ऐप्लिकेशन की पुष्टि करने के दौरान या उसके बाद कभी भी, उपयोगकर्ता की पुष्टि करने वाले टोकन को 'स्टोर को ब्लॉक करें' पर सेव किया जा सकता है. ऐसा बाद में किया जा सकता है.
  2. इस टोकन को स्थानीय तौर पर सेव किया जाएगा और क्लाउड पर इसका बैक अप लिया जा सकता है.
  3. जब उपयोगकर्ता किसी नए डिवाइस पर डेटा वापस पाने की प्रक्रिया शुरू करता है, तब डेटा ट्रांसफ़र किया जाता है.
  4. अगर उपयोगकर्ता डेटा को वापस पाने की प्रोसेस के दौरान आपके ऐप्लिकेशन को पहले जैसा करता है, तो आपका ऐप्लिकेशन नए डिवाइस पर ब्लॉक स्टोर से सेव किए गए टोकन को वापस ला सकता है.

टोकन को सेव किया जा रहा है

जब कोई उपयोगकर्ता आपके ऐप्लिकेशन में साइन इन करता है, तब आप पुष्टि करने के लिए उस टोकन को सेव कर सकते हैं जिसे आपने उस उपयोगकर्ता के लिए ब्लॉक स्टोर में जनरेट किया है. ऐसा करने के लिए, StoreBytesData.Builder के इंस्टेंस पर setBytes() को कॉल किया जाता है और सोर्स डिवाइस पर उपयोगकर्ता के क्रेडेंशियल सेव किए जाते हैं. 'ब्लॉक स्टोर' की मदद से टोकन सेव करने के बाद, टोकन को एन्क्रिप्ट (सुरक्षित) करके, डिवाइस पर सेव किया जाता है.

नीचे दिए गए उदाहरण में, स्थानीय डिवाइस पर पुष्टि करने के टोकन को सेव करने का तरीका बताया गया है:

val client = Blockstore.getClient(this)
val data = StoreBytesData.Builder()
        .setBytes(/* BYTE_ARRAY */)
        .build()
client.storeBytes(data)
        .addOnSuccessListener{ result ->
            Log.d(TAG, "Stored: ${result} bytes")
        }
        .addOnFailureListener { e ->
            Log.e(TAG, “Failed to store bytes”, e)
        }

टोकन वापस लाया जा रहा है

बाद में, जब कोई उपयोगकर्ता किसी नए डिवाइस पर डेटा वापस पाने की प्रक्रिया से गुज़रता है, तो पहले Google Play सेवाएं, उपयोगकर्ता की पुष्टि करने के बाद आपके ब्लॉक स्टोर डेटा को वापस लेती हैं. उपयोगकर्ता आपके ऐप्लिकेशन के डेटा को पहले जैसा कर चुका है. इसलिए, उसे ट्रांसफ़र करने की अनुमति नहीं है. जब उपयोगकर्ता आपका ऐप्लिकेशन खोलता है, तब आप retrieveBytes() पर कॉल करके, ब्लॉक स्टोर से अपने टोकन का अनुरोध कर सकते हैं. उसके बाद, फिर से हासिल किए गए टोकन का इस्तेमाल किया जा सकता है, ताकि उपयोगकर्ता को नए डिवाइस पर साइन इन करने में मदद मिले.

नीचे दिए गए सैंपल में, एन्क्रिप्ट (सुरक्षित) किए गए उस टोकन को वापस पाने का तरीका बताया गया है जिसे पहले 'ब्लॉक स्टोर' की मदद से सेव किया गया था:

val client = Blockstore.getClient(this)
client.retrieveBytes()
            .addOnSuccessListener { result ->
                Log.d(TAG, "Retrieved: ${String(result)}")
            }
            .addOnFailureListener { e ->
                Log.e(TAG, "Failed to retrieve bytes", e)
            }
}

पूरी तरह सुरक्षित (E2EE) करना

कॉल को पूरी तरह सुरक्षित (E2EE) करने के लिए, यह ज़रूरी है कि डिवाइस Android 9 या उसके बाद वाले वर्शन पर चल रहा हो. साथ ही, यह भी ज़रूरी है कि उपयोगकर्ता ने अपने डिवाइस के लिए स्क्रीन लॉक (पिन, पैटर्न या पासवर्ड) सेट किया हो. isEndToEndEncryptionAvailable() पर कॉल करके यह पुष्टि की जा सकती है कि डिवाइस पर एन्क्रिप्ट (सुरक्षित) करने की सुविधा उपलब्ध होगी या नहीं.

नीचे दिए गए नमूने में इस बात की पुष्टि करने का तरीका बताया गया है कि क्लाउड बैक अप के दौरान एन्क्रिप्शन की सुविधा उपलब्ध होगी या नहीं:

client.isEndToEndEncryptionAvailable()
        .addOnSuccessListener { result ->
          Log.d(TAG, "Will Block Store cloud backup be end-to-end encrypted? $result")
        }

क्लाउड बैक अप की सुविधा चालू करें

क्लाउड बैक अप चालू करने के लिए, अपने StoreBytesData ऑब्जेक्ट के लिए setShouldBackupToCloud() तरीका जोड़ें. जब setShouldBackupToCloud() को 'सही' के तौर पर सेट किया जाएगा, तब 'ब्लॉक स्टोर' सुविधा सेव की गई बाइट की क्लाउड का बैक अप समय-समय पर लेगी.

नीचे दिए गए नमूने में, क्लाउड पर बैक अप को चालू करने का तरीका सिर्फ़ तब बताया गया है, जब क्लाउड बैक अप को पूरी तरह सुरक्षित (E2EE) किया गया हो:

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 > बैक अप पर जाकर चुना जा सकता है), तो 'ब्लॉक स्टोर' डेटा ऐप्लिकेशन को अनइंस्टॉल/फिर से इंस्टॉल करने पर बना रहेगा.

इसकी जांच करने के लिए, यह तरीका अपनाएं:

  1. BlockStore API को अपने टेस्ट ऐप्लिकेशन के साथ इंटिग्रेट करें.
  2. अपना डेटा सेव करने के लिए, BlockStore एपीआई को शुरू करने के लिए टेस्ट ऐप्लिकेशन का इस्तेमाल करें.
  3. अपने टेस्ट ऐप्लिकेशन को अनइंस्टॉल करें और फिर उसी डिवाइस पर उसे फिर से इंस्टॉल करें.
  4. अपना डेटा वापस पाने के लिए, BlockStore एपीआई को शुरू करने के लिए टेस्ट ऐप्लिकेशन का इस्तेमाल करें.
  5. पुष्टि करें कि वापस पाए गए बाइट वही हैं जो अनइंस्टॉल करने से पहले सेव किए गए थे.

डिवाइस-से-डिवाइस

ज़्यादातर मामलों में, टारगेट डिवाइस में फ़ैक्ट्री रीसेट करने की ज़रूरत पड़ेगी. इसके बाद, आप Android वायरलेस डेटा वापस पाने की प्रक्रिया या Google केबल को पहले जैसा करने की सुविधा डालें (ऐसे डिवाइसों के लिए जिन पर यह सुविधा काम करती है).

क्लाउड रीस्टोर करें

  1. ब्लॉकस्टोर एपीआई को अपने टेस्ट ऐप्लिकेशन से जोड़ें. जांच वाले ऐप्लिकेशन को Play Store में सबमिट करना होगा.
  2. सोर्स डिवाइस पर, Blockstore API को शुरू करने के लिए, टेस्ट ऐप्लिकेशन का इस्तेमाल करें. इससे, आपका डेटा सेव रहेगा. साथ ही, BackUpToCloud को 'सही है' पर सेट किया जाना चाहिए.
  3. O और इसके बाद के वर्शन वाले डिवाइसों के लिए, आप मैन्युअल तरीके से 'ब्लॉक स्टोर' का क्लाउड बैक अप ट्रिगर कर सकते हैं: सेटिंग > Google > बैक अप पर जाएं और “अभी बैक अप लें” बटन पर क्लिक करें.
    1. 'स्टोर स्टोर' का क्लाउड बैक अप पूरा हो गया है, इसकी पुष्टि करने के लिए:
      1. बैक अप पूरा होने के बाद, “CloudSyncBpTkSvc” टैग वाली लॉग लाइन खोजें.
      2. आपको इस तरह की लाइनें दिखनी चाहिए: “......, CloudSyncBpTkSvc: Sync result: SUCCESS, ..., अपलोड किया गया साइज़: XXX बाइट ...”
    2. ब्लॉक स्टोर क्लाउड बैक अप के बाद, आपको 5 मिनट के लिए “ठंडा करने का समय” दिखेगा. उन 5 मिनट के अंदर, “अभी बैक अप लें” बटन पर क्लिक करने से, Cloud Store का दूसरा बैक अप ट्रिगर नहीं होगा.
  4. टारगेट डिवाइस को फ़ैक्ट्री रीसेट करें और क्लाउड रीस्टोर फ़्लो पर जाएं. बहाल करने की प्रक्रिया के दौरान अपने ऐप्लिकेशन को पहले जैसा करने के लिए चुनें. क्लाउड वापस लाने के फ़्लो के बारे में ज़्यादा जानकारी के लिए, क्लाउड रीस्टोर करने की सुविधा वाले फ़्लो देखें.
  5. टारगेट डिवाइस पर, अपना डेटा वापस पाने के लिए, Blockstore एपीआई को शुरू करने के लिए टेस्ट ऐप्लिकेशन का इस्तेमाल करें.
  6. पुष्टि करें कि वापस पाई गई बाइट वही हैं जो सोर्स डिवाइस में स्टोर की गई थीं.

डिवाइस से जुड़ी ज़रूरी शर्तें

एन्क्रिप्ट (सुरक्षित) करने की प्रक्रिया बंद करें

  • 'पूरी तरह सुरक्षित (E2EE)' सुविधा, Android 9 (एपीआई 29) और उसके बाद के वर्शन वाले डिवाइसों पर काम करती है.
  • डिवाइस में पिन, पैटर्न या पासवर्ड वाला स्क्रीन लॉक सेट होना चाहिए, ताकि पूरी तरह से एन्क्रिप्ट (सुरक्षित) करने का तरीका चालू हो और उपयोगकर्ता के डेटा को सही तरीके से एन्क्रिप्ट किया जा सके.

डिवाइस बहाल करने का फ़्लो

डिवाइस को पहले जैसा करने के लिए, आपके पास एक सोर्स डिवाइस और टारगेट डिवाइस होना चाहिए. ये दोनों डिवाइस डेटा ट्रांसफ़र करेंगे.

बैक अप लेने के लिए, सोर्स के डिवाइसों पर Android 6 (एपीआई 23) और उसके बाद का वर्शन होना चाहिए.

Android 9 (एपीआई 29) और उसके बाद के वर्शन वाले डिवाइसों को टारगेट करें, ताकि आप उन्हें वापस ला सकें.

डिवाइस को वापस पाने के तरीके के बारे में ज़्यादा जानकारी यहां मिल सकती है.

क्लाउड बैक अप और रीस्टोर फ़्लो

क्लाउड बैक अप और वापस लाने के लिए, स्रोत डिवाइस और टारगेट डिवाइस की ज़रूरत होगी.

बैक अप लेने के लिए, सोर्स के डिवाइसों पर Android 6 (एपीआई 23) और उसके बाद का वर्शन होना चाहिए.

टारगेट डिवाइस, वेंडर के हिसाब से काम करते हैं. Pixel डिवाइस में, Android 9 (एपीआई 29) और इस सुविधा के दूसरे सभी वर्शन पर, इस सुविधा का इस्तेमाल किया जा सकता है. इसके अलावा, बाकी सभी डिवाइसों पर Android 12 (एपीआई 31) या इसके बाद का वर्शन होना चाहिए.