توفّر خدمة تثبيت Firebase (FIS) رقم تعريف تثبيت Firebase (FID) لكل نسخة افتراضية مثبّتة من تطبيق Firebase. وتستخدم خدمات Firebase التالية رقم تعريف تثبيت Firebase داخليًا:
| خدمة 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 لاختيار قيم الإعدادات التي سيتم عرضها على أجهزة المستخدمين النهائيين. تستخدم ميزة التخصيص في Remote Config معرّفات تثبيت Firebase لربط بيانات أحداث التطبيق بعمليات تثبيت Firebase من أجل توقّع قيم الإعدادات المثلى وعرضها على أجهزة المستخدمين النهائيين. |
| Firebase ML |
تستخدم خدمة Firebase ML بيانات الاعتماد التي تُسمى رموز مصادقة التثبيت لمصادقة الأجهزة عند التفاعل مع نُسخ التطبيق، على سبيل المثال، لتوزيع نماذج المطوّرين على نُسخ التطبيق. |
| Firebase User Segmentation Storage |
تخزّن خدمة Firebase User Segmentation Storage معرّفات تثبيت Firebase والسمات وشرائح المستخدمين ذات الصلة لتوفير معلومات الاستهداف لخدمات Firebase الأخرى التي تستخدمها. |
عادةً ما تستخدم خدمات Firebase خدمة عمليات تثبيت Firebase بدون مطالبة المطوّرين بالتفاعل مباشرةً مع واجهة برمجة التطبيقات FIS API. ومع ذلك، قد يحتاج مطوّرو التطبيقات في بعض الحالات إلى طلب واجهة برمجة التطبيقات Firebase Installations API مباشرةً، مثل:
- لحذف عملية تثبيت Firebase والبيانات المرتبطة بها
- استرداد المعرّفات (معرّفات تثبيت Firebase) لاستهداف عمليات تثبيت تطبيقات معيّنة
- استرداد الرموز المميّزة لمصادقة عمليات التثبيت في Firebase
لبدء طلب البيانات من واجهة برمجة تطبيقات FIS مباشرةً، أضِف حزمة تطوير البرامج (SDK) إلى تطبيقك.
إضافة حزمة تطوير البرامج (SDK) لعمليات تثبيت "Firebase" إلى تطبيقك
iOS+
- أضِف التبعية لعمليات تثبيت Firebase إلى ملف Podfile:
pod 'FirebaseInstallations'
- شغِّل
pod installوافتح ملف.xcworkspaceالذي تم إنشاؤه. - استورِد وحدة
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; // ...
- اضبط مثيلاً مشتركًا من النوع
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];
- إذا كنت تستخدم SwiftUI، عليك إنشاء مفوَّض تطبيق وإرفاقه
ببنية
Appمن خلالUIApplicationDelegateAdaptorأوNSApplicationDelegateAdaptor. يجب أيضًا إيقاف ميزة "تبديل مفوّض التطبيق". لمزيد من المعلومات، يمكنك الاطّلاع على تعليمات 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
أضِف اعتمادية حزمة تطوير البرامج (SDK) لعمليات تثبيت Firebase على Android إلى ملف Gradle للوحدة (على مستوى التطبيق) (عادةً app/build.gradle):
implementation 'com.google.firebase:firebase-installations:20.0.0'
JavaScript
استنادًا إلى طريقة استضافة تطبيق الويب، قد تتم معالجة الإعدادات تلقائيًا أو قد تحتاج إلى تعديل عنصر إعدادات Firebase.
على سبيل المثال، إذا تمت إضافة التبعيات في index.html، أضِف التبعية في العنصر <head>:
<script src="/__/firebase/13.1.0/firebase-installations.js"></script>
Flutter
من الدليل الجذري لمشروع Flutter، نفِّذ الأمر التالي لتثبيت المكوّن الإضافي لعمليات تثبيت Firebase:
flutter pub add firebase_app_installationsأعِد إنشاء مشروعك:
flutter runاستورِد المكوّن الإضافي لعمليات تثبيت Firebase:
import 'package:firebase_app_installations/firebase_app_installations.dart';
حذف عملية تثبيت Firebase
البيانات المرتبطة بعملية تثبيت Firebase هي بشكل عام غير محدِّدة للهوية الشخصية. ومع ذلك، قد يكون من المفيد منح المستخدمين خيارًا لإدارة هذه البيانات وحذفها.
تختلف أرقام تعريف تثبيت Firebase لكل عملية تثبيت لكل تطبيق، كما أنّ التطبيقات المختلفة على الجهاز نفسه لها أرقام تعريف تثبيت Firebase مختلفة. تحدّد معرّفات التثبيت في "Firebase" عمليات تثبيت التطبيقات والبيانات المرتبطة بها.
عند حذف معرّف تثبيت، تتم إزالة البيانات المرتبطة به من الأنظمة المباشرة وأنظمة الاحتفاظ بنسخة احتياطية لجميع خدمات Firebase التي تستخدم معرّفات تثبيت Firebase لتحديد عمليات التثبيت في غضون 180 يومًا. يمكنك الاطّلاع على تفاصيل هذا الإجراء في بيان Google حول الحذف والاحتفاظ بالبيانات.
ما لم يتم إيقاف جميع الخدمات التي تنشئ معرّفات تثبيت Firebase في تطبيقك، ستنشئ خدمة FIS معرّفًا جديدًا في غضون بضعة أيام. تعتبر منصة Firebase رقم التعريف الذي تم إنشاؤه حديثًا عملية تثبيت جديدة على Firebase، ولا تربطه برقم التعريف السابق أو البيانات السابقة بأي شكل من الأشكال.
حذف معرّف مثبَّت للتطبيق من خلال طلب بيانات من واجهة برمجة التطبيقات للعميل
لحذف معرّفات Firebase التي أنشأتها خدمات 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
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 من خلال طلب بيانات من واجهة برمجة التطبيقات للخادم
لحذف معرّف مثبّت Firebase من خلال طلب بيانات من واجهة برمجة تطبيقات الخادم، أضِف حزمة تطوير البرامج (SDK) لمشرف Firebase إلى خادمك، إذا لم يسبق لك إجراء ذلك.
بعد إضافة حزمة تطوير البرامج (SDK)، احذف معرّفات مثيلات Firebase من خلال استدعاء دالة الحذف باللغة التي تختارها (ملاحظة: باستثناء Node.js، تعكس هذه الطرق تسمية معرّف المثيل. ومع ذلك، فإنّها جميعًا تحذف معرّف FID عند استدعائها باستخدام أيّ حزمة Firebase 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();
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 في تلقّي إشعارات FCM لبضع ساعات.
إذا أردت حذف معرّف تثبيت Firebase الحالي واستخدام خدمات Firebase على الفور باستخدام معرّف جديد غير مرتبط، استخدِم واجهة برمجة التطبيقات للعميل لمعالجة عملية الحذف.
استرداد معرّفات العملاء
إذا كنت بحاجة إلى تحديد عمليات تثبيت معيّنة لتطبيقك، يمكنك إجراء ذلك من خلال استرداد معرّف تثبيت Firebase. على سبيل المثال، لإنشاء شرائح من عمليات تثبيت التطبيقات لاستيرادها إلى BigQuery أو لإجراء اختبارات أثناء تطوير 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") } }
JavaScript
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") } }
JavaScript
const installationToken = await firebase.installations() .getToken(/* forceRefresh */ true); console.log(installationToken);
Dart
String token = await FirebaseInstallations.instance.getToken();
مراقبة مراحل نشاط معرّف تثبيت Firebase
أثناء التشغيل العادي للتطبيق، لا تتطلّب معرّفات تثبيت Firebase (FID) مراقبة خاصة. ومع ذلك، يجب أن تضيف التطبيقات التي تسترد معرّفات Firebase وتستخدمها بشكل صريح منطقًا لمراقبة الحذف أو التغيير المحتمل لمعرّف Firebase. في ما يلي بعض الحالات التي يمكن فيها حذف معرّفات المثيلات أو تدويرها:
- إلغاء تثبيت التطبيق أو إعادة تثبيته، على سبيل المثال عندما يثبّت المستخدم النهائي التطبيق على جهاز جديد
- محو المستخدم النهائي لذاكرة التخزين المؤقت للتطبيق أو الجهاز
- يتم حذف معرّف مثيل Firebase في الخلفية بسبب عدم نشاط التطبيق (الحدّ الأقصى حاليًا هو 270 يومًا من عدم النشاط).
عندما يتم تدوير معرّف FID أو حذفه في التطبيقات في هذه الحالات، يتم تخصيص معرّف FID جديد. بالإضافة إلى ذلك، يتم حذف الرمز المميز لمصادقة التثبيت المرتبط بمعرّف مثبّت Firebase المحذوف، بغض النظر عن مدى نضجه، ويتم استبداله برمز مميز جديد لمصادقة التثبيت.
ويمكن للتطبيقات مراقبة هذه التغييرات والاستجابة لها وفقًا لذلك.
لتتبُّع عملية تدوير مفاتيح 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 التلقائي كلما تم تعيين معرّف مثيل Firebase جديد.
Android
على عملاء Kotlin وJava إضافة منطق إعادة المحاولة للاستجابة للمكالمات التي تعذّر إجراؤها لاسترداد معرّف FID الجديد.
JavaScript
يمكن لتطبيقات الويب الاشتراك في الرمز البرمجي onIdChange.
عند إنشاء معرّف مثيل Firebase جديد، يتم تشغيل دالة ردّ الاتصال التي تم الاشتراك فيها:
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 installations provides significant advantages over Instance ID in reliability, performance, and security. يجب نقل تطبيقات Firebase التي تعتمد على حزمة تطوير البرامج (SDK) لرقم تعريف المثيل إلى عمليات تثبيت Firebase.
تختلف عملية النقل حسب تطبيقك:
يمكن للتطبيقات التي لا تستدعي واجهات برمجة التطبيقات Instance ID مباشرةً نقل بياناتها من خلال تحديث إصدارات حِزم تطوير البرامج (SDK). وتندرج معظم تطبيقات Firebase ضمن هذه الفئة.
بالنسبة إلى التطبيقات التي تطلب بيانات من واجهة برمجة التطبيقات بشكل صريح إلى Instance ID، يجب تحديث إصدارات حِزم تطوير البرامج (SDK) و إجراء تغييرات على الرموز البرمجية لاستبدال طرق Instance ID بما يعادلها من Firebase installations أو FCM. إذا كان تطبيقك يستخدم "رقم تعريف المثيل" لاسترداد رموز تسجيل FCM أو يستخدم صراحةً "رقم تعريف المثيل" لاستهداف مثيلات التطبيق أو لأي غرض آخر، عليك تعديل الرمز البرمجي للتطبيق.
في الوقت الحالي، تتوافق خدمة FIS مع الأنظمة القديمة، مثل معرّف Firebase Instance ID. يُعدّ حذف معرّف مثيل Firebase طريقة بديلة لطلب حذف البيانات باستخدام حِزم تطوير البرامج (SDK) التالية من Firebase:
- الإصدار 6.14.0 من نظام التشغيل iOS والإصدارات الأقدم
- حِزم تطوير البرامج (SDK) لنظام التشغيل Android التي تم إصدارها قبل 27 فبراير 2020
هذا يعني أنّ التطبيقات ليست مُلزَمة بالانتقال إلى عمليات تثبيت Firebase، ولكن يُنصح بشدة بإجراء ذلك.
الترقية إلى الحد الأدنى من إصدارات حزمة تطوير البرامج (SDK) لعمليات تثبيت Firebase
لنقل البيانات من "معرّف المثيل" إلى عمليات تثبيت Firebase، تأكَّد من أنّ تطبيقاتك تستخدم على الأقل الحد الأدنى من أرقام الإصدارات المدرَجة لحزم Firebase SDK التالية:
| Firebase SDK | الحد الأدنى لإصدار 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 |
تعديل الرمز البرمجي الذي يطلب واجهات برمجة تطبيقات Instance ID بشكل صريح
إذا كان تطبيق Android أو Apple يستخدم مباشرةً طرق حزمة تطوير البرامج (SDK) لمعرّف المثيل، يمكنك استبدال هذا الاستخدام ببدائل مماثلة في حزمة تطوير البرامج (SDK) لعمليات تثبيت Firebase أو حزمة تطوير البرامج (SDK) لخدمة 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 Installations، كان عملاء FCM يستردّون رموز التسجيل المميّزة من Instance ID. الآن، توفّر حزمة تطوير البرامج (SDK) لخدمة 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); } }];