مدیریت نصب‌ها و شناسه‌های Firebase

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

خدمات Firebase کارکردهای Firebase نصب
Firebase Cloud Messaging

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

Firebase Crashlytics

‫Firebase Crashlytics شناسه یکتای نصب 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 شناسه نصب برای انتخاب مقادیر پیکربندی برای بازگرداندن به دستگاه‌های کاربر نهایی استفاده می‌کند. ویژگی شخصی‌سازی Remote Config از شناسه‌های نصب Firebase برای مرتبط کردن داده‌های رویداد برنامه با نصب‌های Firebase استفاده می‌کند تا مقادیر پیکربندی بهینه را برای دستگاه‌های کاربر نهایی پیش‌بینی و برگرداند.

Firebase ML

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

فضای ذخیره‌سازی بخش‌بندی کاربر Firebase

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

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

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

برای شروع کار با فراخوانی مستقیم «میانای برنامه‌سازی کاربردی FIS»، کیت توسعه نرم‌افزار را به برنامه‌تان اضافه کنید.

کیت توسعه نرم‌افزار نصب‌های Firebase را به برنامه‌تان اضافه کنید

‫iOS+‎

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

    SwiftUI

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

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

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

    SwiftUI

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  5. اگر از SwiftUI استفاده می‌کنید، باید نماینده برنامه ایجاد کنید و آن را ازطریق UIApplicationDelegateAdaptor یا NSApplicationDelegateAdaptor به ساختار App پیوست کنید. همچنین باید تغییرات در نماینده برنامه را غیرفعال کنید. برای اطلاعات بیشتر، دستورالعمل‌های SwiftUI را ببینید.

    SwiftUI

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

Android

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

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

جاوا اسکریپت

بسته به اینکه برنامه وب شما چگونه میزبانی می‌شود، پیکربندی شما ممکن است به‌طور خودکار مدیریت شود یا ممکن است لازم باشد شیء پیکربندی Firebase خود را به‌روز کنید.

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

<script src="/__/firebase/12.19.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 شناسه نصب، نصب‌های برنامه و داده‌های مرتبط با آن نصب‌های برنامه را شناسایی می‌کند.

وقتی شناسه نصب را حذف می‌کنید، داده‌های مرتبط با آن شناسه نصب ظرف ۱۸۰ روز از سیستم‌های زنده و پشتیبان همه سرویس‌های Firebase که از شناسه‌های نصب Firebase برای شناسایی نصب‌ها استفاده می‌کنند برداشته می‌شود. این فرایند در سطح بالا در بیانیه Google درباره حذف و نگهداری توضیح داده شده است.

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

حذف کردن FID با فراخوانی API مشتری

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

Swift

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

Objective-C

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

Java

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

Kotlin

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

جاوا اسکریپت

await firebase.installations().delete();

Dart

await FirebaseInstallations.instance.delete();

حذف کردن FID با تماس میانای برنامه‌سازی کاربردی سرور

برای حذف کردن FID با فراخوانی API سرور، اگر قبلاً این کار را نکرده‌اید، «کیت توسعه نرم‌افزار سرپرست Firebase» را به سرورتان اضافه کنید.

پس‌از اضافه شدن «کیت توسعه نرم‌افزار»، ازطریق فراخوانی تابع حذف در زبان انتخابی‌تان، «شناسه‌های تبلیغ‌کننده» را حذف کنید (توجه: به‌جز Node.js، این روش‌ها نام‌گذاری «شناسه نمونه» را منعکس می‌کنند. بااین‌حال، همه آن‌ها درواقع وقتی با هریک از «کیت‌های توسعه نرم‌افزار Firebase» فعلی فراخوانی شوند، FID را حذف می‌کنند.

Node.js

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

admin.installations().deleteInstallation(idToDelete);

Java

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

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

پایتون

  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:

Swift

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

Objective-C

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

Java

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

Kotlin

FirebaseInstallations.getInstance().id.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        Log.d("Installations", "Installation ID: " + task.result)
    } else {
        Log.e("Installations", "Unable to get Installation ID")
    }
}

جاوا اسکریپت

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

Dart

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

بازیابی کردن کدهای اصالت‌سنجی نصب

سرویس‌های Firebase می‌توانند نصب‌های Firebase را با کدهای اصالت‌سنجی دریافت‌شده از FIS اصالت‌سنجی کنند. برای مثال، هنگام طراحی آزمایش‌های A/B برای Remote Config، می‌توانید دستگاه آزمایشی هدف‌گذاری‌شده را بااستفاده از کد اصالت‌سنجی نصب اصالت‌سنجی کنید.

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

  • شناسه نصب Firebase
  • پروژه منسوب (projectNumber)
  • شناسه برنامه Firebase مرتبط (appId)
  • تاریخ انقضای رمز

کد اصالت‌سنجی نصب قابل‌لغو نیست و تا تاریخ انقضای آن معتبر باقی می‌ماند. طول عمر پیش‌فرض داده‌واحد یک هفته است.

برای بازیابی کردن کد اصالت نصب:

Swift

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

Objective-C

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

Java

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

Kotlin

val forceRefresh = true
FirebaseInstallations.getInstance().getToken(forceRefresh)
    .addOnCompleteListener { task ->
        if (task.isSuccessful) {
            Log.d("Installations", "Installation auth token: " + task.result?.token)
        } else {
            Log.e("Installations", "Unable to get Installation auth token")
        }
    }

جاوا اسکریپت

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

Dart

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

بر چرخه عمر شناسه نصب Firebase نظارت کنید

درطول عملکرد عادی یک برنامه، Firebase شناسه‌های نصب (FIDs) نیازی به پایش ویژه ندارند. بااین‌حال، برنامه‌هایی که به‌طور صریح «شناسه تبلیغ‌کننده» را بازیابی و استفاده می‌کنند باید منطقی برای نظارت بر حذف یا چرخش احتمالی «شناسه تبلیغ‌کننده» اضافه کنند. در اینجا چند مورد از مواردی که ممکن است شناسه‌های فایل حذف یا چرخانده شوند آورده شده است:

  • حذف نصب یا نصب مجدد برنامه، برای مثال زمانی که کاربر نهایی برنامه را روی دستگاه جدیدی نصب می‌کند.
  • کاربر نهایی حافظه پنهان برنامه یا دستگاه را پاک کند.
  • حذف FID در زیرینه به‌دلیل غیرفعال بودن برنامه راه‌اندازی می‌شود (درحال‌حاضر آستانه این مورد ۲۷۰ روز غیرفعال بودن است).

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

برنامه‌ها می‌توانند این تغییرات را نظارت کنند و متناسب با آن پاسخ دهند.

برای نظارت بر چرخش FID:

Swift

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

Objective-C

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

هرگاه FID جدیدی اختصاص داده شود، یک NSNotification به‌نام NSNotificationName.InstallationIDDidChange در NSNotificationCenter پیش‌فرض پست می‌شود.

Android

کاربران 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 برای شناسه‌های نصب‌های برنامه به «کیت توسعه نرم‌افزار شناسه نمونه» متکی بود. نصب‌های Firebase مزایای قابل‌توجهی نسبت‌به «شناسه نمونه» در قابلیت اطمینان، عملکرد، و امنیت دارد. برنامه‌های Firebase که به «کیت توسعه نرم‌افزار شناسه نمونه» وابسته هستند باید به نصب‌های Firebase منتقل شوند.

فرایند انتقال براساس برنامه شما متفاوت است:

  • برنامه‌هایی که مستقیماً «میاناهای برنامه‌سازی کاربردی شناسه نمونه» را فراخوانی نمی‌کنند می‌توانند با به‌روزرسانی نسخه‌های کیت توسعه نرم‌افزار خود انتقال دهند. بیشتر برنامه‌های Firebase در این دسته قرار می‌گیرند.

  • برنامه‌هایی که به‌طور صریح با «میانای برنامه‌سازی کاربردی» «شناسه نمونه» تماس می‌گیرند باید نسخه‌های کیت توسعه نرم‌افزار را به‌روز کنند و تغییرات کد ایجاد کنند تا روش‌های «شناسه نمونه» را با نصب‌های Firebase یا معادل‌های FCM جایگزین کنند. اگر برنامه شما از «شناسه نمونه» برای بازیابی نشان‌های ثبت FCM استفاده می‌کند یا به‌طور صریح از «شناسه نمونه» برای هدف‌یابی نمونه‌های برنامه یا برای هر هدف دیگری استفاده می‌کند، باید کد برنامه‌تان را به‌روز کنید.

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

  • ‫iOS نسخه ۶.۱۴.۰ و پایین‌تر
  • کیت‌های توسعه نرم‌افزار Android قدیمی‌تر از ۲۷ فوریه ۲۰۲۰

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

درحال ارتقا به حداقل نسخه‌های کیت توسعه نرم‌افزار برای Firebase نصب

برای انتقال از «شناسه نمونه» به نصب‌های Firebase، مطمئن شوید که برنامه‌هایتان از حداقل نسخه‌های فهرست‌شده زیر از «کیت‌های توسعه نرم‌افزار Firebase» استفاده می‌کنند:

کیت توسعه نرم‌افزار Firebase حداقل نسخه Android حداقل نسخه iOS
پیام‌رسانی ابریِ Firebase v20.3.0 v6.34.0
پیکربندی ازراه‌دور v19.2.0 v6.24.0
‫Google Analytics برای Firebase \ (کیت توسعه نرم‌افزار اندازه‌گیری) v17.4.4 v6.18.0
پیام‌رسانی درون‌برنامه‌ای v19.0.7 v6.24.0
پایشگر کارایی v19.0.8 v6.21.0
Crashlytics v17.2.1 v6.23.0
ML Kit v22.1.2 v6.28.0

به‌روزرسانی کدی که به‌طور صریح «میاناهای برنامه‌سازی کاربردی شناسه نمونه» را فراخوانی می‌کند

اگر برنامه Android یا Apple شما مستقیماً از روش‌های «کیت توسعه نرم‌افزار شناسه نمونه» استفاده می‌کند، می‌توانید آن استفاده را با جایگزین‌های یکسان در کیت توسعه نرم‌افزار نصب‌های Firebase یا کیت توسعه نرم‌افزار FCM جایگزین کنید.

درحال بازیابی شناسه

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

قبل‌از

Swift

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching remote FCM registration token: \(error)")
  } else if let token = token {
    print("Remote instance ID token: \(token)")
  }
}

Objective-C

[[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"Error fetching the remote FCM registration token: %@", error);
  } else {
    NSLog(@"Remote FCM registration token: %@", token);
    NSString* message =
      [NSString stringWithFormat:@"FCM registration token: %@", token];
    // display message
    NSLog(@"%@", message);
  }
}];

Java

FirebaseInstanceId.getInstance().getInstanceId()
        .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                Log.d("IID_TOKEN", task.getResult().getToken());
            }
        });

Kotlin

FirebaseInstanceId.getInstance().instanceId
        .addOnSuccessListener { result ->
            Log.d("IID_TOKEN", result.token)
        }

بعداز

Swift

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

Objective-C

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

Java

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

Kotlin

FirebaseInstallations.getInstance().id.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        Log.d("Installations", "Installation ID: " + task.result)
    } else {
        Log.e("Installations", "Unable to get Installation ID")
    }
}

حذف شناسه

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

قبل‌از

Swift

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

Objective-C

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

Android

FirebaseInstanceId.deleteInstanceId();

بعداز

Swift

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

Objective-C

- (void)deleteWithCompletion:(nonnull void (^)(NSError *_Nullable))completion;

Java

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

Kotlin

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

درحال بازیابی کد ثبت FCM

قبل‌از معرفی «نصب‌های Firebase»، 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()
        })

Swift

InstanceID.instanceID().instanceID { result, error in
  if let error = error {
    print("Error fetching instance ID: \(error)")
  } else if let result = result {
    print("Instance ID token: \(result.token)")
  }
}

Objective-C

[[FIRInstanceID instanceID] instanceIDWithHandler:^(FIRInstanceIDResult * _Nullable result,
                                                    NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"Error fetching instance ID: %@", error);
  } else {
    NSLog(@"Instance ID token: %@", result.token);
  }
}];

بعداز

Java

FirebaseMessaging.getInstance().getToken()
    .addOnCompleteListener(new OnCompleteListener<String>() {
        @Override
        public void onComplete(@NonNull Task<String> task) {
          if (!task.isSuccessful()) {
            Log.w(TAG, "Fetching FCM registration token failed", task.getException());
            return;
          }

          // Get new FCM registration token
          String token = task.getResult();

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

Kotlin

FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
    if (!task.isSuccessful) {
        Log.w(TAG, "Fetching FCM registration token failed", task.exception)
        return@OnCompleteListener
    }

    // Get new FCM registration token
    val token = task.result

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

Swift

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching remote FCM registration token: \(error)")
  } else if let token = token {
    print("Remote instance ID token: \(token)")
  }
}

Objective-C

[[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"Error fetching the remote FCM registration token: %@", error);
  } else {
    NSLog(@"Remote FCM registration token: %@", token);
    NSString* message =
      [NSString stringWithFormat:@"FCM registration token: %@", token];
    // display message
    NSLog(@"%@", message);
  }
}];