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

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

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

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

Firebase Crashlytics

Firebase 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 ব্যবহারকারী সেগমেন্টেশন স্টোরেজ Firebase ইনস্টলেশন আইডি এবং সম্পর্কিত বৈশিষ্ট্য এবং সেগমেন্টগুলি সংরক্ষণ করে যাতে সেগুলি ব্যবহার করে এমন অন্যান্য Firebase পরিষেবাগুলিতে টার্গেটিং তথ্য সরবরাহ করে।

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

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

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

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

iOS+

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

    সুইফটইউআই

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

    সুইফট

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    উদ্দেশ্য-C

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

    উদ্দেশ্য-C

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

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

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

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

উদাহরণস্বরূপ, যদি আপনার নির্ভরতা index.html এ যোগ করা হয়, তাহলে <head> উপাদানে নির্ভরতা যোগ করুন:

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

ফ্লাটার

  1. আপনার Flutter প্রকল্পের রুট ডিরেক্টরি থেকে, 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 ইনস্টলেশন আইডিগুলি অ্যাপ ইনস্টলেশন এবং সেই অ্যাপ ইনস্টলেশনের সাথে সংযুক্ত ডেটা সনাক্ত করে।

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

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

একটি ক্লায়েন্ট API কল সহ একটি FID মুছুন৷

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

সুইফট

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

উদ্দেশ্য-C

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

Java

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

Kotlin+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 অ্যাডমিন SDK যোগ করুন , যদি আপনি ইতিমধ্যে না করে থাকেন।

একবার SDK যোগ হয়ে গেলে, আপনার পছন্দের ভাষায় মুছে ফেলার ফাংশনে একটি কলের মাধ্যমে FID গুলি মুছুন (দ্রষ্টব্য: Node.js বাদে, এই পদ্ধতিগুলি ইনস্ট্যান্স আইডি নামকরণকে প্রতিফলিত করে। যাইহোক, যেকোনও বর্তমান ফায়ারবেসের সাথে কল করা হলে এগুলি আসলে FID মুছে দেয় SDK)।

Node.js

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

admin.installations().deleteInstallation(idToDelete);

Java

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

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

পাইথন

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

যখন আপনি একটি সার্ভার API কলের মাধ্যমে একটি Firebase ইনস্টলেশন আইডি মুছে ফেলেন, তখন Firebase পরিষেবাগুলি সেই ইনস্টলেশন আইডির সাথে সংযুক্ত ডেটা মুছে ফেলার প্রক্রিয়া শুরু করে, 1-2 দিনের মধ্যে সেই IDটির জন্য নতুন ডেটা গ্রহণ করা বন্ধ করে এবং তারপরে ক্লায়েন্ট অ্যাপকে অবহিত করে। যে আইডি মুছে ফেলা হয়েছে. যতক্ষণ পর্যন্ত না Firebase ক্লায়েন্ট অ্যাপকে অবহিত করে, ততক্ষণ অ্যাপের কিছু পরিষেবা আইডিকে টার্গেট করতে পারে—উদাহরণস্বরূপ, একটি 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)")
}

উদ্দেশ্য-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")
    }
}

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

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

Dart

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

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

ফায়ারবেস পরিষেবাগুলি FIS থেকে পুনরুদ্ধার করা প্রমাণীকরণ টোকেনগুলির সাহায্যে Firebase ইনস্টলেশনগুলিকে প্রমাণীকরণ করতে পারে৷ উদাহরণস্বরূপ, 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)")
}

উদ্দেশ্য-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")
        }
    }

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

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

Dart

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

Firebase ইনস্টলেশন আইডি লাইফসাইকেল মনিটর করুন

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

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

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

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

FID ঘূর্ণন নিরীক্ষণ করতে:

সুইফট

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

উদ্দেশ্য-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];
}];

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

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

Kotlin এবং Java ক্লায়েন্টদের নতুন 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');
});

ইনস্ট্যান্স আইডি থেকে Firebase ইনস্টলেশনে স্থানান্তর করুন

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

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

  • যে অ্যাপগুলি সরাসরি ইন্সট্যান্স আইডি API-কে কল করে না সেগুলি তাদের SDK সংস্করণ আপডেট করে স্থানান্তর করতে পারে৷ বেশিরভাগ ফায়ারবেস অ্যাপ এই বিভাগে পড়ে।

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

বর্তমানে, এফআইএস উত্তরাধিকার শনাক্তকারী ফায়ারবেস ইনস্ট্যান্স আইডির সাথে পশ্চাদপদ-সামঞ্জস্যপূর্ণ। একটি IID মুছে ফেলা হল এই Firebase SDK-এর সাথে ডেটা মুছে ফেলার অনুরোধ করার একটি বিকল্প পদ্ধতি:

  • iOS 6.14.0 এবং তার নিচের
  • 27 ফেব্রুয়ারি, 2020-এর আগে Android SDK

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

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

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

ফায়ারবেস SDK ন্যূনতম অ্যান্ড্রয়েড সংস্করণ সর্বনিম্ন iOS সংস্করণ
ফায়ারবেস ক্লাউড মেসেজিং 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
ক্র্যাশলাইটিক্স v17.2.1 v6.23.0
এমএল কিট v22.1.2 v6.28.0

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

যদি আপনার Android বা Apple অ্যাপ সরাসরি Instance ID SDK পদ্ধতি ব্যবহার করে, তাহলে আপনি Firebase ইনস্টলেশন 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)")
    self.remoteFCMTokenMessage.text = "Remote FCM registration token: \(token)"
  }
}

উদ্দেশ্য-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)
        }

পরে

সুইফট

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

উদ্দেশ্য-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")
    }
}

একটি শনাক্তকারী মুছে ফেলা হচ্ছে

ইনস্ট্যান্স আইডি মুছে ফেলার পদ্ধতিগুলি Firebase ইনস্টলেশন আইডি মুছে ফেলার পদ্ধতিগুলির সাথে প্রতিস্থাপিত হয়। যেমন:

আগে

সুইফট

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

উদ্দেশ্য-C

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

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

FirebaseInstanceId.deleteInstanceId();

পরে

সুইফট

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

উদ্দেশ্য-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")
    }
}

একটি 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)"
  }
}

উদ্দেশ্য-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

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

উদ্দেশ্য-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;
  }
}];