توفّر خدمة 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 |
يخزِّن قسم "تخزين تقسيم مستخدمي Firebase" Firebase معرّفات التثبيت والسمات والشرائح ذات الصلة لتوفير معلومات الاستهداف لخدمات Firebase الأخرى التي تستخدمها. |
عادةً، تستخدم خدمات Firebase خدمة Firebase عمليات التثبيت بدون أن يضطر المطوّرون إلى التفاعل مباشرةً مع واجهة برمجة التطبيقات FIS API. ومع ذلك، هناك حالات قد يريد فيها مطوّرو التطبيقات طلب واجهة برمجة التطبيقات FIS مباشرةً، مثل:
- لحذف عملية تثبيت 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) لعمليات التثبيت في Firebase على نظام التشغيل Android إلى ملف Gradle الخاص بالوحدة (على مستوى التطبيق) (عادةً app/build.gradle):
implementation 'com.google.firebase:firebase-installations:19.1.2'
JavaScript
استنادًا إلى طريقة استضافة تطبيق الويب، قد تتم معالجة الإعدادات تلقائيًا أو قد تحتاج إلى تعديل عنصر إعدادات Firebase.
على سبيل المثال، إذا تمت إضافة التبعيات في index.html، أضِف التبعية في العنصر <head>:
<script src="/__/firebase/12.19.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 بشأن الحذف والاحتفاظ بالبيانات.
ما لم توقِف جميع الخدمات التي تنشئ معرّفات FIS في تطبيقك، ستنشئ خدمة FIS معرّفًا جديدًا في غضون بضعة أيام. تعتبر Firebase المعرّف الذي تم إنشاؤه حديثًا Firebase عملية تثبيت جديدة، ولا تربطه بالمعرّف السابق أو البيانات السابقة بأي شكل من الأشكال.
حذف معرّف FID من خلال طلب بيانات من واجهة برمجة التطبيقات للعميل
لحذف معرّفات FID التي تنشئها خدمات Firebase، استدعِ الطريقة المناسبة من Firebase حزمة تطوير البرامج (SDK) الخاصة بعمليات التثبيت:
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 من خلال طلب بيانات من واجهة برمجة التطبيقات على الخادم
لحذف معرّف FID باستخدام طلب من واجهة برمجة تطبيقات الخادم، أضِف حزمة تطوير البرامج (SDK) لمنصة Firebase Admin إلى الخادم، إذا لم يسبق لك إجراء ذلك.
بعد إضافة حزمة SDK، احذف المعرّفات من خلال طلب إلى دالة الحذف باللغة التي تختارها (ملاحظة: باستثناء 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 معرّف التثبيت. على سبيل المثال، لإنشاء شرائح من عمليات تثبيت التطبيقات لاستيرادها إلى BiqQuery، أو لإجراء اختبار أثناء عملية Firebase In-App Messaging التطوير، يمكنك تحديد الأجهزة الصحيحة واستهدافها باستخدام Firebase أرقام تعريف التثبيت المناسبة.
لاسترداد رقم تعريف تثبيت Firebase، اتّبِع الخطوات التالية:
Swift
do { let id = try await Installations.installations().installationID() print("Installation ID: \(id)") } catch { print("Error fetching id: \(error)") }
Objective-C
[[FIRInstallations installations] installationIDWithCompletion:^(NSString *identifier, NSError *error) { if (error != nil) { NSLog(@"Error fetching Installation ID %@", error); return; } NSLog(@"Installation ID: %@", identifier); }];
Java
FirebaseInstallations.getInstance().getId() .addOnCompleteListener(new OnCompleteListener<String>() { @Override public void onComplete(@NonNull Task<String> task) { if (task.isSuccessful()) { Log.d("Installations", "Installation ID: " + task.getResult()); } else { Log.e("Installations", "Unable to get Installation ID"); } } });
Kotlin
FirebaseInstallations.getInstance().id.addOnCompleteListener { task -> if (task.isSuccessful) { Log.d("Installations", "Installation ID: " + task.result) } else { Log.e("Installations", "Unable to get Installation ID") } }
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 في الخلفية بسبب عدم نشاط التطبيق (يبلغ الحد الأدنى حاليًا 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 التلقائي كلما تم تعيين معرّف جديد.
Android
على عملاء Kotlin وJava إضافة منطق إعادة المحاولة للرد على المكالمات التي تعذّر إجراؤها لاسترداد معرّف المثيل الجديد.
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');
});
نقل البيانات من عمليات تثبيت Instance ID إلى عمليات تثبيت Firebase
قبل طرح عمليات تثبيت Firebase، كان Firebase يعتمد على حزمة تطوير البرامج (SDK) الخاصة برقم تعريف المثيل للحصول على معرّفات عمليات تثبيت التطبيق. توفّر معرّفات Firebase مزايا كبيرة مقارنةً بمعرّف المثيل من حيث الموثوقية والأداء والأمان. يجب نقل بيانات تطبيقات Firebase التي تعتمد على حزمة تطوير البرامج (SDK) الخاصة برقم تعريف المثيل إلى عمليات التثبيت Firebase.
تختلف عملية النقل حسب تطبيقك:
يمكن نقل بيانات التطبيقات التي لا تستدعي واجهات برمجة التطبيقات الخاصة بمعرّف المثيل مباشرةً من خلال تحديث إصدارات حِزم تطوير البرامج (SDK). تندرج معظم تطبيقات Firebase ضمن هذه الفئة.
على التطبيقات التي تُجري طلبات واجهة برمجة التطبيقات بشكل صريح إلى Instance ID تحديث إصدارات حزمة تطوير البرامج (SDK) و إجراء تغييرات في الرمز لاستبدال طرق Instance ID بطرق Firebase أو FCM المكافئة. إذا كان تطبيقك يستخدم Instance ID لاسترداد رموز التسجيل FCM أو يستخدم Instance ID بشكل صريح لاستهداف مثيلات التطبيق أو لأي غرض آخر، عليك تعديل الرمز البرمجي لتطبيقك.
في الوقت الحالي، تتوافق خدمة FIS مع المعرّف القديم، وهو معرّف مثيل Firebase. حذف معرّف المثيل (IID) هو طريقة بديلة لطلب حذف البيانات باستخدام حِزم تطوير البرامج (SDK) التالية من Firebase:
- iOS 6.14.0 والإصدارات الأقدم
- حِزم تطوير البرامج (SDK) لنظام التشغيل Android التي تم إصدارها قبل 27 فبراير 2020
وهذا يعني أنّه ليس مطلوبًا نقل التطبيقات إلى عمليات تثبيت Firebase، ولكن يُنصح بشدة بإجراء ذلك.
الترقية إلى الحد الأدنى من إصدارات حزمة تطوير البرامج (SDK) لعمليات التثبيت على الأجهزة التي تعمل بالإصدار Firebase
للانتقال من Instance ID إلى عمليات تثبيت Firebase، تأكَّد من أنّ تطبيقاتك تستخدم على الأقل أرقام الإصدارات الدنيا المدرَجة لحِزم تطوير البرامج (SDK) التالية من Firebase:
| Firebase SDK | الحد الأدنى لإصدار Android | الحد الأدنى لإصدار iOS |
| Firebase Cloud Messaging | الإصدار 20.3.0 | الإصدار 6.34.0 |
| الإعداد عن بُعد | الإصدار 19.2.0 | الإصدار 6.24.0 |
| إحصاءات Google لـ Firebase (حزمة SDK للقياس) | الإصدار 17.4.4 | v6.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 يستخدم بشكل مباشر طرق Instance ID 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"، كانت تطبيقات 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); } }];