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

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

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

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

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

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

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

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

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

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

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

Remote Config अंतिम उपयोगकर्ता उपकरणों पर लौटने के लिए कॉन्फ़िगरेशन मानों का चयन करने के लिए Firebase स्थापना आईडी का उपयोग करता है।

फायरबेस एमएल

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

फायरबेस यूजर सेगमेंटेशन स्टोरेज

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

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

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

FIS API को सीधे कॉल करना प्रारंभ करने के लिए, SDK को अपने ऐप में जोड़ें।

अपने ऐप्लिकेशन में Firebase इंस्टॉलेशन 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. यदि आप SwiftUI का उपयोग कर रहे हैं, तो आपको एक एप्लिकेशन प्रतिनिधि बनाना होगा और इसे UIApplicationDelegateAdaptor या NSApplicationDelegateAdaptor के माध्यम से अपने App स्ट्रक्चर में संलग्न करना होगा। आपको ऐप डेलिगेट स्विज़लिंग को भी अक्षम करना होगा। अधिक जानकारी के लिए, SwiftUI निर्देश देखें.

    स्विफ्टयूआई

    @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 ) में Firebase इंस्टॉलेशन Android SDK के लिए निर्भरता जोड़ें:

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

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

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

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

<script src="/__/firebase/9.22.1/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 हटाएं

Firebase सेवाओं द्वारा उत्पन्न FID को हटाने के लिए, Firebase स्थापना SDK से उपयुक्त विधि को कॉल करें:

तीव्र

Installations.installations().delete { error in
  if let error = error {
    print("Error deleting installation: \(error)")
    return
  }
  print("Installation deleted");
}

उद्देश्य सी

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

सर्वर API कॉल के साथ FID हटाएं

किसी सर्वर API कॉल के साथ किसी FID को हटाने के लिए, अपने सर्वर में Firebase Admin SDK जोड़ें , यदि आपने पहले से ऐसा नहीं किया है।

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

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

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

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

एक Firebase स्थापना आईडी प्राप्त करने के लिए:

तीव्र

Installations.installations().installationID { (id, error) in
  if let error = error {
    print("Error fetching id: \(error)")
    return
  }
  guard let id = id else { return }
  print("Installation ID: \(id)")
}

उद्देश्य सी

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

स्थापना प्रमाणीकरण टोकन पुनः प्राप्त करें

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

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

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

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

एक स्थापना प्रमाणीकरण टोकन पुनः प्राप्त करने के लिए:

तीव्र

Installations.installations().authTokenForcingRefresh(true, completion: { (result, error) in
  if let error = error {
    print("Error fetching token: \(error)")
    return
  }
  guard let result = result else { return }
  print("Installation auth token: \(result.authToken)")
})

उद्देश्य सी

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

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

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

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

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

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

FID घुमाव की निगरानी करने के लिए:

तीव्र

installationIDObserver = NotificationCenter.default.addObserver(
        forName: .InstallationIDDidChange,
        object: nil,
        queue: nil
) { (notification) in
  // Fetch new Installation ID
  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];
}];

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

एंड्रॉयड

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

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

वेब ऐप्स 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');
});

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

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

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

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

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

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

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

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

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

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

फायरबेस एसडीके न्यूनतम Android संस्करण न्यूनतम आईओएस संस्करण
फायरबेस क्लाउड मैसेजिंग v20.3.0 v6.34.0
दूरस्थ विन्यास v19.2.0 v6.24.0
Firebase के लिए Google Analytics \ (माप 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
एमएल किट 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)
        }

बाद

तीव्र

Installations.installations().installationID { (id, error) in
  if let error = error {
    print("Error fetching id: \(error)")
    return
  }
  guard let id = id else { return }
  print("Installation ID: \(id)")
}

उद्देश्य सी

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

एक FCM पंजीकरण टोकन प्राप्त करना

फायरबेस इंस्टॉलेशन की शुरुआत से पहले, 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+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;
  }
}];
,

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

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

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

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

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

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

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

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

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

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

Remote Config अंतिम उपयोगकर्ता उपकरणों पर लौटने के लिए कॉन्फ़िगरेशन मानों का चयन करने के लिए Firebase स्थापना आईडी का उपयोग करता है।

फायरबेस एमएल

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

फायरबेस यूजर सेगमेंटेशन स्टोरेज

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

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

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

FIS API को सीधे कॉल करना प्रारंभ करने के लिए, SDK को अपने ऐप में जोड़ें।

अपने ऐप्लिकेशन में Firebase इंस्टॉलेशन 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. यदि आप SwiftUI का उपयोग कर रहे हैं, तो आपको एक एप्लिकेशन प्रतिनिधि बनाना होगा और इसे UIApplicationDelegateAdaptor या NSApplicationDelegateAdaptor के माध्यम से अपने App स्ट्रक्चर में संलग्न करना होगा। आपको ऐप डेलिगेट स्विज़लिंग को भी अक्षम करना होगा। अधिक जानकारी के लिए, SwiftUI निर्देश देखें.

    स्विफ्टयूआई

    @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 ) में Firebase इंस्टॉलेशन Android SDK के लिए निर्भरता जोड़ें:

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

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

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

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

<script src="/__/firebase/9.22.1/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 हटाएं

Firebase सेवाओं द्वारा उत्पन्न FID को हटाने के लिए, Firebase स्थापना SDK से उपयुक्त विधि को कॉल करें:

तीव्र

Installations.installations().delete { error in
  if let error = error {
    print("Error deleting installation: \(error)")
    return
  }
  print("Installation deleted");
}

उद्देश्य सी

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

सर्वर API कॉल के साथ FID हटाएं

किसी सर्वर API कॉल के साथ किसी FID को हटाने के लिए, अपने सर्वर में Firebase Admin SDK जोड़ें , यदि आपने पहले से ऐसा नहीं किया है।

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

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

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

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

एक Firebase स्थापना आईडी प्राप्त करने के लिए:

तीव्र

Installations.installations().installationID { (id, error) in
  if let error = error {
    print("Error fetching id: \(error)")
    return
  }
  guard let id = id else { return }
  print("Installation ID: \(id)")
}

उद्देश्य सी

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

स्थापना प्रमाणीकरण टोकन पुनः प्राप्त करें

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

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

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

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

एक स्थापना प्रमाणीकरण टोकन पुनः प्राप्त करने के लिए:

तीव्र

Installations.installations().authTokenForcingRefresh(true, completion: { (result, error) in
  if let error = error {
    print("Error fetching token: \(error)")
    return
  }
  guard let result = result else { return }
  print("Installation auth token: \(result.authToken)")
})

उद्देश्य सी

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

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

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

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

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

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

FID घुमाव की निगरानी करने के लिए:

तीव्र

installationIDObserver = NotificationCenter.default.addObserver(
        forName: .InstallationIDDidChange,
        object: nil,
        queue: nil
) { (notification) in
  // Fetch new Installation ID
  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];
}];

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

एंड्रॉयड

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

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

वेब ऐप्स 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');
});

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

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

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

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

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

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

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

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

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

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

फायरबेस एसडीके न्यूनतम Android संस्करण न्यूनतम आईओएस संस्करण
फायरबेस क्लाउड मैसेजिंग v20.3.0 v6.34.0
दूरस्थ विन्यास v19.2.0 v6.24.0
Firebase के लिए Google Analytics \ (माप 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
एमएल किट 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)
        }

बाद

तीव्र

Installations.installations().installationID { (id, error) in
  if let error = error {
    print("Error fetching id: \(error)")
    return
  }
  guard let id = id else { return }
  print("Installation ID: \(id)")
}

उद्देश्य सी

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

एक FCM पंजीकरण टोकन प्राप्त करना

फायरबेस इंस्टॉलेशन की शुरुआत से पहले, 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+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;
  }
}];
,

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

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

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

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

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

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

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

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

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

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

Remote Config अंतिम उपयोगकर्ता उपकरणों पर लौटने के लिए कॉन्फ़िगरेशन मानों का चयन करने के लिए Firebase स्थापना आईडी का उपयोग करता है।

फायरबेस एमएल

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

फायरबेस यूजर सेगमेंटेशन स्टोरेज

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

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

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

FIS API को सीधे कॉल करना प्रारंभ करने के लिए, SDK को अपने ऐप में जोड़ें।

अपने ऐप्लिकेशन में Firebase इंस्टॉलेशन 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. यदि आप SwiftUI का उपयोग कर रहे हैं, तो आपको एक एप्लिकेशन प्रतिनिधि बनाना होगा और इसे UIApplicationDelegateAdaptor या NSApplicationDelegateAdaptor के माध्यम से अपने App स्ट्रक्चर में संलग्न करना होगा। आपको ऐप डेलिगेट स्विज़लिंग को भी अक्षम करना होगा। अधिक जानकारी के लिए, SwiftUI निर्देश देखें.

    स्विफ्टयूआई

    @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 ) में Firebase इंस्टॉलेशन Android SDK के लिए निर्भरता जोड़ें:

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

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

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

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

<script src="/__/firebase/9.22.1/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 हटाएं

Firebase सेवाओं द्वारा उत्पन्न FID को हटाने के लिए, Firebase स्थापना SDK से उपयुक्त विधि को कॉल करें:

तीव्र

Installations.installations().delete { error in
  if let error = error {
    print("Error deleting installation: \(error)")
    return
  }
  print("Installation deleted");
}

उद्देश्य सी

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

सर्वर API कॉल के साथ FID हटाएं

किसी सर्वर API कॉल के साथ किसी FID को हटाने के लिए, अपने सर्वर में Firebase Admin SDK जोड़ें , यदि आपने पहले से ऐसा नहीं किया है।

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

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

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

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

एक Firebase स्थापना आईडी प्राप्त करने के लिए:

तीव्र

Installations.installations().installationID { (id, error) in
  if let error = error {
    print("Error fetching id: \(error)")
    return
  }
  guard let id = id else { return }
  print("Installation ID: \(id)")
}

उद्देश्य सी

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

स्थापना प्रमाणीकरण टोकन पुनः प्राप्त करें

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

An installation auth token is a short-lived bearer token in JSON web token (JWT) format containing the following information for an installation:

  • The Firebase installation ID
  • The associated project ( projectNumber )
  • The associated Firebase application ID ( appId )
  • The token's expiration date

An installation auth token cannot be revoked, and remains valid until its expiration date. The default token lifetime is one week.

To retrieve an installation auth token:

Swift

Installations.installations().authTokenForcingRefresh(true, completion: { (result, error) in
  if let error = error {
    print("Error fetching token: \(error)")
    return
  }
  guard let result = result else { return }
  print("Installation auth token: \(result.authToken)")
})

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

JavaScript

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

Dart

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

Monitor the Firebase installation ID lifecycle

During the normal operation of an app, Firebase installation IDs (FIDs) don't require special monitoring. However, apps that explicitly retrieve and use FIDs should add logic to monitor the potential deletion or rotation of the FID. Here are some cases where FIDs could be deleted or rotated:

  • Uninstallation or reinstallation of the app, for instance when an end user installs on a new device.
  • The end user clears the cache of the app or the device.
  • FID deletion is triggered in the backend due to app inactivity (currently the threshold for this is 270 days of inactivity).

When apps experience FID rotation or deletion in these kinds of cases, they are assigned a new FID. Also, the installation auth token associated with a deleted FID is deleted, regardless of its own maturity, and is replaced with a new installation auth token.

Apps can monitor these changes and respond accordingly.

To monitor FID rotation:

Swift

installationIDObserver = NotificationCenter.default.addObserver(
        forName: .InstallationIDDidChange,
        object: nil,
        queue: nil
) { (notification) in
  // Fetch new Installation ID
  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];
}];

An NSNotification named NSNotificationName.InstallationIDDidChange is posted to the default NSNotificationCenter whenever a new FID is assigned.

Android

Kotlin and Java clients should add retry logic to respond on failed calls to retrieve the new FID.

JavaScript

Web apps can subscribe to the onIdChange hook.

Whenever a new FID is created, the subscribed callback is triggered:

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

Dart

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

Migrate from Instance ID to Firebase installations

Prior to the introduction of Firebase installations, Firebase relied on the Instance ID SDK for identifiers of app installs. Firebase installations provides significant advantages over Instance ID in reliability, performance, and security. Firebase apps that depend on the Instance ID SDK should migrate to Firebase installations.

The migration process is different based on your app:

  • Apps that don't directly call Instance ID APIs can migrate by updating their SDK versions . Most Firebase apps fall into this category.

  • Apps that explicitly make API calls to Instance ID must update SDK versions and make code changes to replace Instance ID methods with their Firebase installations or FCM equivalents. If your app uses Instance ID to retrieve FCM registration tokens or explicitly uses Instance ID to target app instances or for any other purpose, you'll need to update your application code.

Currently, FIS is backward-compatible with the legacy identifier Firebase Instance ID. Deleting an IID is an alternative method of requesting data deletion with these Firebase SDKs:

  • iOS 6.14.0 and lower
  • Android SDKs earlier than February 27, 2020

This means that apps are not required to migrate to Firebase installations; however, doing so is highly recommended.

Upgrading to minimum SDK versions for Firebase installations

To migrate from Instance ID to Firebase installations, make sure that your applications use at least the listed minimum version numbers of the following Firebase SDKs:

Firebase SDK Minimum Android version Minimum iOS version
Firebase Cloud Messaging 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
In-App Messaging v19.0.7 v6.24.0
Performance Monitoring v19.0.8 v6.21.0
Crashlytics v17.2.1 v6.23.0
ML Kit v22.1.2 v6.28.0

Updating code that explicitly calls Instance ID APIs

If your Android or Apple app directly uses Instance ID SDK methods, you can replace that usage with identical alternatives in the Firebase installations SDK or the FCM SDK.

Retrieving an identifier

Methods to get Instance IDs are replaced with methods to get an installations ID. For example:

Before

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)")
    self.remoteFCMTokenMessage.text = "Remote FCM registration 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];
     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)
        }

After

Swift

Installations.installations().installationID { (id, error) in
  if let error = error {
    print("Error fetching id: \(error)")
    return
  }
  guard let id = id else { return }
  print("Installation ID: \(id)")
}

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

Deleting an identifier

Methods to delete Instance IDs are replaced with methods to delete Firebase installation IDs. For example:

Before

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

After

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+KTX

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

Retrieving an FCM registration token

Prior to the introduction of Firebase Installations, FCM clients retrieved registration tokens from Instance ID. Now, the FCM SDK provides methods to retrieve the registration token.

Before

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

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)")
    self.remoteFCMTokenMessage.text = "Remote FCM registration 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];
     self.remoteFCMTokenMessage.text = message;
   }
 }];

After

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

Swift

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

Objective-C

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