फायरबेस इंस्टॉलेशन प्रबंधित करें

फायरबेस इंस्टॉलेशन सेवा (एफआईएस) फायरबेस ऐप के प्रत्येक इंस्टॉल किए गए इंस्टेंस के लिए एक फायरबेस इंस्टॉलेशन आईडी (एफआईडी) प्रदान करती है। फ़ायरबेस इंस्टॉलेशन आईडी का उपयोग इन फ़ायरबेस सेवाओं द्वारा आंतरिक रूप से किया जाता है:

फायरबेस सेवा फायरबेस इंस्टॉलेशन कार्यक्षमता
फायरबेस क्लाउड मैसेजिंग

फायरबेस क्लाउड मैसेजिंग संदेश वितरण के लिए उपकरणों को लक्षित करने के लिए फायरबेस इंस्टॉलेशन आईडी का उपयोग करता है।

फायरबेस क्रैशलाइटिक्स

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

फायरबेस इन-ऐप मैसेजिंग

फायरबेस इन-ऐप मैसेजिंग संदेश वितरण के लिए उपकरणों को लक्षित करने के लिए फायरबेस इंस्टॉलेशन आईडी का उपयोग करता है।

फायरबेस प्रदर्शन निगरानी

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

फायरबेस रिमोट कॉन्फ़िगरेशन

रिमोट कॉन्फिग एंड-यूज़र डिवाइस पर लौटने के लिए कॉन्फ़िगरेशन मानों का चयन करने के लिए फायरबेस इंस्टॉलेशन आईडी का उपयोग करता है।

फायरबेस एमएल

इंस्टॉलेशन ऑथ टोकन नामक क्रेडेंशियल का उपयोग फायरबेस एमएल द्वारा ऐप इंस्टेंस के साथ इंटरैक्ट करते समय डिवाइस प्रमाणीकरण के लिए किया जाता है, उदाहरण के लिए, ऐप इंस्टेंस पर डेवलपर मॉडल वितरित करने के लिए।

फायरबेस उपयोगकर्ता विभाजन भंडारण

फायरबेस यूजर सेगमेंटेशन स्टोरेज फायरबेस इंस्टॉलेशन आईडी और संबंधित विशेषताओं और सेगमेंट को अन्य फायरबेस सेवाओं को लक्ष्यीकरण जानकारी प्रदान करने के लिए संग्रहीत करता है जो उनका उपयोग करते हैं।

आमतौर पर, फायरबेस सेवाएं डेवलपर्स को एफआईएस एपीआई के साथ सीधे इंटरैक्ट करने की आवश्यकता के बिना फायरबेस इंस्टॉलेशन सेवा का उपयोग करती हैं। हालाँकि, ऐसे मामले हैं जहां ऐप डेवलपर सीधे FIS API को कॉल करना चाह सकते हैं, जैसे:

  • फ़ायरबेस इंस्टॉलेशन और इंस्टॉलेशन से जुड़े डेटा को हटाने के लिए।
  • विशिष्ट ऐप इंस्टॉलेशन को लक्षित करने के लिए पहचानकर्ताओं (फ़ायरबेस इंस्टॉलेशन आईडी) को पुनः प्राप्त करना।
  • फायरबेस इंस्टॉलेशन को प्रमाणित करने के लिए इंस्टॉलेशन ऑथ टोकन पुनः प्राप्त करने के लिए।

FIS API को सीधे कॉल करने की शुरुआत करने के लिए, अपने ऐप में SDK जोड़ें।

अपने ऐप में फायरबेस इंस्टॉलेशन एसडीके जोड़ें

आईओएस+

  1. अपने पॉडफाइल में फायरबेस इंस्टॉलेशन के लिए निर्भरता जोड़ें:
    pod 'FirebaseInstallations'
  2. pod install चलाएँ और बनाई गई .xcworkspace फ़ाइल खोलें।
  3. अपने UIApplicationDelegate में FirebaseCore मॉड्यूल को आयात करें, साथ ही आपके ऐप प्रतिनिधि द्वारा उपयोग किए जाने वाले किसी भी अन्य Firebase मॉड्यूल को आयात करें। उदाहरण के लिए, क्लाउड फायरस्टोर और प्रमाणीकरण का उपयोग करने के लिए:

    स्विफ्टयूआई

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    तीव्र

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    उद्देश्य सी

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  4. अपने ऐप प्रतिनिधि के application(_:didFinishLaunchingWithOptions:) विधि में FirebaseApp साझा किए गए इंस्टेंस को कॉन्फ़िगर करें:

    स्विफ्टयूआई

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    तीव्र

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    उद्देश्य सी

    // Use Firebase library to configure APIs
    [FIRApp configure];
  5. यदि आप स्विफ्टयूआई का उपयोग कर रहे हैं, तो आपको एक एप्लिकेशन प्रतिनिधि बनाना होगा और इसे UIApplicationDelegateAdaptor या NSApplicationDelegateAdaptor के माध्यम से अपने App स्ट्रक्चर में संलग्न करना होगा। आपको ऐप डेलीगेट स्विज़लिंग को भी अक्षम करना होगा। अधिक जानकारी के लिए स्विफ्टयूआई निर्देश देखें।

    स्विफ्टयूआई

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          

एंड्रॉयड

अपने मॉड्यूल (ऐप-स्तर) ग्रैडल फ़ाइल (आमतौर पर app/build.gradle ) में फायरबेस इंस्टॉलेशन एंड्रॉइड एसडीके के लिए निर्भरता जोड़ें:

implementation 'com.google.firebase:firebase-installations:17.2.0'

जावास्क्रिप्ट

आपका वेब एप्लिकेशन कैसे होस्ट किया गया है, इसके आधार पर, आपका कॉन्फ़िगरेशन स्वचालित रूप से प्रबंधित किया जा सकता है या आपको अपने फ़ायरबेस कॉन्फ़िगरेशन ऑब्जेक्ट को अपडेट करने की आवश्यकता हो सकती है।

उदाहरण के लिए, यदि आपकी निर्भरताएँ Index.html में जोड़ी गई हैं, तो निर्भरता को <head> तत्व में जोड़ें:

<script src="/__/firebase/10.9.0/firebase-installations.js"></script>

स्पंदन

  1. अपने फ़्लटर प्रोजेक्ट की रूट निर्देशिका से, फ़ायरबेस इंस्टॉलेशन प्लगइन स्थापित करने के लिए निम्न कमांड चलाएँ:

    flutter pub add firebase_app_installations
    
  2. अपने प्रोजेक्ट का पुनर्निर्माण करें:

    flutter run
    
  3. फायरबेस इंस्टॉलेशन प्लगइन आयात करें:

    import 'package:firebase_app_installations/firebase_app_installations.dart';
    

फ़ायरबेस इंस्टॉलेशन हटाएँ

फायरबेस इंस्टॉलेशन से जुड़ा डेटा आम तौर पर व्यक्तिगत रूप से पहचान योग्य नहीं होता है। फिर भी, उपयोगकर्ताओं को इस डेटा को प्रबंधित करने और हटाने का विकल्प देना मददगार हो सकता है।

प्रत्येक एप्लिकेशन के प्रत्येक इंस्टॉलेशन के लिए फायरबेस इंस्टॉलेशन आईडी अलग-अलग होती हैं; एक ही डिवाइस पर अलग-अलग एप्लिकेशन में अलग-अलग फायरबेस इंस्टॉलेशन आईडी होती हैं। फायरबेस इंस्टॉलेशन आईडी ऐप इंस्टॉलेशन और उन ऐप इंस्टॉलेशन से जुड़े डेटा की पहचान करती है।

जब आप किसी इंस्टॉलेशन आईडी को हटाते हैं, तो उस इंस्टॉलेशन आईडी से जुड़ा डेटा उन सभी फायरबेस सेवाओं के लाइव और बैकअप सिस्टम से हटा दिया जाता है जो 180 दिनों के भीतर इंस्टॉलेशन की पहचान करने के लिए फायरबेस इंस्टॉलेशन आईडी का उपयोग करते हैं। इस प्रक्रिया को हटाने और बनाए रखने पर Google के कथन में उच्च स्तर पर वर्णित किया गया है।

जब तक आप अपने ऐप में सभी FID-जनरेटिंग सेवाओं को अक्षम नहीं करते, FIS कुछ दिनों के भीतर एक नई आईडी बनाता है। फायरबेस नव-निर्मित आईडी को एक नया फायरबेस इंस्टॉलेशन मानता है, और इसे किसी भी तरह से पिछली आईडी या डेटा से संबद्ध नहीं करता है।

क्लाइंट API कॉल से FID हटाएँ

फायरबेस सेवाओं द्वारा उत्पन्न एफआईडी को हटाने के लिए, फायरबेस इंस्टॉलेशन एसडीके से उचित विधि को कॉल करें:

तीव्र

do {
  try await Installations.installations().delete()
  print("Installation deleted");
} catch {
  print("Error deleting installation: \(error)")
}

उद्देश्य सी

[[FIRInstallations installations] deleteWithCompletion:^(NSError *error) {
   if (error != nil) {
     NSLog(@"Error deleting Installation %@", error);
     return;
   }
   NSLog(@"Installation deleted");
}];

Java

FirebaseInstallations.getInstance().delete()
        .addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
        if (task.isSuccessful()) {
            Log.d("Installations", "Installation deleted");
        } else {
            Log.e("Installations", "Unable to delete Installation");
        }
    }
});

Kotlin+KTX

FirebaseInstallations.getInstance().delete().addOnCompleteListener { task ->
    if (task.isComplete) {
        Log.d("Installations", "Installation deleted")
    } else {
        Log.e("Installations", "Unable to delete Installation")
    }
}

जावास्क्रिप्ट

await firebase.installations().delete();

Dart

await FirebaseInstallations.instance.delete();

सर्वर एपीआई कॉल के साथ एक FID हटाएं

सर्वर एपीआई कॉल के साथ एक एफआईडी हटाने के लिए, यदि आपने पहले से नहीं किया है तो अपने सर्वर पर फायरबेस एडमिन एसडीके जोड़ें

एक बार एसडीके जोड़ने के बाद, अपनी पसंद की भाषा में डिलीट फ़ंक्शन पर कॉल के माध्यम से एफआईडी हटाएं (नोट: नोड.जेएस को छोड़कर, ये विधियां इंस्टेंस आईडी नामकरण को प्रतिबिंबित करती हैं। हालांकि, किसी भी मौजूदा फायरबेस के साथ कॉल करने पर वे सभी वास्तव में एफआईडी हटा देते हैं) एसडीके)।

नोड.जे.एस

// An FIDsent from a client service SDK
const idToDelete = 'eyJhbGciOiJFUzI1N_iIs5';

admin.installations().deleteInstallation(idToDelete);

Java

// An FID sent from a client service SDK
String idToDelete = "eyJhbGciOiJFUzI1N_iIs5";

FirebaseInstanceId.getInstance().deleteInstanceIdAsync(idToDelete).get();

अजगर

  from firebase_admin import instance_id

  # An FID sent from a client service SDK
  id_to_delete = 'eyJhbGciOiJFUzI1N_iIs5'

  instance_id.delete_instance_id(id_to_delete)

जाना

client, err := app.InstanceId(ctx)
if err != nil {
  log.Fatalln("error initializing client", err)
}

iidToDelete := "eyJhbGciOiJFUzI1N_iIs5"
if err := client.DeleteInstanceId(ctx, iidToDelete); err != nil {
  log.Fatalln("error deleting FID", err)
}

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

यदि आप वर्तमान फायरबेस इंस्टॉलेशन आईडी को हटाना चाहते हैं और तुरंत एक नई, असंबंधित आईडी के साथ फायरबेस सेवाओं का उपयोग करना चाहते हैं, तो हटाने को संभालने के लिए क्लाइंट एपीआई का उपयोग करें।

ग्राहक पहचानकर्ता पुनः प्राप्त करें

यदि आपको अपने ऐप के विशेष इंस्टॉलेशन की पहचान करने की आवश्यकता है, तो आप फायरबेस इंस्टॉलेशन आईडी को पुनः प्राप्त करके ऐसा कर सकते हैं। उदाहरण के लिए, BiqQuery आयात के लिए ऐप इंस्टॉल के सेगमेंट बनाने के लिए, या फायरबेस इन-ऐप मैसेजिंग डेवलपमेंट के दौरान परीक्षण करने के लिए, आप संबंधित फायरबेस इंस्टॉलेशन आईडी का उपयोग करके सही डिवाइस की पहचान और लक्ष्य कर सकते हैं।

फ़ायरबेस इंस्टॉलेशन आईडी पुनः प्राप्त करने के लिए:

तीव्र

do {
  let id = try await Installations.installations().installationID()
  print("Installation ID: \(id)")
} catch {
  print("Error fetching id: \(error)")
}

उद्देश्य सी

[[FIRInstallations installations] installationIDWithCompletion:^(NSString *identifier, NSError *error) {
  if (error != nil) {
    NSLog(@"Error fetching Installation ID %@", error);
    return;
  }
  NSLog(@"Installation ID: %@", identifier);
}];

Java

FirebaseInstallations.getInstance().getId()
        .addOnCompleteListener(new OnCompleteListener<String>() {
    @Override
    public void onComplete(@NonNull Task<String> task) {
        if (task.isSuccessful()) {
            Log.d("Installations", "Installation ID: " + task.getResult());
        } else {
            Log.e("Installations", "Unable to get Installation ID");
        }
    }
});

Kotlin+KTX

FirebaseInstallations.getInstance().id.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        Log.d("Installations", "Installation ID: " + task.result)
    } else {
        Log.e("Installations", "Unable to get Installation ID")
    }
}

जावास्क्रिप्ट

const installationId = await firebase.installations().getId();
console.log(installationId);

Dart

String id = await FirebaseInstallations.instance.getId();

इंस्टॉलेशन ऑथ टोकन पुनर्प्राप्त करें

फायरबेस सेवाएं एफआईएस से प्राप्त प्रमाणीकरण टोकन के साथ फायरबेस इंस्टॉलेशन को प्रमाणित कर सकती हैं। उदाहरण के लिए, रिमोट कॉन्फ़िगरेशन के लिए ए/बी परीक्षण डिज़ाइन करते समय, आप इंस्टॉलेशन ऑथ टोकन का उपयोग करके लक्षित परीक्षण डिवाइस को प्रमाणित कर सकते हैं।

एक इंस्टॉलेशन ऑथ टोकन JSON वेब टोकन (JWT) प्रारूप में एक अल्पकालिक वाहक टोकन है जिसमें इंस्टॉलेशन के लिए निम्नलिखित जानकारी होती है:

  • फायरबेस इंस्टॉलेशन आईडी
  • संबंधित प्रोजेक्ट ( projectNumber )
  • संबद्ध फायरबेस एप्लिकेशन आईडी ( appId )
  • टोकन की समाप्ति तिथि

एक इंस्टॉलेशन ऑथ टोकन को रद्द नहीं किया जा सकता है, और इसकी समाप्ति तिथि तक वैध रहता है। डिफ़ॉल्ट टोकन जीवनकाल एक सप्ताह है।

इंस्टालेशन ऑथ टोकन पुनः प्राप्त करने के लिए:

तीव्र

do {
  let result = try await Installations.installations()
    .authTokenForcingRefresh(true)
  print("Installation auth token: \(result.authToken)")
} catch {
  print("Error fetching token: \(error)")
}

उद्देश्य सी

[[FIRInstallations installations] authTokenForcingRefresh:true
                                               completion:^(FIRInstallationsAuthTokenResult *result, NSError *error) {
  if (error != nil) {
    NSLog(@"Error fetching Installation token %@", error);
    return;
  }
  NSLog(@"Installation auth token: %@", [result authToken]);
}];

Java

FirebaseInstallations.getInstance().getToken(/* forceRefresh */true)
        .addOnCompleteListener(new OnCompleteListener<InstallationTokenResult>() {
    @Override
    public void onComplete(@NonNull Task<InstallationTokenResult> task) {
        if (task.isSuccessful() && task.getResult() != null) {
            Log.d("Installations", "Installation auth token: " + task.getResult().getToken());
        } else {
            Log.e("Installations", "Unable to get Installation auth token");
        }
    }
});

Kotlin+KTX

val forceRefresh = true
FirebaseInstallations.getInstance().getToken(forceRefresh)
    .addOnCompleteListener { task ->
        if (task.isSuccessful) {
            Log.d("Installations", "Installation auth token: " + task.result?.token)
        } else {
            Log.e("Installations", "Unable to get Installation auth token")
        }
    }

जावास्क्रिप्ट

const installationToken = await firebase.installations()
    .getToken(/* forceRefresh */ true);
console.log(installationToken);

Dart

String token = await FirebaseInstallations.instance.getToken();

फायरबेस इंस्टॉलेशन आईडी जीवनचक्र की निगरानी करें

किसी ऐप के सामान्य संचालन के दौरान, फायरबेस इंस्टॉलेशन आईडी (एफआईडी) को विशेष निगरानी की आवश्यकता नहीं होती है। हालाँकि, जो ऐप्स स्पष्ट रूप से FID को पुनः प्राप्त करते हैं और उनका उपयोग करते हैं, उन्हें FID के संभावित विलोपन या रोटेशन की निगरानी के लिए तर्क जोड़ना चाहिए। यहां कुछ मामले हैं जहां एफआईडी को हटाया या घुमाया जा सकता है:

  • उदाहरण के लिए, ऐप को अनइंस्टॉल करना या पुनः इंस्टॉल करना, जब कोई अंतिम उपयोगकर्ता किसी नए डिवाइस पर इंस्टॉल करता है।
  • अंतिम उपयोगकर्ता ऐप या डिवाइस का कैश साफ़ करता है।
  • ऐप निष्क्रियता के कारण बैकएंड में FID विलोपन शुरू हो जाता है (वर्तमान में इसके लिए सीमा निष्क्रियता के 270 दिन है)।

जब ऐप्स इस प्रकार के मामलों में FID रोटेशन या विलोपन का अनुभव करते हैं, तो उन्हें एक नया FID सौंपा जाता है। इसके अलावा, हटाए गए एफआईडी से जुड़े इंस्टॉलेशन ऑथ टोकन को उसकी परिपक्वता की परवाह किए बिना हटा दिया जाता है, और एक नए इंस्टॉलेशन ऑथ टोकन के साथ बदल दिया जाता है।

ऐप्स इन परिवर्तनों की निगरानी कर सकते हैं और तदनुसार प्रतिक्रिया दे सकते हैं।

FID रोटेशन की निगरानी करने के लिए:

तीव्र

installationIDObserver = NotificationCenter.default.addObserver(
        forName: .InstallationIDDidChange,
        object: nil,
        queue: nil
) { (notification) in
  // Fetch new Installation ID
  Task {
    await self.fetchInstallationToken()
  }
}

उद्देश्य सी

__weak __auto_type weakSelf = self;
self.installationIDObserver = [[NSNotificationCenter defaultCenter]
        addObserverForName: FIRInstallationIDDidChangeNotification
                    object:nil
                     queue:nil
                usingBlock:^(NSNotification * _Nonnull notification) {
    // Fetch new Installation ID
    [weakSelf fetchInstallationsID];
}];

जब भी कोई नया FID असाइन किया जाता है, तो NSNotificationName.InstallationIDDidChange नामक NSNotification को डिफ़ॉल्ट NSNotificationCenter पर पोस्ट किया जाता है।

एंड्रॉयड

कोटलिन और जावा क्लाइंट को नई एफआईडी प्राप्त करने के लिए विफल कॉल पर प्रतिक्रिया देने के लिए पुनः प्रयास तर्क जोड़ना चाहिए।

जावास्क्रिप्ट

वेब ऐप्स onIdChange हुक की सदस्यता ले सकते हैं।

जब भी कोई नई FID बनाई जाती है, तो सब्सक्राइब्ड कॉलबैक ट्रिगर हो जाता है:

await firebase.installations().onIdChange((newId) => {
  console.log(newId);
  // TODO: Handle new installation ID.
});

Dart

FirebaseInstallations.instance.onIdChange.listen((token) {
  print('FID token: $token');
});

इंस्टेंस आईडी से फायरबेस इंस्टॉलेशन पर माइग्रेट करें

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

आपके ऐप के आधार पर माइग्रेशन प्रक्रिया अलग है:

  • जो ऐप्स सीधे इंस्टेंस आईडी एपीआई को कॉल नहीं करते हैं वे अपने एसडीके संस्करणों को अपडेट करके माइग्रेट कर सकते हैं। अधिकांश फ़ायरबेस ऐप्स इसी श्रेणी में आते हैं।

  • जो ऐप्स स्पष्ट रूप से इंस्टेंस आईडी पर एपीआई कॉल करते हैं, उन्हें एसडीके संस्करणों को अपडेट करना होगा और इंस्टेंस आईडी तरीकों को अपने फायरबेस इंस्टॉलेशन या एफसीएम समकक्षों के साथ बदलने के लिए कोड परिवर्तन करना होगा । यदि आपका ऐप एफसीएम पंजीकरण टोकन पुनर्प्राप्त करने के लिए इंस्टेंस आईडी का उपयोग करता है या ऐप इंस्टेंस को लक्षित करने या किसी अन्य उद्देश्य के लिए स्पष्ट रूप से इंस्टेंस आईडी का उपयोग करता है, तो आपको अपना एप्लिकेशन कोड अपडेट करना होगा।

वर्तमान में, FIS लीगेसी पहचानकर्ता फायरबेस इंस्टेंस आईडी के साथ बैकवर्ड-संगत है। IID को हटाना इन Firebase SDKs के साथ डेटा हटाने का अनुरोध करने का एक वैकल्पिक तरीका है:

  • आईओएस 6.14.0 और उससे नीचे
  • 27 फरवरी, 2020 से पहले के Android SDK

इसका मतलब यह है कि ऐप्स को फायरबेस इंस्टॉलेशन में माइग्रेट करने की आवश्यकता नहीं है; हालाँकि, ऐसा करना अत्यधिक अनुशंसित है।

फायरबेस इंस्टॉलेशन के लिए न्यूनतम एसडीके संस्करणों में अपग्रेड करना

इंस्टेंस आईडी से फायरबेस इंस्टॉलेशन में माइग्रेट करने के लिए, सुनिश्चित करें कि आपके एप्लिकेशन निम्नलिखित फायरबेस एसडीके के कम से कम सूचीबद्ध न्यूनतम संस्करण संख्याओं का उपयोग करते हैं:

फायरबेस एसडीके न्यूनतम Android संस्करण न्यूनतम iOS संस्करण
फायरबेस क्लाउड मैसेजिंग v20.3.0 v6.34.0
रिमोट कॉन्फिग v19.2.0 v6.24.0
फायरबेस के लिए Google Analytics \ (मापन एसडीके) v17.4.4 v6.18.0
इन-ऐप मैसेजिंग v19.0.7 v6.24.0
निष्पादन की निगरानी v19.0.8 v6.21.0
क्रैशलिटिक्स v17.2.1 v6.23.0
एमएल किट v22.1.2 v6.28.0

कोड को अपडेट करना जो स्पष्ट रूप से इंस्टेंस आईडी एपीआई को कॉल करता है

यदि आपका एंड्रॉइड या ऐप्पल ऐप सीधे इंस्टेंस आईडी एसडीके विधियों का उपयोग करता है, तो आप उस उपयोग को फायरबेस इंस्टॉलेशन एसडीके या एफसीएम एसडीके में समान विकल्पों के साथ बदल सकते हैं।

एक पहचानकर्ता पुनः प्राप्त किया जा रहा है

इंस्टेंस आईडी प्राप्त करने के तरीकों को इंस्टॉलेशन आईडी प्राप्त करने के तरीकों से बदल दिया जाता है। उदाहरण के लिए:

पहले

तीव्र

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching remote FCM registration token: \(error)")
  } else if let token = token {
    print("Remote instance ID token: \(token)")
    self.remoteFCMTokenMessage.text = "Remote FCM registration token: \(token)"
  }
}

उद्देश्य सी

[[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) {
   if (error != nil) {
     NSLog(@"Error fetching the remote FCM registration token: %@", error);
   } else {
     NSLog(@"Remote FCM registration token: %@", token);
     NSString* message =
       [NSString stringWithFormat:@"FCM registration token: %@", token];
     self.remoteFCMTokenMessage.text = message;
   }
 }];

Java

FirebaseInstanceId.getInstance().getInstanceId()
        .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                Log.d("IID_TOKEN", task.getResult().getToken());
            }
        });

Kotlin+KTX

FirebaseInstanceId.getInstance().instanceId
        .addOnSuccessListener { result ->
            Log.d("IID_TOKEN", result.token)
        }

बाद

तीव्र

do {
  let id = try await Installations.installations().installationID()
  print("Installation ID: \(id)")
} catch {
  print("Error fetching id: \(error)")
}

उद्देश्य सी

[[FIRInstallations installations] installationIDWithCompletion:^(NSString *identifier, NSError *error) {
  if (error != nil) {
    NSLog(@"Error fetching Installation ID %@", error);
    return;
  }
  NSLog(@"Installation ID: %@", identifier);
}];

Java

FirebaseInstallations.getInstance().getId()
        .addOnCompleteListener(new OnCompleteListener<String>() {
    @Override
    public void onComplete(@NonNull Task<String> task) {
        if (task.isSuccessful()) {
            Log.d("Installations", "Installation ID: " + task.getResult());
        } else {
            Log.e("Installations", "Unable to get Installation ID");
        }
    }
});

Kotlin+KTX

FirebaseInstallations.getInstance().id.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        Log.d("Installations", "Installation ID: " + task.result)
    } else {
        Log.e("Installations", "Unable to get Installation ID")
    }
}

एक पहचानकर्ता को हटाना

इंस्टेंस आईडी को हटाने के तरीकों को फायरबेस इंस्टॉलेशन आईडी को हटाने के तरीकों से बदल दिया गया है। उदाहरण के लिए:

पहले

तीव्र

InstanceID.instanceID().deleteID { error in
  if let error = error {
    print("Error deleting instance ID: \(error)")
  }
}

उद्देश्य सी

[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
  if error != nil {
    NSLog(@"Error deleting instance ID: %@", error);
  }
}];

एंड्रॉयड

FirebaseInstanceId.deleteInstanceId();

बाद

तीव्र

func delete(completion: @escaping (Error?) -> Void)

उद्देश्य सी

- (void)deleteWithCompletion:(nonnull void (^)(NSError *_Nullable))completion;

Java

FirebaseInstallations.getInstance().delete()
        .addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
        if (task.isSuccessful()) {
            Log.d("Installations", "Installation deleted");
        } else {
            Log.e("Installations", "Unable to delete Installation");
        }
    }
});

Kotlin+KTX

FirebaseInstallations.getInstance().delete().addOnCompleteListener { task ->
    if (task.isComplete) {
        Log.d("Installations", "Installation deleted")
    } else {
        Log.e("Installations", "Unable to delete Installation")
    }
}

एफसीएम पंजीकरण टोकन पुनः प्राप्त करना

फायरबेस इंस्टालेशन की शुरुआत से पहले, एफसीएम क्लाइंट इंस्टेंस आईडी से पंजीकरण टोकन प्राप्त करते थे। अब, एफसीएम एसडीके पंजीकरण टोकन पुनः प्राप्त करने के तरीके प्रदान करता है।

पहले

Java

FirebaseInstanceId.getInstance().getInstanceId()
        .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                if (!task.isSuccessful()) {
                    Log.w(TAG, "getInstanceId failed", task.getException());
                    return;
                }

                // Get new Instance ID token
                String token = task.getResult().getToken();

                // Log and toast
                String msg = getString(R.string.msg_token_fmt, token);
                Log.d(TAG, msg);
                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
            }
        });

Kotlin+KTX

FirebaseInstanceId.getInstance().instanceId
        .addOnCompleteListener(OnCompleteListener { task ->
            if (!task.isSuccessful) {
                Log.w(TAG, "getInstanceId failed", task.exception)
                return@OnCompleteListener
            }

            // Get new Instance ID token
            val token = task.result?.token

            // Log and toast
            val msg = getString(R.string.msg_token_fmt, token)
            Log.d(TAG, msg)
            Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
        })

तीव्र

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching remote FCM registration token: \(error)")
  } else if let token = token {
    print("Remote instance ID token: \(token)")
    self.remoteFCMTokenMessage.text = "Remote FCM registration token: \(token)"
  }
}

उद्देश्य सी

[[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) {
   if (error != nil) {
     NSLog(@"Error fetching the remote FCM registration token: %@", error);
   } else {
     NSLog(@"Remote FCM registration token: %@", token);
     NSString* message =
       [NSString stringWithFormat:@"FCM registration token: %@", token];
     self.remoteFCMTokenMessage.text = message;
   }
 }];

बाद

Java

FirebaseMessaging.getInstance().getToken()
    .addOnCompleteListener(new OnCompleteListener<String>() {
        @Override
        public void onComplete(@NonNull Task<String> task) {
          if (!task.isSuccessful()) {
            Log.w(TAG, "Fetching FCM registration token failed", task.getException());
            return;
          }

          // Get new FCM registration token
          String token = task.getResult();

          // Log and toast
          String msg = getString(R.string.msg_token_fmt, token);
          Log.d(TAG, msg);
          Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
        }
    });

Kotlin+KTX

FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
    if (!task.isSuccessful) {
        Log.w(TAG, "Fetching FCM registration token failed", task.exception)
        return@OnCompleteListener
    }

    // Get new FCM registration token
    val token = task.result

    // Log and toast
    val msg = getString(R.string.msg_token_fmt, token)
    Log.d(TAG, msg)
    Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
})

तीव्र

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching FCM registration token: \(error)")
  } else if let token = token {
    print("FCM registration token: \(token)")
    self.fcmRegTokenMessage.text  = "Remote FCM registration token: \(token)"
  }
}

उद्देश्य सी

[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) {
  if (error != nil) {
    NSLog(@"Error getting FCM registration token: %@", error);
  } else {
    NSLog(@"FCM registration token: %@", token);
    self.fcmRegTokenMessage.text = token;
  }
}];