توفّر خدمة Firebase عمليات التثبيت (FIS) رقم تعريف Firebase عملية التثبيت (FID) لكل نسخة افتراضية تم تثبيتها من تطبيق Firebase. ويتم استخدام رقم تعريف عملية التثبيتFirebase داخليًا من خلال خدمات Firebase التالية:
خدمة Firebase | وظائف Firebase عمليات التثبيت |
---|---|
Firebase Cloud Messaging |
يستخدم Firebase Cloud Messaging Firebase أرقام تعريف التثبيت لاستهداف الأجهزة لإرسال الرسائل. |
Firebase Crashlytics |
Firebase Crashlytics تُغيّر Crashlytics قيمة معرّف فريد لجلسة قياس الأداء (UUID) استنادًا إلى التغييرات في معرّف عملية التثبيت على Firebase لنسخة التطبيق الافتراضية. في المستقبل، قد يتم استخدام رقم تعريف التثبيت لتفعيل الميزات التي تؤدي إلى تحسين خدمات إعداد تقارير الأعطال وإدارتها. |
Firebase In-App Messaging |
يستخدم Firebase In-App Messaging Firebase أرقام تعريف التثبيت لاستهداف الأجهزة لإرسال الرسائل. |
Firebase Performance Monitoring |
تستخدِم Performance Monitoring أرقام تعريف تثبيت Firebase لاحتساب عدد عمليات تثبيت Firebase الفريدة التي تحصل على إذن بالوصول إلى موارد الشبكة، لضمان أنّ أنماط الوصول مجهولة الهوية بشكل كافٍ. ويستخدم أيضًا Firebase معرّفات التثبيت مع Firebase Remote Config لإدارة معدّل إعداد تقارير أحداث الأداء. |
Firebase Remote Config |
يستخدم تطبيق Remote Config أرقام تعريف تثبيت Firebase لاختيار قيم الإعدادات التي سيتم عرضها على أجهزة المستخدمين النهائيين. |
Firebase ML |
تستخدم أداة Firebase ML بيانات الاعتماد المسماة رموز مصادقة التثبيت للقيام بمصادقة الجهاز عند التفاعل مع مثيلات التطبيق، على سبيل المثال، لتوزيع نماذج المطوّرين على مثيلات التطبيق. |
مساحة تخزين تصنيف المستخدِمين في Firebase |
تخزِّن ميزة "تخزين شرائح المستخدمين في Firebase" Firebase أرقام تعريف عمليات التثبيت والسمات والشرائح ذات الصلة لتقديم معلومات الاستهداف إلى خدمات Firebase الأخرى التي تستخدمها. |
تستخدِم خدمات Firebase عادةً خدمة Firebase installations بدون طلب المطوّرين التفاعل مباشرةً مع واجهة برمجة التطبيقات FIS API. ومع ذلك، قد يحتاج مطوّرو التطبيقات في بعض الحالات إلى طلب واجهة برمجة التطبيقات FIS 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:18.0.0'
JavaScript
استنادًا إلى طريقة استضافة تطبيقك على الويب، قد تتم معالجة الإعدادات تلقائيًا أو قد تحتاج إلى تعديل عنصر إعدادات Firebase.
على سبيل المثال، إذا تمت إضافة التبعيات في index.html، أضِف التبعيات في عنصر <head>:
<script src="/__/firebase/11.0.2/firebase-installations.js"></script>
Flutter
من الدليل الجذر لمشروع Flutter، نفِّذ الأمر التالي لتثبيت المكوّن الإضافي Firebase installations:
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 بشأن الحذف والاحتفاظ بالبيانات.
ما لم يتم إيقاف جميع الخدمات التي تنشئ معرّفات الأجهزة المتّصلة في تطبيقك، تنشئ FIS معرّفًا جديدًا في غضون بضعة أيام. تصنِّف Firebase المعرّف الذي تم إنشاؤه حديثًا على أنّه عملية تثبيت جديدة من Firebase، و لا تربطه بالمعرّف أو البيانات السابقة بأي شكل من الأشكال.
حذف معرّف FID من خلال طلب بيانات من واجهة برمجة تطبيقات العميل
لحذف أرقام 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
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 باستخدام واجهة برمجة تطبيقات للخادم، أضِف حزمة Admin SDK لمنصّة Firebase إلى خادمك، إذا لم يسبق لك إجراء ذلك.
بعد إضافة حزمة تطوير البرامج (SDK)، يمكنك حذف معرّفات FID من خلال طلب دالّة الحذف بلغة من اختيارك (ملاحظة: باستثناء Node.js، تعكس هذه الدالّات طريقة تسمية معرّف النسخة). ومع ذلك، تحذف جميع هذه الأدوات ملف IDE عند استدعائه باستخدام أي حزمة حالية من حِزم تطوير البرامج (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 إشعارًا إلى تطبيق العميل، قد تستمر بعض خدمات التطبيق في استهداف المعرّف. على سبيل المثال، قد يستمر تلقّي إشعارات FCM من عملية تثبيت Firebase لعدة ساعات.
إذا أردت حذف معرّف تثبيت 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. على سبيل المثال، عند تصميم اختبارات أ/ب لنظام التشغيل 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 أرقام تعريف عمليات التثبيت (FIDs) مراقبة خاصة. ومع ذلك، على التطبيقات التي تسترجع معرّفات FID وتستخدمها صراحةً إضافة منطق لمراقبة احتمالية حذف معرّف FID أو تناوبه. في ما يلي بعض الحالات التي يمكن فيها حذف معرّفات FID أو تدويرها:
- إلغاء تثبيت التطبيق أو إعادة تثبيته، على سبيل المثال عندما يُثبِّت مستخدم نهائي التطبيق على جهاز جديد
- يُمحِّ الرمز البرمجي للمستخدم النهائي ذاكرة التخزين المؤقت للتطبيق أو الجهاز.
- يتمّ حذف المعرّف الفريدة للجهاز في الخلفية بسبب عدم استخدام التطبيق (الحدّ الأدنى حاليًا هو 270 يومًا من عدم الاستخدام).
عندما تواجه التطبيقات عملية إعادة تدوير رقم تعريف الجهاز أو حذفه في هذين النوعَين من الحالات، يتمّ تخصيص رقم تعريف جهاز جديد لها. بالإضافة إلى ذلك، يتم حذف رمز مميّز لإذن التثبيت المرتبط بمعرّف جهاز فريد تم حذفه، بغض النظر عن مدة صلاحيته، ويتم استبداله برمز مميّز جديد لإذن التثبيت.
ويمكن للتطبيقات مراقبة هذه التغييرات والاستجابة وفقًا لذلك.
لتتبُّع عملية تدوير 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 إضافة منطق إعادة المحاولة للردّ على المكالمات التي تعذّر إجراؤها لاسترداد المعرّف الجديد للجهاز.
JavaScript
يمكن لتطبيقات الويب الاشتراك في ميزة onIdChange
hook.
عند إنشاء معرّف FID جديد، يتم بدء callback المشترَك:
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 يوفّر ميزة "عمليات التثبيت" مزايا كبيرة مقارنةً بمعرّف النسخة في ما يتعلق بالموثوقية والأداء والأمان. يجب نقل تطبيقات Firebase التي تعتمد على حزمة تطوير البرامج (SDK) لرقم تعريف المثيل إلى عمليات التثبيت Firebase.
تختلف عملية نقل البيانات حسب تطبيقك:
يمكن للتطبيقات التي لا تستدعي واجهات برمجة تطبيقات Instance ID مباشرةً نقل بياناتها من خلال تحديث إصدارات حِزم SDK. تندرج معظم تطبيقات Firebase ضمن هذه الفئة.
على التطبيقات التي تُجري طلبات بيانات صريحة من واجهة برمجة التطبيقات إلى معرّف الإصدار استبدال إصدارات حزمة تطوير البرامج و إجراء تغييرات على الرمز البرمجي لاستبدال Firebase عمليات التثبيت أو FCM المكافئ لها بطرق معرّف الإصدار. إذا كان تطبيقك يستخدم معرّف المثيل لاسترداد FCM الرموز المميّزة لتسجيل الأجهزة أو يستخدم معرّف المثيل صراحةً لاستهداف نُسخ التطبيق أو لأي غرض آخر، عليك تعديل رمز تطبيقك.
في الوقت الحالي، تتوافق ميزة FIS مع المعرّف القديم "رقم تعريف نسخة Firebase الافتراضية". حذف معرّف الجهاز المتّصل (IID) هو طريقة بديلة لطلب حذف البيانات باستخدام حِزم تطوير البرامج (SDK) التالية من Firebase:
- الإصدار 6.14.0 من نظام التشغيل iOS والإصدارات الأقدم
- حِزم 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) لـ Instance ID، يمكنك استبدال هذا الاستخدام ببدائل متطابقة في حزمة تطوير البرامج (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)") 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
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 retrieving registration tokens from Instance ID. توفّر حزمة SDK لتطبيق FCM الآن methods لاسترداد الرمز المميّز للتسجيل.
قبل
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
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
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; } }];