إدارة عمليات تثبيت Firebase

توفِّر خدمة عمليات تثبيت Firebase (FIS) رقم تعريف تثبيت Firebase (FID) لكل نسخة افتراضية مثبَّتة لتطبيق Firebase. يستخدِم Firebase رقم تعريف تثبيت Firebase داخليًا. التالية:

خدمة Firebase وظائف عمليات التثبيت من Firebase
المراسلة عبر السحابة الإلكترونية من Firebase

استخدامات "المراسلة عبر السحابة الإلكترونية من Firebase" أرقام تعريف تثبيت Firebase لاستهداف الأجهزة لتسليم الرسائل.

Firebase Crashlytics

يقوم Firebase Crashlytics بتدوير تثبيت Crashlytics معرّف فريد عالمي (UUID) استنادًا إلى التغييرات في Firebase لمثيل التطبيق معرّف التثبيت. في المستقبل، رقم تعريف التثبيت لتفعيل الميزات التي تحسين خدمات إعداد تقارير الأعطال وإدارة الأعطال.

المراسلة داخل تطبيق Firebase

الاستخدامات المتعلقة بخدمة "المراسلة داخل التطبيق من Firebase" أرقام تعريف تثبيت Firebase لاستهداف الأجهزة لتسليم الرسائل.

مراقبة أداء Firebase

تستخدم ميزة "مراقبة الأداء" أرقام تعريف التثبيت من Firebase لحساب عدد عمليات تثبيت Firebase الفريدة التي يمكنها الوصول إلى موارد الشبكة، للتأكد من أن أنماط الوصول مجهولة الهوية بما فيه الكفاية. كما تستخدم أرقام تعريف التثبيت من Firebase باستخدام ميزة "الإعداد عن بُعد في Firebase" في إدارة معدّل إعداد تقارير أحداث الأداء

الإعداد عن بُعد في Firebase

تستخدم ميزة "الإعداد عن بُعد" أرقام تعريف التثبيت من Firebase لاختيار الإعدادات القيم المراد إرجاعها إلى أجهزة المستخدم النهائي.

Firebase ML

تم العثور على بيانات الاعتماد يتم استخدام الرموز المميّزة لمصادقة التثبيت من خلال تكنولوجيا تعلُّم الآلة في Firebase مصادقة الجهاز عند التفاعل مع التطبيق مثل توزيع نماذج المطوّرين على مثيلات التطبيقات.

مساحة تخزين تصنيف المستخدمين في Firebase

تخزّن مساحة تخزين تصنيف المستخدمين في Firebase أرقام تعريف تثبيت Firebase والسمات والشرائح ذات الصلة لتوفير معلومات الاستهداف إلى خدمات Firebase الأخرى التي تستخدمها

تستخدم خدمات Firebase عادةً خدمة عمليات التثبيت من Firebase بدون مطالبة المطوّرين بالتفاعل مباشرةً مع واجهة برمجة التطبيقات FIS API. ومع ذلك، هناك حالات قد يرغب فيها مطوّرو التطبيقات في الاتصال مباشرةً FIS API، مثل:

  • لحذف إحدى عمليات تثبيت Firebase والبيانات المرتبطة بالتثبيت.
  • لاسترداد المعرّفات (أرقام تعريف تثبيت Firebase) للاستهداف عمليات تثبيت تطبيقات محددة.
  • لاسترداد الرموز المميزة للمصادقة الخاصة بالتثبيت من أجل مصادقة Firebase من عمليات التثبيت.

لبدء إجراء المكالمات مباشرةً FIS API، أضف حزمة SDK إلى تطبيقك.

إضافة حزمة تطوير البرامج (SDK) لعمليات تثبيت Firebase إلى تطبيقك

iOS+

  1. أضِف التبعية لعمليات تثبيت Firebase إلى Podfile:
    pod 'FirebaseInstallations'
  2. شغِّل تطبيق "pod install" وافتح ملف ".xcworkspace" الذي تم إنشاؤه.
  3. استيراد وحدة FirebaseCore في UIApplicationDelegate بالإضافة إلى أي تطبيق آخر وحدات Firebase التي يستخدمها تطبيقك المفوَّض على سبيل المثال، لاستخدام Cloud Firestore والمصادقة:

    واجهة المستخدم

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

    واجهة المستخدم

    // 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، عليك إنشاء تفويض تطبيق وإرفاقه. إلى بنية App عبر UIApplicationDelegateAdaptor أو NSApplicationDelegateAdaptor ويجب أيضًا إيقاف إيماءة تفويض التطبيق. بالنسبة لمزيد من المعلومات، يُرجى الاطّلاع على تعليمات 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 لحزمة تطوير البرامج (SDK) لنظام التشغيل Android إلى ملف Gradle (على مستوى التطبيق) (عادةً app/build.gradle):

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

JavaScript

استنادًا إلى كيفية استضافة تطبيق الويب، قد تكون الإعدادات يتم التعامل معها تلقائيًا أو قد تحتاج إلى تحديث كائن إعداد Firebase.

على سبيل المثال، إذا تمت إضافة تبعياتك في index.html، أضف السمة التبعية في <head> العنصر:

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

Flutter

  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 لتحديد عمليات التثبيت خلال 180 يومًا. وقد تم توضيح هذه العملية على مستوى عالٍ في تقرير بيان الحذف والاحتفاظ بالبيانات.

ما لم يتم إيقاف جميع خدمات إنشاء مقياس FID في ينشئ نظام FIS معرّفًا جديدًا في غضون بضعة أيام. الإعداد عن بُعد تعتبر المعرّف الذي تم إنشاؤه حديثًا عملية تثبيت جديدة في Firebase، لا يربطه بالمعرّف السابق أو البيانات السابقة بأي شكل من الأشكال.

حذف مهلة الاستجابة الأولى من خلال طلب بيانات من واجهة برمجة تطبيقات العميل

لحذف معرّفات FID التي أنشأتها خدمات Firebase، عليك اتّباع الخطوات التالية: لاستدعاء الطريقة المناسبة من حزمة SDK لعمليات تثبيت 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+KTX

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

JavaScript

await firebase.installations().delete();

Dart

await FirebaseInstallations.instance.delete();

حذف مهلة الاستجابة الأولى من خلال طلب بيانات من واجهة برمجة التطبيقات للخادم

لحذف مقياس FID باستخدام واجهة برمجة تطبيقات الخادم عليك إضافة حزمة تطوير البرامج (SDK) لمشرف Firebase إلى خادمك، إذا لم يسبق لك إجراء ذلك.

بعد إضافة حزمة تطوير البرامج (SDK)، احذف معرّفات FID من خلال استدعاء باللغة التي اخترتها (ملاحظة: باستثناء Node.js، تكون هذه تعكس طرق مختلفة تسمية معرف المثيل. ومع ذلك، فإنهم جميعًا يحذفون مقياس FID عند طلبه باستخدام أيّ حزمة تطوير برامج (SDK) حالية لمنصّة Firebase).

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

Python

  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 باستخدام طلب بيانات من واجهة برمجة التطبيقات للخادم، يمكن لمنصة Firebase تبدأ الخدمات عملية لحذف البيانات المرتبطة بمعرف التثبيت هذا، قبول بيانات جديدة لهذا المعرّف خلال مدة تتراوح بين يوم ويومين، ثم إبلاغ العميل الذي تم حذف المعرّف. إلى أن يرسل Firebase إشعارًا إلى تطبيق العميل، قد من خدمات التطبيق قد تستمر في استهداف رقم التعريف، مثل Firebase قد يستمر تثبيت التطبيق في تلقّي إشعارات "المراسلة عبر السحابة الإلكترونية من Firebase" لبضعة ساعة.

إذا كنت تريد حذف معرّف تثبيت Firebase الحالي والاستخدام على الفور استخدام واجهة برمجة تطبيقات العميل في خدمات Firebase التي تتضمن معرّفًا جديدًا وغير ذي صلة لمعالجة الحذف.

استرداد معرّفات العملاء

وإذا كانت لديك متطلَّبات لتحديد عمليات تثبيت معيَّنة لتطبيقك، عليك إجراء ذلك من خلال استرداد معرّف تثبيت Firebase. على سبيل المثال، لإنشاء شرائح من عمليات تثبيت التطبيق لاستيراد BiqQuery، أو تنفيذ أثناء تطوير المراسلة داخل التطبيق من Firebase، يمكنك تحديد استهداف الأجهزة الصحيحة باستخدام أرقام تعريف تثبيت 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+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")
    }
}

JavaScript

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

Dart

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

استرداد الرموز المميزة لمصادقة التثبيت

يمكن لخدمات Firebase مصادقة عمليات التثبيت عبر Firebase باستخدام الرموز المميزة للمصادقة استردادها من FIS. على سبيل المثال، عند تصميم اختبارات A/B في ميزة "الإعداد عن بُعد"، يمكنك مصادقة جهاز اختباري مستهدَف باستخدام رمز مصادقة التثبيت.

الرمز المميز لمصادقة التثبيت هو رمز حامل قصير الأجل بتنسيق رمز 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+KTX

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

JavaScript

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

Dart

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

مراقبة مراحل نشاط معرّف تثبيت Firebase

أرقام تعريف تثبيت Firebase أثناء التشغيل العادي للتطبيق لا تتطلب مؤشرات FID مراقبة خاصة. ومع ذلك، يجب على التطبيقات التي تسترد "مهلة الاستجابة الأولى" (FID) وتستخدمها بشكل صريح إضافة منطق لمراقبة الحذف أو الدوران المحتمل مهلة الاستجابة الأولى (FID) إليك بعض الحالات التي يمكن حذف معرّفات FID أو تغييرها:

  • إلغاء تثبيت التطبيق أو إعادة تثبيته، مثلاً عندما يريد مستخدم نهائي عمليات التثبيت على جهاز جديد.
  • يمحو المستخدم النهائي ذاكرة التخزين المؤقت للتطبيق أو الجهاز.
  • يتم تفعيل حذف مقياس FID في الخلفية بسبب استخدام التطبيق. عدم النشاط (الحدّ الأدنى الحالي هو 270 يومًا من عدم النشاط).

عندما تواجه التطبيقات دوران 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];
}];

إشعار NSNotification المسمى NSNotificationName.InstallationIDDidChange هو لنشره في NSNotificationCenter الافتراضي عندما يتم إرسال يتم تحديد مهلة الاستجابة الأولى (FID).

Android

يجب أن يضيف عملاء Kotlin وJava منطق إعادة المحاولة للرد على المكالمات التي تعذّر تنفيذها. لاسترداد قيمة FID الجديدة.

JavaScript

يمكن لتطبيقات الويب الاشتراك في عنصر الجذب 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.

تختلف عملية نقل البيانات حسب تطبيقك:

  • يمكن نقل البيانات من خلال التطبيقات التي لا تطلب مباشرةً واجهات برمجة التطبيقات لمعرّف المثيل من خلال تحديث إصدارات حزمة تطوير البرامج (SDK) الخاصة بهم تندرج معظم تطبيقات Firebase ضمن هذه الفئة.

  • التطبيقات التي تُجري طلبات بيانات من واجهة برمجة التطبيقات بشكل صريح إلى رقم تعريف المثيل يجب أن تعدِّل إصدارات حزمة تطوير البرامج (SDK) و إجراء تغييرات على الرمز لاستبدال معرّف المثيل الطرق مع عمليات تثبيت Firebase أو مكافئات "المراسلة عبر السحابة الإلكترونية من Firebase" إذا كان تطبيقك يستخدم رقم تعريف مثيل لاسترداد الرموز المميّزة لتسجيل خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" أو استخدامات صريحة رقم تعريف المثيل لاستهداف مثيلات التطبيق أو لأي غرض آخر، يجب: تحديث رمز التطبيق.

حاليًا، FIS متوافقًا مع الأنظمة القديمة مع معرّف مثيل Firebase الذي يحمل المعرّف القديم. حذف معرّف IID هي طريقة بديلة لطلب حذف البيانات مع حِزم تطوير البرامج (SDK) التالية لمنصّة Firebase:

  • iOS 6.14.0 والإصدارات الأقدم
  • حِزم تطوير البرامج (SDK) لنظام التشغيل Android قبل 27 شباط (فبراير) 2020

وهذا يعني أنّ التطبيقات غير مطلوبة لنقل بياناتها إلى عمليات تثبيت Firebase، ومع ذلك، يوصى بشدة بالقيام بذلك.

الترقية إلى الحد الأدنى من إصدارات حزمة تطوير البرامج (SDK) لعمليات التثبيت في Firebase

لنقل البيانات من رقم تعريف المثيل إلى عمليات تثبيت Firebase، تأكَّد من التطبيقات تستخدم على الأقل الحد الأدنى من أرقام إصدارات نظام التشغيل حِزم تطوير البرامج (SDK) التالية لمنصّة Firebase:

حزمة تطوير البرامج (SDK) لمنصة Firebase الحد الأدنى لإصدار Android الحد الأدنى لإصدار iOS
المراسلة عبر السحابة الإلكترونية من Firebase الإصدار 20.3.0 الإصدار 6.34.0
الإعداد عن بُعد الإصدار 19.2.0 الإصدار 6.24.0
إحصاءات Google لبرنامج Firebase \ (حزمة تطوير البرامج (SDK) للقياس) الإصدار 17.4.4 الإصدار 6.18.0
المراسلة داخل التطبيق الإصدار 19.0.7 الإصدار 6.24.0
مراقبة الأداء الإصدار 19.0.8 الإصدار 6.21.0
Crashlytics الإصدار 17.2.1 الإصدار 6.23.0
حزمة تعلّم الآلة الإصدار 22.1.2 الإصدار 6.28.0

تعديل الرمز البرمجي الذي يستدعي صراحةً واجهات برمجة تطبيقات معرّف المثيل

إذا كان تطبيقك على Android أو Apple يستخدم مباشرةً طرق حزمة تطوير البرامج (SDK) لمعرّف المثيل، يمكنك: استبدال هذا الاستخدام ببدائل مماثلة في عمليات تثبيت Firebase SDK أو FCM SDK.

استرداد معرّف

يتم استبدال طرق الحصول على أرقام تعريف المثيلات بطرق للحصول على عمليات تثبيت رقم التعريف على سبيل المثال:

قبل

Swift

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

Objective-C

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

Java

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

Kotlin+KTX

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

بعد

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+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 على سبيل المثال:

قبل

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

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

استرداد الرمز المميز للتسجيل في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase"

قبل طرح عمليات تثبيت Firebase، كان عملاء "المراسلة عبر السحابة الإلكترونية من Firebase" رموز التسجيل المميزة التي تم استردادها من معرّف المثيل. والآن، تم تطوير حزمة تطوير البرامج للمراسلة عبر السحابة الإلكترونية من Firebase طرقًا لاسترداد الرمز المميز للتسجيل.

قبل

Java

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

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

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

Kotlin+KTX

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

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

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

Swift

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

Objective-C

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

بعد

Java

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

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

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

Kotlin+KTX

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

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

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

Swift

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

Objective-C

[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) {
  if (error != nil) {
    NSLog(@"Error getting FCM registration token: %@", error);
  } else {
    NSLog(@"FCM registration token: %@", token);
    self.fcmRegTokenMessage.text = token;
  }
}];