مدیریت تاسیسات Firebase

سرویس نصب Firebase (FIS) برای هر نمونه نصب شده از یک برنامه فایربیس، یک شناسه نصب Firebase (FID) ارائه می‌دهد. شناسه نصب Firebase به صورت داخلی توسط این سرویس‌های فایربیس استفاده می‌شود:

سرویس فایربیس قابلیت نصب Firebase
Firebase Cloud Messaging

Firebase Cloud Messaging از شناسه‌های نصب Firebase برای هدف قرار دادن دستگاه‌ها جهت ارسال پیام استفاده می‌کند.

Firebase Crashlytics

Firebase Crashlytics شناسه کاربری (UUID) نصب Crashlytics را بر اساس تغییرات در شناسه نصب Firebase نمونه برنامه تغییر می‌دهد. در آینده، ممکن است از شناسه نصب برای فعال کردن ویژگی‌هایی که گزارش خرابی و خدمات مدیریت خرابی را بهبود می‌بخشند، استفاده شود.

Firebase In-App Messaging

Firebase In-App Messaging از شناسه‌های نصب Firebase برای هدف قرار دادن دستگاه‌ها جهت ارسال پیام استفاده می‌کند.

Firebase Performance Monitoring

Performance Monitoring از شناسه‌های نصب Firebase برای محاسبه تعداد نصب‌های منحصر به فرد Firebase که به منابع شبکه دسترسی دارند استفاده می‌کند تا اطمینان حاصل شود که الگوهای دسترسی به اندازه کافی ناشناس هستند. همچنین از شناسه‌های نصب Firebase به همراه Firebase Remote Config برای مدیریت نرخ گزارش رویدادهای عملکرد استفاده می‌کند.

Firebase Remote Config

Remote Config از شناسه‌های نصب Firebase برای انتخاب مقادیر پیکربندی جهت بازگشت به دستگاه‌های کاربر نهایی استفاده می‌کند.

Firebase ML

اعتبارنامه‌هایی به نام توکن‌های احراز هویت نصب توسط Firebase ML برای احراز هویت دستگاه هنگام تعامل با نمونه‌های برنامه، به عنوان مثال، برای توزیع مدل‌های توسعه‌دهنده به نمونه‌های برنامه، استفاده می‌شوند.

تقسیم‌بندی کاربر در فایربیس

فضای ذخیره‌سازی تقسیم‌بندی کاربران فایربیس، شناسه‌های نصب Firebase و ویژگی‌ها و بخش‌های مرتبط را ذخیره می‌کند تا اطلاعات هدف‌گیری را در اختیار سایر سرویس‌های فایربیس که از آنها استفاده می‌کنند، قرار دهد.

معمولاً سرویس‌های فایربیس از سرویس نصب Firebase بدون نیاز به تعامل مستقیم توسعه‌دهندگان با FIS API استفاده می‌کنند. با این حال، مواردی وجود دارد که توسعه‌دهندگان برنامه ممکن است بخواهند مستقیماً FIS API را فراخوانی کنند، مانند:

  • برای حذف یک نسخه نصب شده Firebase و داده‌های مرتبط با آن.
  • برای بازیابی شناسه‌ها (شناسه‌های نصب Firebase ) به منظور هدف قرار دادن نصب‌های خاص برنامه‌ها.
  • برای بازیابی توکن‌های احراز هویت نصب جهت تأیید اعتبار نصب‌های Firebase.

برای شروع فراخوانی مستقیم FIS API، SDK را به برنامه خود اضافه کنید.

کیت توسعه نرم‌افزار (SDK) نصب Firebase را به برنامه خود اضافه کنید.

آی‌او‌اس+

  1. وابستگی مربوط به نصب‌های Firebase را به Podfile خود اضافه کنید:
    pod 'FirebaseInstallations'
  2. دستور pod install اجرا کنید و فایل .xcworkspace ایجاد شده را باز کنید.
  3. ماژول FirebaseCore را در UIApplicationDelegate خود وارد کنید، و همچنین هر ماژول Firebase دیگری که app delegate شما از آن استفاده می‌کند. به عنوان مثال، برای استفاده از Cloud Firestore و Authentication :

    سویفت‌یو‌آی

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

    سویفت

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    هدف-سی

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  4. یک نمونه اشتراکی FirebaseApp در application(_:didFinishLaunchingWithOptions:) از نماینده برنامه خود پیکربندی کنید:

    سویفت‌یو‌آی

    // 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 خود پیوست کنید. همچنین باید swizzling نماینده برنامه را غیرفعال کنید. برای اطلاعات بیشتر، به دستورالعمل‌های SwiftUI مراجعه کنید.

    سویفت‌یو‌آی

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

اندروید

وابستگی مربوط به نصب Firebase در Android SDK را به فایل Gradle ماژول (سطح برنامه) خود (معمولاً app/build.gradle ) اضافه کنید:

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

جاوا اسکریپت

بسته به نحوه میزبانی برنامه وب شما، پیکربندی شما ممکن است به صورت خودکار انجام شود یا ممکن است لازم باشد شیء پیکربندی Firebase خود را به‌روزرسانی کنید.

برای مثال، اگر وابستگی‌های شما در index.html اضافه شده‌اند، وابستگی را در عنصر <head> اضافه کنید:

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

فلوتر

  1. از دایرکتوری ریشه پروژه Flutter خود، دستور زیر را برای نصب افزونه Firebase installations اجرا کنید:

    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 برای شناسایی نصب‌ها استفاده می‌کنند، حذف می‌شوند. این فرآیند در بیانیه گوگل در مورد حذف و نگهداری، در سطح بالایی شرح داده شده است.

مگر اینکه تمام سرویس‌های تولیدکننده FID را در برنامه خود غیرفعال کنید، FIS ظرف چند روز یک شناسه جدید ایجاد می‌کند. Firebase شناسه تازه ایجاد شده را به عنوان یک نصب جدید Firebase در نظر می‌گیرد و به هیچ وجه آن را با شناسه یا داده‌های قبلی مرتبط نمی‌کند.

حذف FID با فراخوانی API کلاینت

برای حذف FID های تولید شده توسط سرویس های Firebase، متد مناسب را از SDK نصب Firebase فراخوانی کنید:

سویفت

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 با فراخوانی API سرور

برای حذف یک FID با فراخوانی API سرور، اگر قبلاً Firebase Admin SDK را به سرور خود اضافه نکرده‌اید، آن را اضافه کنید .

پس از افزودن SDK، FIDها را از طریق فراخوانی تابع حذف در زبان مورد نظر خود حذف کنید (توجه: به جز Node.js، این روش‌ها منعکس‌کننده نامگذاری Instance ID هستند. با این حال، همه آنها در واقع FID را هنگام فراخوانی با هر SDK Firebase فعلی حذف می‌کنند).

نود جی اس

// 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 را با فراخوانی API سرور حذف می‌کنید، سرویس‌های Firebase فرآیند حذف داده‌های مرتبط با آن شناسه نصب را آغاز می‌کنند، پذیرش داده‌های جدید برای آن شناسه را در طول ۱-۲ روز متوقف می‌کنند و سپس به برنامه کلاینت اطلاع می‌دهند که شناسه حذف شده است. تا زمانی که 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)")
}

هدف-سی

[[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 احراز هویت کنند. برای مثال، هنگام طراحی تست‌های A/B برای Remote Config ، می‌توانید یک دستگاه تست هدفمند را با استفاده از توکن احراز هویت نصب، احراز هویت کنید.

توکن احراز هویت نصب، یک توکن حامل کوتاه‌مدت در قالب توکن وب JSON (JWT) است که حاوی اطلاعات زیر برای نصب می‌باشد:

  • شناسه نصب Firebase
  • پروژه مرتبط ( projectNumber )
  • شناسه برنامه Firebase مرتبط ( 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 جدید اختصاص داده شود، یک NSNotification با نام NSNotificationName.InstallationIDDidChange به NSNotificationCenter پیش‌فرض ارسال می‌شود.

اندروید

کلاینت‌های کاتلین و جاوا باید منطق تلاش مجدد را برای پاسخ به فراخوانی‌های ناموفق جهت بازیابی FID جدید اضافه کنند.

جاوا اسکریپت

برنامه‌های وب می‌توانند در قلاب onIdChange مشترک شوند.

هر زمان که یک FID جدید ایجاد شود، تابع فراخوانی مشترک (subscribed callback) فعال می‌شود:

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

Dart

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

مهاجرت از Instance ID به نصب‌های Firebase

قبل از معرفی نصب‌های Firebase ، Firebase برای شناسایی نصب برنامه‌ها به Instance ID SDK متکی بود. نصب‌های Firebase مزایای قابل توجهی نسبت به Instance ID در قابلیت اطمینان، عملکرد و امنیت دارند. برنامه‌های Firebase که به Instance ID SDK وابسته هستند باید به نصب‌های Firebase مهاجرت کنند.

فرآیند مهاجرت بسته به برنامه شما متفاوت است:

  • برنامه‌هایی که مستقیماً APIهای Instance ID را فراخوانی نمی‌کنند، می‌توانند با به‌روزرسانی نسخه‌های SDK خود مهاجرت کنند. اکثر برنامه‌های Firebase در این دسته قرار می‌گیرند.

  • برنامه‌هایی که صریحاً فراخوانی‌های API را به Instance ID انجام می‌دهند، باید نسخه‌های SDK را به‌روزرسانی کرده و تغییرات کد را برای جایگزینی متدهای Instance ID با نصب‌های Firebase یا معادل‌های FCM آنها ایجاد کنند. اگر برنامه شما از Instance ID برای بازیابی توکن‌های ثبت FCM استفاده می‌کند یا صریحاً از Instance ID برای هدف قرار دادن نمونه‌های برنامه یا برای هر هدف دیگری استفاده می‌کند، باید کد برنامه خود را به‌روزرسانی کنید.

در حال حاضر، FIS با شناسه قدیمی Firebase Instance ID سازگار است. حذف IID یک روش جایگزین برای درخواست حذف داده‌ها با این SDK های Firebase است:

  • iOS 6.14.0 و پایین‌تر
  • SDK های اندروید قبل از 27 فوریه 2020

این یعنی برنامه‌ها نیازی به مهاجرت به نصب‌های Firebase ندارند؛ با این حال، انجام این کار اکیداً توصیه می‌شود.

ارتقا به حداقل نسخه‌های SDK برای نصب Firebase

برای مهاجرت از Instance ID به نصب‌های Firebase ، مطمئن شوید که برنامه‌های شما حداقل از حداقل شماره نسخه‌های ذکر شده در SDK های Firebase زیر استفاده می‌کنند:

کیت توسعه نرم‌افزاری فایربیس حداقل نسخه اندروید حداقل نسخه iOS
پیام‌رسانی ابری فایربیس نسخه ۲۰.۳.۰ نسخه ۶.۳۴.۰
پیکربندی از راه دور نسخه ۱۹.۲.۰ نسخه ۶.۲۴.۰
گوگل آنالیتیکس برای فایربیس \ (SDK اندازه‌گیری) نسخه ۱۷.۴.۴ نسخه ۶.۱۸.۰
پیام‌رسانی درون‌برنامه‌ای نسخه ۱۹.۰.۷ نسخه ۶.۲۴.۰
نظارت بر عملکرد نسخه ۱۹.۰.۸ نسخه ۶.۲۱.۰
کراش‌لیتیک نسخه ۱۷.۲.۱ نسخه ۶.۲۳.۰
کیت ML نسخه ۲۲.۱.۲ نسخه ۶.۲۸.۰

به‌روزرسانی کدی که صراحتاً APIهای Instance ID را فراخوانی می‌کند

اگر برنامه اندروید یا اپل شما مستقیماً از متدهای Instance ID SDK استفاده می‌کند، می‌توانید این روش استفاده را با جایگزین‌های یکسان در SDK نصب Firebase یا SDK FCM جایگزین کنید.

بازیابی یک شناسه

روش‌های دریافت شناسه‌های نمونه با روش‌های دریافت شناسه نصب جایگزین شده‌اند. برای مثال:

قبل از

سویفت

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

قبل از معرفی Firebase Installations، کلاینت‌های FCM توکن‌های ثبت‌نام را از Instance ID بازیابی می‌کردند. اکنون، FCM SDK روش‌هایی برای بازیابی توکن ثبت‌نام ارائه می‌دهد.

قبل از

Java

FirebaseInstanceId.getInstance().getInstanceId()
        .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                if (!task.isSuccessful()) {
                    Log.w(TAG, "getInstanceId failed", task.getException());
                    return;
                }

                // Get new Instance ID token
                String token = task.getResult().getToken();

                // Log and toast
                String msg = getString(R.string.msg_token_fmt, token);
                Log.d(TAG, msg);
                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
            }
        });

Kotlin

FirebaseInstanceId.getInstance().instanceId
        .addOnCompleteListener(OnCompleteListener { task ->
            if (!task.isSuccessful) {
                Log.w(TAG, "getInstanceId failed", task.exception)
                return@OnCompleteListener
            }

            // Get new Instance ID token
            val token = task.result?.token

            // Log and toast
            val msg = getString(R.string.msg_token_fmt, token)
            Log.d(TAG, msg)
            Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
        })

سویفت

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