Firebase इंस्टॉलेशन और आईडी मैनेज करना

Firebase इंस्टॉलेशन सर्विस (एफ़आईएस), Firebase ऐप्लिकेशन के हर इंस्टॉल किए गए इंस्टेंस के लिए, Firebase इंस्टॉलेशन आईडी (एफ़आईडी) उपलब्ध कराती है. Firebase इंस्टॉलेशन आईडी का इस्तेमाल, Firebase की ये सेवाएं अंदरूनी तौर पर करती हैं:

Firebase सेवा Firebase इंस्टॉल करने की सुविधा
Firebase Cloud Messaging

Firebase Cloud Messaging, मैसेज डिलीवर करने के लिए टारगेट डिवाइसों पर Firebase इंस्टॉलेशन आईडी का इस्तेमाल करता है.

Firebase Crashlytics

Firebase Crashlytics, ऐप्लिकेशन इंस्टेंस के Firebase इंस्टॉलेशन आईडी में हुए बदलावों के आधार पर, Crashlytics इंस्टॉलेशन यूयूआईडी को बदलता है. आने वाले समय में, इंस्टॉलेशन आईडी का इस्तेमाल ऐसी सुविधाएं चालू करने के लिए किया जा सकता है जिनसे क्रैश रिपोर्टिंग और क्रैश मैनेजमेंट की सेवाओं को बेहतर बनाया जा सके.

Firebase In-App Messaging

Firebase In-App Messaging, मैसेज डिलीवर करने के लिए टारगेट डिवाइसों पर Firebase इंस्टॉलेशन आईडी का इस्तेमाल करता है.

Firebase Performance Monitoring

Performance Monitoring, Firebase इंस्टॉलेशन आईडी का इस्तेमाल करता है, ताकि नेटवर्क के संसाधनों को ऐक्सेस करने वाले यूनीक Firebase इंस्टॉलेशन की संख्या का हिसाब लगाया जा सके. इससे यह पक्का किया जाता है कि ऐक्सेस पैटर्न की पहचान ज़ाहिर न हो. यह परफ़ॉर्मेंस इवेंट की रिपोर्टिंग की दर को मैनेज करने के लिए, Firebase Remote Config के साथ Firebase इंस्टॉलेशन आईडी का भी इस्तेमाल करता है.

Firebase Remote Config

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

Firebase ML

इंस्टॉलेशन के लिए पुष्टि करने वाले टोकन क्रेडेंशियल का इस्तेमाल, Firebase ML ऐप्लिकेशन के इंस्टेंस के साथ इंटरैक्ट करते समय डिवाइस की पुष्टि करने के लिए करता है. उदाहरण के लिए, ऐप्लिकेशन के इंस्टेंस में डेवलपर मॉडल उपलब्ध कराने के लिए.

Firebase User Segmentation Storage

Firebase यूज़र सेगमेंटेशन स्टोरेज, Firebase इंस्टॉलेशन आईडी और उनसे जुड़े एट्रिब्यूट और उपयोगकर्ताओं के ग्रुप को सेव करता है. इससे, Firebase की उन अन्य सेवाओं को टारगेटिंग की जानकारी मिलती है जो इनका इस्तेमाल करती हैं.

आम तौर पर, Firebase की सेवाएं Firebase इंस्टॉलेशन सेवा का इस्तेमाल करती हैं. इसके लिए, डेवलपर को एफ़आईएस एपीआई से सीधे इंटरैक्ट करने की ज़रूरत नहीं होती. हालांकि, कुछ मामलों में ऐप्लिकेशन डेवलपर, एफ़आईएस एपीआई को सीधे कॉल करना चाहते हैं. जैसे:

  • Firebase इंस्टॉलेशन और उससे जुड़े डेटा को मिटाने के लिए.
  • किसी खास ऐप्लिकेशन के इंस्टॉलेशन को टारगेट करने के लिए, आइडेंटिफ़ायर (Firebase इंस्टॉलेशन आईडी) को वापस पाना.
  • Firebase इंस्टॉलेशन की पुष्टि करने के लिए, इंस्टॉलेशन के ऑथराइज़ेशन टोकन को वापस पाना.

सीधे FIS API को कॉल करने के लिए, अपने ऐप्लिकेशन में SDK टूल जोड़ें.

अपने ऐप्लिकेशन में Firebase इंस्टॉलेशन एसडीके जोड़ें

iOS+

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

    SwiftUI

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

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  4. अपने ऐप्लिकेशन डेलिगेट के application(_:didFinishLaunchingWithOptions:) तरीके में, शेयर किया गया FirebaseApp इंस्टेंस कॉन्फ़िगर करें:

    SwiftUI

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

    Swift

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

    Objective-C

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

    SwiftUI

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

Android

अपने मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल (आम तौर पर app/build.gradle) में, Firebase इंस्टॉलेशन के Android SDK टूल के लिए डिपेंडेंसी जोड़ें:

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

JavaScript

आपका वेब ऐप्लिकेशन कैसे होस्ट किया गया है, इसके आधार पर आपका कॉन्फ़िगरेशन अपने-आप मैनेज हो सकता है या आपको अपना Firebase कॉन्फ़िगरेशन ऑब्जेक्ट अपडेट करना पड़ सकता है.

उदाहरण के लिए, अगर आपकी डिपेंडेंसी index.html में जोड़ी गई हैं, तो डिपेंडेंसी को <head> एलिमेंट में जोड़ें:

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

Flutter

  1. Firebase इंस्टॉलेशन प्लगिन को इंस्टॉल करने के लिए, अपने Flutter प्रोजेक्ट की रूट डायरेक्ट्री से यह कमांड चलाएं:

    flutter pub add firebase_app_installations
    
  2. अपना प्रोजेक्ट फिर से बनाएं:

    flutter run
    
  3. Firebase इंस्टॉलेशन प्लगिन इंपोर्ट करें:

    import 'package:firebase_app_installations/firebase_app_installations.dart';
    

Firebase का कोई इंस्टॉलेशन मिटाना

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

हर ऐप्लिकेशन के हर इंस्टॉलेशन के लिए, Firebase इंस्टॉलेशन आईडी अलग-अलग होते हैं. एक ही डिवाइस पर मौजूद अलग-अलग ऐप्लिकेशन के लिए, Firebase इंस्टॉलेशन आईडी अलग-अलग होते हैं. Firebase इंस्टॉलेशन आईडी से, ऐप्लिकेशन के इंस्टॉलेशन और उनसे जुड़े डेटा की पहचान की जाती है.

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

जब तक आपके ऐप्लिकेशन में एफ़आईडी जनरेट करने वाली सभी सेवाएं बंद नहीं की जातीं, तब तक एफ़आईएस कुछ दिनों में एक नया आईडी बना देता है. Firebase, नए आईडी को Firebase के नए इंस्टॉलेशन के तौर पर मानता है. साथ ही, इसे किसी भी तरह से पिछले आईडी या डेटा से नहीं जोड़ता.

क्लाइंट एपीआई कॉल की मदद से, एफ़आईडी मिटाना

Firebase की सेवाओं से जनरेट किए गए एफ़आईडी मिटाने के लिए, Firebase installations SDK से सही तरीका कॉल करें:

Swift

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

Objective-C

[[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

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

JavaScript

await firebase.installations().delete();

Dart

await FirebaseInstallations.instance.delete();

सर्वर एपीआई कॉल की मदद से एफ़आईडी मिटाना

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

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

Node.js

// 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();

Python

  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)
}

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

अगर आपको मौजूदा Firebase इंस्टॉलेशन आईडी को मिटाना है और तुरंत किसी नए आईडी के साथ Firebase की सेवाओं का इस्तेमाल करना है, तो मिटाने की प्रोसेस को मैनेज करने के लिए क्लाइंट एपीआई का इस्तेमाल करें.

क्लाइंट आइडेंटिफ़ायर वापस पाना

अगर आपको अपने ऐप्लिकेशन के किसी खास इंस्टॉलेशन की पहचान करनी है, तो Firebase इंस्टॉलेशन आईडी को वापस पाकर ऐसा किया जा सकता है. उदाहरण के लिए, BiqQuery इंपोर्ट के लिए ऐप्लिकेशन इंस्टॉल के सेगमेंट बनाने या Firebase In-App Messaging डेवलपमेंट के दौरान टेस्टिंग करने के लिए, सही डिवाइसों की पहचान की जा सकती है. साथ ही, उनसे जुड़े Firebase इंस्टॉलेशन आईडी का इस्तेमाल करके, उन्हें टारगेट किया जा सकता है.

Firebase इंस्टॉलेशन आईडी वापस पाने के लिए:

Swift

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

Objective-C

[[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

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

JavaScript

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

Dart

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

इंस्टॉलेशन के लिए पुष्टि करने वाले टोकन वापस पाना

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

इंस्टॉलेशन ऑथराइज़ेशन टोकन, JSON वेब टोकन (JWT) फ़ॉर्मैट में मौजूद एक ऐसा धारक टोकन होता है जो कुछ समय के लिए ही मान्य होता है. इसमें किसी इंस्टॉलेशन के लिए यह जानकारी शामिल होती है:

  • Firebase का इंस्टॉलेशन आईडी
  • इससे जुड़ा प्रोजेक्ट (projectNumber)
  • इससे जुड़ा Firebase ऐप्लिकेशन आईडी (appId)
  • टोकन की समयसीमा खत्म होने की तारीख

इंस्टॉलेशन के लिए पुष्टि करने वाले टोकन को रद्द नहीं किया जा सकता. यह टोकन, इसकी समयसीमा खत्म होने की तारीख तक मान्य रहता है. टोकन की डिफ़ॉल्ट समयसीमा एक हफ़्ता होती है.

इंस्टॉलेशन ऑथराइज़ेशन टोकन पाने के लिए:

Swift

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

Objective-C

[[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

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")
        }
    }

JavaScript

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

Dart

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

Firebase इंस्टॉलेशन आईडी की लाइफ़साइकल को मॉनिटर करना

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

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

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

ऐप्लिकेशन इन बदलावों पर नज़र रख सकते हैं और इनके हिसाब से जवाब दे सकते हैं.

एफ़आईडी रोटेशन पर नज़र रखने के लिए:

Swift

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

Objective-C

__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];
}];

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

Android

Kotlin और Java क्लाइंट को, नया एफ़आईडी वापस पाने के लिए, फ़ेल हो चुके कॉल का जवाब देने के लिए, फिर से कोशिश करने का लॉजिक जोड़ना चाहिए.

JavaScript

वेब ऐप्लिकेशन, onIdChange हुक की सदस्यता ले सकते हैं.

जब भी कोई नया एफ़आईडी बनाया जाता है, तो सदस्यता वाला कॉलबैक ट्रिगर होता है:

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

Dart

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

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

Firebase इंस्टॉलेशन की सुविधा शुरू होने से पहले, Firebase ऐप्लिकेशन इंस्टॉल के आइडेंटिफ़ायर के लिए, इंस्टेंस आईडी SDK टूल पर निर्भर था. Firebase इंस्टॉल करने पर, इंस्टेंस आईडी की तुलना में विश्वसनीयता, परफ़ॉर्मेंस, और सुरक्षा के मामले में काफ़ी फ़ायदे मिलते हैं. इंस्टेंस आईडी SDK टूल पर निर्भर Firebase ऐप्लिकेशन को Firebase इंस्टॉलेशन पर माइग्रेट करना चाहिए.

माइग्रेशन की प्रोसेस, आपके ऐप्लिकेशन के हिसाब से अलग-अलग होती है:

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

  • जिन ऐप्लिकेशन में इंस्टेंस आईडी के लिए साफ़ तौर पर एपीआई कॉल किए जाते हैं उन्हें SDK टूल के वर्शन अपडेट करने होंगे और कोड में बदलाव करने होंगे. ऐसा इसलिए, ताकि इंस्टेंस आईडी के तरीकों को Firebase इंस्टॉलेशन या FCM के बराबर के तरीकों से बदला जा सके. अगर आपका ऐप्लिकेशन, FCM रजिस्ट्रेशन टोकन पाने के लिए इंस्टेंस आईडी का इस्तेमाल करता है या ऐप्लिकेशन इंस्टेंस को टारगेट करने के लिए या किसी अन्य मकसद से इंस्टेंस आईडी का इस्तेमाल करता है, तो आपको अपने ऐप्लिकेशन कोड को अपडेट करना होगा.

फ़िलहाल, एफ़आईएस, पुराने आइडेंटिफ़ायर Firebase इंस्टेंस आईडी के साथ काम करता है. आईआईडी मिटाना, इन Firebase SDK टूल की मदद से डेटा मिटाने का अनुरोध करने का एक और तरीका है:

  • iOS 6.14.0 और इससे पहले के वर्शन
  • 27 फ़रवरी, 2020 से पहले के Android SDK टूल

इसका मतलब है कि ऐप्लिकेशन को Firebase इंस्टॉलेशन पर माइग्रेट करना ज़रूरी नहीं है. हालांकि, हमारा सुझाव है कि आप ऐसा करें.

Firebase इंस्टॉल करने के लिए, SDK टूल के कम से कम वर्शन पर अपग्रेड करना

इंस्टेंस आईडी से Firebase इंस्टॉलेशन पर माइग्रेट करने के लिए, पक्का करें कि आपके ऐप्लिकेशन, यहां दिए गए Firebase SDK टूल के कम से कम वर्शन नंबर का इस्तेमाल करते हों:

Firebase SDK Android का कम से कम वर्शन iOS का कम से कम वर्शन
Firebase क्लाउड से मैसेज v20.3.0 v6.34.0
रिमोट कॉन्फ़िगरेशन v19.2.0 v6.24.0
Google Analytics for Firebase \ (मेज़रमेंट एसडीके) v17.4.4 v6.18.0
इन-ऐप्लिकेशन मैसेज v19.0.7 v6.24.0
परफ़ॉर्मेंस को मॉनिटर करना v19.0.8 v6.21.0
Crashlytics v17.2.1 v6.23.0
ML Kit v22.1.2 v6.28.0

इंस्टेंस आईडी एपीआई को साफ़ तौर पर कॉल करने वाले कोड को अपडेट करना

अगर आपका Android या Apple ऐप्लिकेशन, इंस्टेंस आईडी एसडीके के तरीकों का सीधे तौर पर इस्तेमाल करता है, तो Firebase इंस्टॉलेशन एसडीके या FCM एसडीके में मौजूद विकल्पों का इस्तेमाल किया जा सकता है.

आइडेंटिफ़ायर वापस पाना

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

पहले

Swift

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)")
  }
}

Objective-C

[[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];
    // display message
    NSLog(@"%@", 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

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

बाद में

Swift

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

Objective-C

[[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

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

आइडेंटिफ़ायर मिटाना

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

पहले

Swift

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

Objective-C

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

Android

FirebaseInstanceId.deleteInstanceId();

बाद में

Swift

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

Objective-C

- (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

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

FCM रजिस्ट्रेशन टोकन वापस लाया जा रहा है

Firebase इंस्टॉलेशन की सुविधा शुरू होने से पहले, FCM क्लाइंट, इंस्टेंस आईडी से रजिस्ट्रेशन टोकन हासिल करते थे. अब FCM SDK, रजिस्ट्रेशन टोकन को वापस पाने के तरीके उपलब्ध कराता है.

पहले

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

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()
        })

Swift

InstanceID.instanceID().instanceID { result, error in
  if let error = error {
    print("Error fetching instance ID: \(error)")
  } else if let result = result {
    print("Instance ID token: \(result.token)")
  }
}

Objective-C

[[FIRInstanceID instanceID] instanceIDWithHandler:^(FIRInstanceIDResult * _Nullable result,
                                                    NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"Error fetching instance ID: %@", error);
  } else {
    NSLog(@"Instance ID token: %@", result.token);
  }
}];

बाद में

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

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()
})

Swift

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)")
  }
}

Objective-C

[[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];
    // display message
    NSLog(@"%@", message);
  }
}];