توفّر 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 لاختيار قيم الإعدادات التي سيتم عرضها على أجهزة المستخدمين النهائيين. |
| Firebase ML |
تستخدم خدمة Firebase ML بيانات الاعتماد المعروفة باسم رموز المصادقة الخاصة بالتثبيت للمصادقة على الأجهزة عند التفاعل مع مثيلات التطبيق، مثل توزيع نماذج المطوّرين على مثيلات التطبيق. |
| مساحة تخزين تصنيف المستخدمين في Firebase |
يخزِّن منتج "تخزين شرائح مستخدمي Firebase" Firebase معرّفات التثبيت والسمات والشرائح ذات الصلة لتوفير معلومات الاستهداف لخدمات Firebase الأخرى التي تستخدمها. |
عادةً، تستخدم خدمات Firebase خدمة Firebase عمليات التثبيت بدون أن يضطر المطوّرون إلى التفاعل مباشرةً مع واجهة برمجة التطبيقات FIS. ومع ذلك، هناك حالات قد يريد فيها مطوّرو التطبيقات إرسال طلبات مباشرة إلى واجهة برمجة التطبيقات 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 إلى ملف Gradle الخاص بالوحدة (على مستوى التطبيق) (عادةً app/build.gradle):
implementation 'com.google.firebase:firebase-installations:19.1.0'
JavaScript
استنادًا إلى طريقة استضافة تطبيق الويب، قد تتم معالجة الإعدادات تلقائيًا أو قد تحتاج إلى تعديل عنصر إعدادات Firebase.
على سبيل المثال، إذا تمت إضافة التبعيات في ملف index.html، أضِف التبعية في العنصر <head>:
<script src="/__/firebase/12.12.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.
ما لم توقِف جميع الخدمات التي تنشئ معرّفات FID في تطبيقك، تنشئ خدمة FIS معرّفًا جديدًا في غضون بضعة أيام. تعتبر Firebase المعرّف الذي تم إنشاؤه حديثًا Firebase عملية تثبيت جديدة، ولا تربطه بالمعرّف السابق أو البيانات السابقة بأي شكل من الأشكال.
حذف معرّف FID من خلال طلب بيانات من واجهة برمجة التطبيقات الخاصة بالعميل
لحذف أرقام تعريف Firebase التي أنشأتها خدمات 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، احذف معرّفات FID من خلال طلب إلى دالة الحذف باللغة التي تختارها (ملاحظة: باستثناء Node.js، تعكس هذه الطرق تسمية معرّف المثيل). ومع ذلك، تحذف جميعها معرّف FID عند استدعائها باستخدام أي حزمة حالية من حِزم تطوير البرامج (SDK) في Firebase.
Node.js
// An FIDsent from a client service SDK
const idToDelete = 'eyJhbGciOiJFUzI1N_iIs5';
admin.installations().deleteInstallation(idToDelete);
Java
// An FID sent from a client service SDK
String idToDelete = "eyJhbGciOiJFUzI1N_iIs5";
FirebaseInstanceId.getInstance().deleteInstanceIdAsync(idToDelete).get();
Python
from firebase_admin import instance_id
# An FID sent from a client service SDK
id_to_delete = 'eyJhbGciOiJFUzI1N_iIs5'
instance_id.delete_instance_id(id_to_delete)
متابعة
client, err := app.InstanceId(ctx)
if err != nil {
log.Fatalln("error initializing client", err)
}
iidToDelete := "eyJhbGciOiJFUzI1N_iIs5"
if err := client.DeleteInstanceId(ctx, iidToDelete); err != nil {
log.Fatalln("error deleting FID", err)
}
عند حذف Firebase معرّف تثبيت من خلال طلب بيانات من واجهة برمجة التطبيقات للخادم، تبدأ خدمات Firebase عملية حذف البيانات المرتبطة بمعرّف التثبيت هذا، وتتوقف عن قبول بيانات جديدة لهذا المعرّف خلال يوم إلى يومين، ثم تُعلم تطبيق العميل بأنّه تم حذف المعرّف. إلى أن ترسِل Firebase إشعارًا إلى تطبيق العميل، قد تستمر بعض خدمات التطبيق في استهداف رقم التعريف، مثلاً، قد يستمر تثبيت Firebase في تلقّي إشعارات 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 Web Token (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 إضافة منطق إعادة المحاولة للرد على المكالمات التي تعذّر إجراؤها لاسترداد معرّف FID الجديد.
JavaScript
يمكن لتطبيقات الويب الاشتراك في خطاف onIdChange.
في كل مرة يتم فيها إنشاء FID جديد، يتم تشغيل دالة رد الاتصال التي تم الاشتراك فيها:
await firebase.installations().onIdChange((newId) => { console.log(newId); // TODO: Handle new installation ID. });
Dart
FirebaseInstallations.instance.onIdChange.listen((token) {
print('FID token: $token');
});
نقل البيانات من عمليات تثبيت Instance ID إلى عمليات تثبيت Firebase
قبل طرح Firebase، كانت خدمة Firebase تعتمد على حزمة تطوير البرامج (SDK) الخاصة برقم تعريف المثيل للحصول على معرّفات عمليات تثبيت التطبيق. توفّر Firebase عمليات التثبيت مزايا كبيرة مقارنةً بمعرّف المثيل من حيث الموثوقية والأداء والأمان. يجب نقل تطبيقات Firebase التي تعتمد على حزمة تطوير البرامج (SDK) الخاصة بخدمة Instance ID إلى عمليات التثبيت 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 | الإصدار 20.3.0 | v6.34.0 |
| الإعداد عن بُعد | الإصدار 19.2.0 | v6.24.0 |
| إحصاءات Google لـ Firebase (حزمة SDK للقياس) | v17.4.4 | v6.18.0 |
| المراسلة داخل التطبيق | v19.0.7 | v6.24.0 |
| مراقبة الأداء | v19.0.8 | الإصدار 6.21.0 |
| Crashlytics | v17.2.1 | v6.23.0 |
| حزمة تعلّم الآلة | الإصدار 22.1.2 | v6.28.0 |
تعديل الرمز الذي يستدعي واجهات برمجة تطبيقات Instance ID بشكل صريح
إذا كان تطبيقك على 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 تسترد رموز التسجيل المميزة من خدمة "رقم تعريف المثيل". توفّر حزمة تطوير البرامج (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); } }];