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 इंस्टॉलेशन आईडी का भी इस्तेमाल करता है. Firebase Remote Config इनका इस्तेमाल, परफ़ॉर्मेंस इवेंट की रिपोर्टिंग की दर को मैनेज करने के लिए किया जाता है.

Firebase Remote Config

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

Firebase ML

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

Firebase User Segmentation Storage

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

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

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

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

अपने ऐप्लिकेशन में Firebase Installations SDK जोड़ना

iOS+

  1. Firebase इंस्टॉलेशन के लिए, अपनी Podfile में डिपेंडेंसी जोड़ें:
    pod 'FirebaseInstallations'
  2. pod install चलाएं और बनाई गई .xcworkspace फ़ाइल खोलें.
  3. अपने UIApplicationDelegate में FirebaseCore मॉड्यूल इंपोर्ट करें. साथ ही, अपने ऐप्लिकेशन डेलिगेट में इस्तेमाल किए जाने वाले अन्य 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 installations Android SDK के लिए डिपेंडेंसी जोड़ें:

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

JavaScript

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

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

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

Flutter

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

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

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

    import 'package:firebase_app_installations/firebase_app_installations.dart';
    

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

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

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

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

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

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

Firebase सेवाओं से जनरेट किए गए FID मिटाने के लिए, 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();

सर्वर एपीआई कॉल की मदद से, किसी FID को मिटाना

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

एसडीके जोड़ने के बाद, अपनी पसंद की भाषा में मौजूद फ़ंक्शन को कॉल करके, FID मिटाएं. ध्यान दें: 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 सेवाएं, FIS से मिले पुष्टि करने वाले टोकन की मदद से, 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 को फिर से हासिल करते हैं और उसका इस्तेमाल करते हैं उन्हें FID के संभावित मिटने या रोटेशन की निगरानी करने के लिए लॉजिक जोड़ना चाहिए. यहां कुछ ऐसे मामले दिए गए हैं जिनमें FID को मिटाया या रोटेट किया जा सकता है:

  • ऐप्लिकेशन को अनइंस्टॉल या फिर से इंस्टॉल करना. उदाहरण के लिए, जब कोई असली उपयोगकर्ता किसी नए डिवाइस पर ऐप्लिकेशन इंस्टॉल करता है.
  • जब असली उपयोगकर्ता, ऐप्लिकेशन या डिवाइस की कैश मेमोरी मिटाता है.
  • ऐप्लिकेशन का इस्तेमाल न किए जाने की वजह से, बैकएंड में 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];
}];

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

Android

Kotlin और Java क्लाइंट को, नए FID को वापस पाने के लिए, कॉल पूरे न होने पर फिर से कोशिश करने का लॉजिक जोड़ना चाहिए.

JavaScript

वेब ऐप्लिकेशन, 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');
});

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

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

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

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

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

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

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

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

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

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

Firebase SDK Android का कम से कम वर्शन iOS का कम से कम वर्शन
Firebase क्लाउड से मैसेज v20.3.0 v6.34.0
Remote Config v19.2.0 v6.24.0
Google Analytics for Firebase \ (Measurement SDK) 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 ऐप्लिकेशन, सीधे तौर पर इंस्टेंस आईडी SDK टूल के तरीकों का इस्तेमाल करता है, तो Firebase installations SDK टूल या FCM SDK टूल में, उन तरीकों की जगह मिलते-जुलते तरीकों का इस्तेमाल किया जा सकता है.

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

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

पहले

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 Installations के लॉन्च होने से पहले, 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);
  }
}];