توفّر خدمة عمليات تثبيت 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 API مباشرةً، أضِف حزمة تطوير البرامج (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) لنظام التشغيل Android في Firebase إلى
ملف Gradle للوحدة (على مستوى التطبيق) (عادةً app/build.gradle):
implementation 'com.google.firebase:firebase-installations:20.0.0'
JavaScript
بناءً على طريقة استضافة تطبيق الويب، قد تتم معالجة الإعدادات تلقائيًا أو قد تحتاج إلى تعديل عنصر إعدادات Firebase.
على سبيل المثال، إذا تمت إضافة التبعيات في index.html، أضِف التبعية في عنصر <head>:
<script src="/__/firebase/13.0.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، ولا تربطه برقم التعريف السابق أو البيانات السابقة بأي شكل من الأشكال.
حذف معرّف FID من خلال طلب بيانات من واجهة برمجة التطبيقات للعميل
لحذف معرّفات 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();
حذف معرّف مثيل Firebase من خلال طلب بيانات من واجهة برمجة التطبيقات للخادم
لحذف معرّف مثبّت Firebase من خلال طلب بيانات من واجهة برمجة تطبيقات الخادم، أضِف حزمة تطوير البرامج (SDK) لمشرف Firebase إلى الخادم، إذا لم يسبق لك إجراء ذلك.
بعد إضافة حزمة تطوير البرامج (SDK)، احذف معرّفات مثيلات Firebase من خلال استدعاء دالة الحذف باللغة التي تختارها (ملاحظة: باستثناء 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 في تلقّي إشعارات 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) مراقبة خاصة. ومع ذلك، يجب أن تضيف التطبيقات التي تسترد معرّفات 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 التلقائي كلما تم تعيين معرّف مثبّت 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"
لنقل البيانات من Instance ID إلى عمليات تثبيت 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 يستردّون رموز التسجيل المميّزة من "رقم تعريف المثيل". توفّر حزمة تطوير البرامج (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); } }];