ফায়ারবেস ইনস্টলেশন পরিচালনা করুন

Firebase ইনস্টলেশন সার্ভিস (FIS) একটি ফায়ারবেস অ্যাপের প্রতিটি ইনস্টল করা ইনস্ট্যান্সের জন্য একটি Firebase ইনস্টলেশন আইডি (FID) প্রদান করে। এই ফায়ারবেস সার্ভিসগুলো অভ্যন্তরীণভাবে এই Firebase ইনস্টলেশন আইডি ব্যবহার করে থাকে:

ফায়ারবেস পরিষেবা Firebase ইনস্টলেশনের কার্যকারিতা
Firebase Cloud Messaging

Firebase Cloud Messaging বার্তা প্রেরণের জন্য ডিভাইস নির্ধারণ করতে Firebase ইনস্টলেশন আইডি ব্যবহার করে।

Firebase Crashlytics

অ্যাপ ইনস্ট্যান্সের ফায়ারবেস ইনস্টলেশন আইডিতে পরিবর্তনের উপর ভিত্তি করে Crashlytics Firebase Crashlytics তার ইনস্টলেশন UUID পরিবর্তন করে। ভবিষ্যতে, ক্র্যাশ রিপোর্টিং এবং ক্র্যাশ ম্যানেজমেন্ট পরিষেবাগুলোকে উন্নত করে এমন ফিচারগুলো সক্রিয় করতে এই ইনস্টলেশন আইডি ব্যবহার করা হতে পারে।

Firebase In-App Messaging

Firebase In-App Messaging বার্তা প্রেরণের জন্য ডিভাইস নির্ধারণ করতে Firebase ইনস্টলেশন আইডি ব্যবহার করে।

Firebase Performance Monitoring

Performance Monitoring নেটওয়ার্ক রিসোর্স অ্যাক্সেসকারী স্বতন্ত্র Firebase ইনস্টলেশনগুলোর সংখ্যা গণনা করতে Firebase ইনস্টলেশন আইডি ব্যবহার করে, যাতে অ্যাক্সেস প্যাটার্নগুলো যথেষ্ট বেনামী থাকে তা নিশ্চিত করা যায়। এটি পারফরম্যান্স ইভেন্ট রিপোর্টিংয়ের হার পরিচালনা করতে Firebase Remote Config সাথে Firebase ইনস্টলেশন আইডিগুলোও ব্যবহার করে।

Firebase Remote Config

Remote Config শেষ ব্যবহারকারীর ডিভাইসে ফেরত পাঠানোর জন্য কনফিগারেশন মান নির্বাচন করতে Firebase ইনস্টলেশন আইডি ব্যবহার করে।

Firebase ML

অ্যাপ ইনস্ট্যান্সের সাথে ইন্টারঅ্যাক্ট করার সময় ডিভাইস অথেন্টিকেশনের জন্য Firebase ML ইনস্টলেশন অথ টোকেন নামক ক্রেডেনশিয়াল ব্যবহার করে, যেমন—অ্যাপ ইনস্ট্যান্সগুলোতে ডেভেলপার মডেল ডিস্ট্রিবিউট করার জন্য।

ফায়ারবেস ব্যবহারকারী বিভাজন স্টোরেজ

ফায়ারবেস ইউজার সেগমেন্টেশন স্টোরেজ, Firebase ইনস্টলেশন আইডি এবং সম্পর্কিত অ্যাট্রিবিউট ও সেগমেন্টসমূহ সংরক্ষণ করে, যাতে সেগুলোকে ব্যবহারকারী অন্যান্য ফায়ারবেস পরিষেবাগুলোকে টার্গেটিং তথ্য সরবরাহ করা যায়।

সাধারণত, ডেভেলপারদের সরাসরি FIS API-এর সাথে ইন্টারঅ্যাক্ট করার প্রয়োজন ছাড়াই Firebase সার্ভিসগুলো Firebase ইনস্টলেশন সার্ভিস ব্যবহার করে। তবে, এমন কিছু ক্ষেত্র রয়েছে যেখানে অ্যাপ ডেভেলপাররা সরাসরি FIS API কল করতে চাইতে পারেন, যেমন:

  • একটি Firebase ইনস্টলেশন এবং এর সাথে যুক্ত ডেটা মুছে ফেলতে।
  • নির্দিষ্ট অ্যাপ ইনস্টলেশনগুলোকে লক্ষ্য করার জন্য আইডেন্টিফায়ার ( Firebase ইনস্টলেশন আইডি) পুনরুদ্ধার করা।
  • ফায়ারবেস ইনস্টলেশন প্রমাণীকরণের জন্য ইনস্টলেশন প্রমাণীকরণ টোকেন পুনরুদ্ধার করতে।

সরাসরি FIS API কল করা শুরু করতে, আপনার অ্যাপে SDK-টি যোগ করুন।

আপনার অ্যাপে Firebase ইনস্টলেশন SDK যোগ করুন

iOS+

  1. আপনার Podfile-এ Firebase ইনস্টলেশনগুলির জন্য ডিপেন্ডেন্সি যোগ করুন:
    pod 'FirebaseInstallations'
  2. pod install চালান এবং তৈরি হওয়া .xcworkspace ফাইলটি খুলুন।
  3. আপনার UIApplicationDelegateFirebaseCore মডিউলটি ইম্পোর্ট করুন, সেইসাথে আপনার অ্যাপ ডেলিগেট দ্বারা ব্যবহৃত অন্য যেকোনো Firebase মডিউলও ইম্পোর্ট করুন। উদাহরণস্বরূপ, Cloud Firestore এবং Authentication ব্যবহার করতে:

    SwiftUI

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

    সুইফট

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    উদ্দেশ্য-সি

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  4. আপনার অ্যাপ ডেলিগেটের application(_:didFinishLaunchingWithOptions:) মেথডে একটি FirebaseApp শেয়ার্ড ইনস্ট্যান্স কনফিগার করুন:

    SwiftUI

    // 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 struct-এর সাথে সংযুক্ত করতে হবে। আপনাকে অবশ্যই অ্যাপ ডেলিগেট সুইজলিং নিষ্ক্রিয় করতে হবে। আরও তথ্যের জন্য, SwiftUI নির্দেশাবলী দেখুন।

    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 ইনস্টলেশনের অ্যান্ড্রয়েড এসডিকে-এর ডিপেন্ডেন্সি যোগ করুন:

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

জাভাস্ক্রিপ্ট

আপনার ওয়েব অ্যাপ্লিকেশনটি কীভাবে হোস্ট করা হয়েছে তার উপর নির্ভর করে, আপনার কনফিগারেশন স্বয়ংক্রিয়ভাবে সম্পন্ন হতে পারে অথবা আপনাকে আপনার ফায়ারবেস কনফিগারেশন অবজেক্টটি আপডেট করতে হতে পারে।

উদাহরণস্বরূপ, যদি আপনার ডিপেন্ডেন্সিগুলো index.html-এ যোগ করা থাকে, তাহলে ডিপেন্ডেন্সিটি <head> এলিমেন্টের মধ্যে যোগ করুন:

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

ফ্লাটার

  1. আপনার ফ্লাটার প্রজেক্টের রুট ডিরেক্টরি থেকে, Firebase ইনস্টলেশন প্লাগইনটি ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:

    flutter pub add firebase_app_installations
    
  2. আপনার প্রকল্পটি পুনর্গঠন করুন:

    flutter run
    
  3. Firebase ইনস্টলেশন প্লাগইনটি ইম্পোর্ট করুন:

    import 'package:firebase_app_installations/firebase_app_installations.dart';
    

একটি Firebase ইনস্টলেশন মুছে ফেলুন

Firebase ইনস্টলেশনের সাথে যুক্ত ডেটা সাধারণত ব্যক্তিগতভাবে শনাক্তকারী হয় না । তবুও, ব্যবহারকারীদের এই ডেটা পরিচালনা এবং মুছে ফেলার সুযোগ দেওয়া সহায়ক হতে পারে।

প্রতিটি অ্যাপ্লিকেশনের প্রতিটি ইনস্টলেশনের জন্য Firebase ইনস্টলেশন আইডি আলাদা হয়; একই ডিভাইসে থাকা বিভিন্ন অ্যাপ্লিকেশনের Firebase ইনস্টলেশন আইডি ভিন্ন ভিন্ন হয়ে থাকে। Firebase ইনস্টলেশন আইডি অ্যাপ ইনস্টলেশন এবং সেই অ্যাপ ইনস্টলেশনগুলির সাথে যুক্ত ডেটা শনাক্ত করে।

আপনি যখন একটি ইনস্টলেশন আইডি মুছে ফেলেন, তখন সেই ইনস্টলেশন আইডির সাথে যুক্ত ডেটা ১৮০ দিনের মধ্যে এমন সমস্ত Firebase পরিষেবার লাইভ এবং ব্যাকআপ সিস্টেম থেকে মুছে ফেলা হয়, যেগুলি ইনস্টলেশন শনাক্ত করতে Firebase ইনস্টলেশন আইডি ব্যবহার করে। এই প্রক্রিয়াটি Google-এর মুছে ফেলা এবং সংরক্ষণ সংক্রান্ত বিবৃতিতে উচ্চ স্তরে বর্ণনা করা হয়েছে।

আপনার অ্যাপে FID তৈরি করে এমন সমস্ত পরিষেবা নিষ্ক্রিয় না করলে, FIS কয়েক দিনের মধ্যে একটি নতুন আইডি তৈরি করে। Firebase এই নতুন তৈরি হওয়া আইডিটিকে একটি নতুন Firebase ইনস্টলেশন হিসেবে বিবেচনা করে এবং এটিকে আগের আইডি বা ডেটার সাথে কোনোভাবেই সংযুক্ত করে না।

ক্লায়েন্ট এপিআই কলের মাধ্যমে একটি FID মুছে ফেলুন

Firebase পরিষেবা দ্বারা তৈরি FID গুলি মুছে ফেলার জন্য, Firebase ইনস্টলেশন SDK থেকে উপযুক্ত পদ্ধতিটি কল করুন:

সুইফট

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

উদ্দেশ্য-সি

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

Java

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

Kotlin

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

জাভাস্ক্রিপ্ট

await firebase.installations().delete();

Dart

await FirebaseInstallations.instance.delete();

সার্ভার এপিআই কলের মাধ্যমে একটি FID মুছে ফেলুন

সার্ভার এপিআই কলের মাধ্যমে কোনো এফআইডি (FID) ডিলিট করতে, আপনার সার্ভারে ফায়ারবেস অ্যাডমিন এসডিকে (Firebase Admin SDK) যোগ করুন , যদি আগে থেকে তা করা না থাকে।

একবার SDK যোগ করা হয়ে গেলে, আপনার পছন্দের ভাষায় ডিলিশন ফাংশনটি কল করে FID-গুলো ডিলিট করুন (দ্রষ্টব্য: Node.js ছাড়া, এই মেথডগুলো Instance ID নামকরণের রীতি অনুসরণ করে। তবে, যেকোনো বর্তমান Firebase SDK দিয়ে কল করা হলে এগুলো আসলেই 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)
}

যখন আপনি একটি সার্ভার এপিআই কলের মাধ্যমে একটি Firebase ইনস্টলেশন আইডি মুছে ফেলেন, তখন ফায়ারবেস সার্ভিসগুলো সেই ইনস্টলেশন আইডির সাথে যুক্ত ডেটা মুছে ফেলার প্রক্রিয়া শুরু করে, ১-২ দিনের জন্য সেই আইডির জন্য নতুন ডেটা গ্রহণ করা বন্ধ করে দেয় এবং তারপর ক্লায়েন্ট অ্যাপকে আইডিটি মুছে ফেলার বিষয়ে অবহিত করে। ফায়ারবেস ক্লায়েন্ট অ্যাপকে অবহিত করার আগ পর্যন্ত, অ্যাপটির কিছু সার্ভিস তখনও আইডিটিকে টার্গেট করতে পারে—উদাহরণস্বরূপ, একটি ফায়ারবেস ইনস্টলেশন আরও কয়েক ঘণ্টা ধরে FCM নোটিফিকেশন পেতে পারে।

আপনি যদি বর্তমান Firebase ইনস্টলেশন আইডিটি মুছে ফেলতে চান এবং অবিলম্বে একটি নতুন, সম্পর্কহীন আইডি দিয়ে Firebase পরিষেবাগুলো ব্যবহার করতে চান, তাহলে মুছে ফেলার কাজটি পরিচালনা করতে ক্লায়েন্ট এপিআই (API) ব্যবহার করুন।

ক্লায়েন্ট শনাক্তকারী পুনরুদ্ধার করুন

আপনার অ্যাপের নির্দিষ্ট ইনস্টলেশনগুলো শনাক্ত করার প্রয়োজন হলে, আপনি Firebase ইনস্টলেশন আইডি সংগ্রহ করে তা করতে পারেন। উদাহরণস্বরূপ, BiqQuery ইম্পোর্টের জন্য অ্যাপ ইনস্টলের সেগমেন্ট তৈরি করতে, অথবা Firebase In-App Messaging ডেভেলপমেন্টের সময় টেস্টিং করতে, আপনি সংশ্লিষ্ট Firebase ইনস্টলেশন আইডিগুলো ব্যবহার করে সঠিক ডিভাইসগুলো শনাক্ত ও টার্গেট করতে পারেন।

Firebase ইনস্টলেশন আইডি পুনরুদ্ধার করতে:

সুইফট

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

উদ্দেশ্য-সি

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

Java

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

Kotlin

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

ইনস্টলেশন প্রমাণীকরণ টোকেনগুলি পুনরুদ্ধার করুন

ফায়ারবেস সার্ভিসগুলো FIS থেকে প্রাপ্ত অথ টোকেন ব্যবহার করে ফায়ারবেস ইনস্টলেশনগুলোকে প্রমাণীকরণ করতে পারে। উদাহরণস্বরূপ, Remote Config এর জন্য A/B টেস্ট ডিজাইন করার সময়, আপনি একটি ইনস্টলেশন অথ টোকেন ব্যবহার করে কোনো নির্দিষ্ট টেস্ট ডিভাইসকে প্রমাণীকরণ করতে পারেন।

একটি ইনস্টলেশন অথোরাইজেশন টোকেন হলো JSON ওয়েব টোকেন (JWT) ফরম্যাটে থাকা একটি স্বল্পস্থায়ী বেয়ারার টোকেন, যাতে একটি ইনস্টলেশনের জন্য নিম্নলিখিত তথ্য থাকে:

  • Firebase ইনস্টলেশন আইডি
  • সংশ্লিষ্ট প্রকল্প ( projectNumber )
  • সংশ্লিষ্ট ফায়ারবেস অ্যাপ্লিকেশন আইডি ( appId )
  • টোকেনের মেয়াদ শেষ হওয়ার তারিখ

ইনস্টলেশন অথোরাইজেশন টোকেন বাতিল করা যায় না এবং এটি এর মেয়াদ শেষ হওয়ার তারিখ পর্যন্ত বৈধ থাকে। টোকেনের ডিফল্ট মেয়াদ এক সপ্তাহ।

ইনস্টলেশন প্রমাণীকরণ টোকেন পুনরুদ্ধার করতে:

সুইফট

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

উদ্দেশ্য-সি

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

Java

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

Kotlin

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

Firebase ইনস্টলেশন আইডির জীবনচক্র নিরীক্ষণ করুন

একটি অ্যাপের স্বাভাবিক কার্যক্রম চলাকালীন, Firebase ইনস্টলেশন আইডি (FID)-এর জন্য বিশেষ পর্যবেক্ষণের প্রয়োজন হয় না। তবে, যে অ্যাপগুলো স্পষ্টভাবে FID সংগ্রহ ও ব্যবহার করে, সেগুলোতে FID-এর সম্ভাব্য মুছে যাওয়া বা পরিবর্তনের বিষয়টি পর্যবেক্ষণ করার জন্য লজিক যোগ করা উচিত। নিচে এমন কিছু ক্ষেত্র উল্লেখ করা হলো যেখানে FID মুছে ফেলা বা পরিবর্তন করা হতে পারে:

  • অ্যাপটির আনইনস্টলেশন বা রিইনস্টলেশন, যেমন যখন কোনো ব্যবহারকারী একটি নতুন ডিভাইসে এটি ইনস্টল করেন।
  • ব্যবহারকারী অ্যাপ বা ডিভাইসের ক্যাশে মুছে ফেলেন।
  • অ্যাপ নিষ্ক্রিয় থাকার কারণে ব্যাকএন্ড থেকে FID মুছে ফেলার প্রক্রিয়াটি সক্রিয় হয় (বর্তমানে এর জন্য নির্ধারিত সীমা হলো ২৭০ দিনের নিষ্ক্রিয়তা)।

এই ধরনের ক্ষেত্রে যখন অ্যাপগুলির FID রোটেশন বা ডিলিট করা হয়, তখন সেগুলিকে একটি নতুন FID বরাদ্দ করা হয়। এছাড়াও, ডিলিট হওয়া FID-এর সাথে যুক্ত ইনস্টলেশন অথ টোকেনটি, তার নিজস্ব মেয়াদ নির্বিশেষে, ডিলিট করে দেওয়া হয় এবং তার পরিবর্তে একটি নতুন ইনস্টলেশন অথ টোকেন দেওয়া হয়।

অ্যাপগুলো এই পরিবর্তনগুলো পর্যবেক্ষণ করতে এবং সেই অনুযায়ী প্রতিক্রিয়া জানাতে পারে।

FID আবর্তন নিরীক্ষণ করতে:

সুইফট

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

উদ্দেশ্য-সি

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

যখনই একটি নতুন FID বরাদ্দ করা হয়, তখন ডিফল্ট NSNotificationCenter-এ NSNotificationName.InstallationIDDidChange নামের একটি NSNotification পোস্ট করা হয়।

অ্যান্ড্রয়েড

নতুন FID পুনরুদ্ধার করার ব্যর্থ কলগুলোর প্রতিক্রিয়া জানাতে Kotlin এবং Java ক্লায়েন্টদের রিট্রাই লজিক যোগ করা উচিত।

জাভাস্ক্রিপ্ট

ওয়েব অ্যাপগুলো 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 ইনস্টলেশন চালু হওয়ার আগে, অ্যাপ ইনস্টলের শনাক্তকারী হিসেবে ফায়ারবেস ইনস্ট্যান্স আইডি এসডিকে (Instance ID SDK)-এর উপর নির্ভর করত। নির্ভরযোগ্যতা, কর্মক্ষমতা এবং নিরাপত্তার দিক থেকে Firebase ইনস্টলেশন, ইনস্ট্যান্স আইডির তুলনায় উল্লেখযোগ্য সুবিধা প্রদান করে। যেসব ফায়ারবেস অ্যাপ ইনস্ট্যান্স আইডি এসডিকে-এর উপর নির্ভরশীল, তাদের Firebase ইনস্টলেশনে স্থানান্তরিত হওয়া উচিত।

আপনার অ্যাপের উপর ভিত্তি করে মাইগ্রেশন প্রক্রিয়াটি ভিন্ন হয়:

  • যেসব অ্যাপ সরাসরি ইনস্ট্যান্স আইডি এপিআই কল করে না, তারা তাদের এসডিকে ভার্সন আপডেট করার মাধ্যমে মাইগ্রেট করতে পারে। বেশিরভাগ ফায়ারবেস অ্যাপ এই শ্রেণীর অন্তর্ভুক্ত।

  • যেসব অ্যাপ সরাসরি ইনস্ট্যান্স আইডি-তে এপিআই কল করে, সেগুলোকে অবশ্যই এসডিকে ভার্সন আপডেট করতে হবে এবং কোডে পরিবর্তন এনে ইনস্ট্যান্স আইডি মেথডগুলোকে তাদের Firebase ইনস্টলেশন বা FCM সমতুল্য মেথড দিয়ে প্রতিস্থাপন করতে হবে। যদি আপনার অ্যাপ FCM রেজিস্ট্রেশন টোকেন পুনরুদ্ধার করতে অথবা অ্যাপ ইনস্ট্যান্স টার্গেট করতে বা অন্য কোনো উদ্দেশ্যে ইনস্ট্যান্স আইডি ব্যবহার করে, তাহলে আপনাকে আপনার অ্যাপ্লিকেশন কোড আপডেট করতে হবে।

বর্তমানে, FIS পুরোনো আইডেন্টিফায়ার Firebase Instance ID-এর সাথে ব্যাকওয়ার্ড-কম্প্যাটিবল। এই Firebase SDK-গুলো ব্যবহার করে ডেটা ডিলিট করার অনুরোধ জানানোর একটি বিকল্প পদ্ধতি হলো IID ডিলিট করা :

  • iOS 6.14.0 এবং এর নিচের সংস্করণ
  • ২৭ ফেব্রুয়ারি, ২০২০-এর আগের অ্যান্ড্রয়েড এসডিকেগুলো

এর মানে হলো, অ্যাপগুলোকে Firebase ইনস্টলেশনে স্থানান্তরিত করা বাধ্যতামূলক নয়; তবে, তা করার জন্য জোরালোভাবে সুপারিশ করা হয়।

Firebase ইনস্টলেশনগুলির জন্য ন্যূনতম SDK সংস্করণে আপগ্রেড করা

ইনস্ট্যান্স আইডি থেকে Firebase ইনস্টলেশনে স্থানান্তরিত করতে, নিশ্চিত করুন যে আপনার অ্যাপ্লিকেশনগুলি নিম্নলিখিত ফায়ারবেস এসডিকে-গুলির তালিকাভুক্ত ন্যূনতম সংস্করণ নম্বরগুলি ব্যবহার করছে:

ফায়ারবেস এসডিকে সর্বনিম্ন অ্যান্ড্রয়েড সংস্করণ সর্বনিম্ন iOS সংস্করণ
ফায়ারবেস ক্লাউড মেসেজিং v20.3.0 v6.34.0
রিমোট কনফিগারেশন v19.2.0 v6.24.0
ফায়ারবেসের জন্য গুগল অ্যানালিটিক্স (মেজারমেন্ট এসডিকে) v17.4.4 v6.18.0
অ্যাপের মধ্যে মেসেজিং v19.0.7 v6.24.0
কর্মক্ষমতা পর্যবেক্ষণ v19.0.8 v6.21.0
ক্র্যাশলিটিক্স v17.2.1 v6.23.0
এমএল কিট v22.1.2 v6.28.0

যে কোডে স্পষ্টভাবে ইনস্ট্যান্স আইডি এপিআই কল করা হয়, তা আপডেট করা হচ্ছে।

আপনার অ্যান্ড্রয়েড বা অ্যাপল অ্যাপ যদি সরাসরি ইনস্ট্যান্স আইডি এসডিকে (Instance ID SDK) পদ্ধতি ব্যবহার করে, তাহলে আপনি Firebase installations SDK) বা FCM SDK)-তে থাকা অভিন্ন বিকল্পগুলির মাধ্যমে সেই ব্যবহারটি প্রতিস্থাপন করতে পারেন।

একটি শনাক্তকারী পুনরুদ্ধার করা

ইনস্ট্যান্স আইডি পাওয়ার পদ্ধতিগুলো ইনস্টলেশন আইডি পাওয়ার পদ্ধতি দ্বারা প্রতিস্থাপিত করা হয়েছে। উদাহরণস্বরূপ:

আগে

সুইফট

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

উদ্দেশ্য-সি

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

পরে

সুইফট

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

উদ্দেশ্য-সি

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

Java

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

Kotlin

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 ইনস্টলেশন আইডি মুছে ফেলার পদ্ধতি দ্বারা প্রতিস্থাপিত হয়েছে। উদাহরণস্বরূপ:

আগে

সুইফট

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

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

একটি FCM রেজিস্ট্রেশন টোকেন পুনরুদ্ধার করা

ফায়ারবেস ইনস্টলেশন চালু হওয়ার আগে, FCM ক্লায়েন্টরা ইনস্ট্যান্স আইডি থেকে রেজিস্ট্রেশন টোকেন সংগ্রহ করত। এখন, FCM এসডিকে রেজিস্ট্রেশন টোকেন সংগ্রহ করার পদ্ধতি প্রদান করে।

আগে

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

সুইফট

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

উদ্দেশ্য-সি

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

সুইফট

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

উদ্দেশ্য-সি

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