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

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

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

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

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

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

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

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

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

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

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

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

Google Play services को, आपकी मॉड्यूल की 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 services सबसे पहले उपयोगकर्ता की पुष्टि करता है, फिर आपके ब्लॉक स्टोर डेटा को वापस लाता है. उपयोगकर्ता ने डेटा इंपोर्ट करने की प्रोसेस के तहत, पहले से ही आपके ऐप्लिकेशन के डेटा को वापस लाने की सहमति दी है. इसलिए, अलग से कोई सहमति नहीं लेनी होगी. जब उपयोगकर्ता आपका ऐप्लिकेशन खोलता है, तो ब्लॉक करने के लिए 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. अपने App Store के लिए, BlockStore एपीआई को इंटिग्रेट करें.
  2. अपना डेटा सेव करने के लिए, BlockStore एपीआई शुरू करने के लिए, टेस्ट ऐप्लिकेशन का इस्तेमाल करें.
  3. जांच वाला ऐप्लिकेशन अनइंस्टॉल करें और फिर उसी डिवाइस पर अपना ऐप्लिकेशन फिर से इंस्टॉल करें.
  4. अपना डेटा फिर से पाने के लिए, BlockStore एपीआई को शुरू करने के लिए, टेस्ट ऐप्लिकेशन का इस्तेमाल करें.
  5. पुष्टि करें कि हटाए गए बाइट वही हैं जो अनइंस्टॉल करने से पहले स्टोर किए गए थे.

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

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

क्लाउड पर वापस लाएं

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

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

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

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

एक से दूसरे डिवाइस पर डेटा इंपोर्ट करने की प्रोसेस

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

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

Android 9 (एपीआई 29) और उसके बाद के वर्शन वाले उन डिवाइसों को टारगेट करने के लिए जिन्हें वापस लाने की सुविधा मौजूद है.

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

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

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

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

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