توفر خدمة تثبيت Firebase (FIS) معرف تثبيت Firebase (FID) لكل مثيل مثبت لتطبيق Firebase. يتم استخدام معرف تثبيت Firebase داخليًا بواسطة خدمات Firebase التالية:
خدمة Firebase | وظيفة تثبيتات Firebase |
---|---|
المراسلة السحابية من Firebase | يستخدم Firebase Cloud Messaging معرفات تثبيت Firebase لاستهداف الأجهزة لتسليم الرسائل. |
Firebase Crashlytics | يقوم Firebase Crashlytics بتدوير UUID الخاص بتثبيت Crashlytics استنادًا إلى التغييرات التي يتم إجراؤها على معرف تثبيت Firebase الخاص بمثيل التطبيق. في المستقبل، قد يتم استخدام معرف التثبيت لتمكين الميزات التي تعمل على تحسين خدمات الإبلاغ عن الأعطال وإدارة الأعطال. |
المراسلة داخل التطبيق من Firebase | تستخدم خدمة Firebase In-App Messaging معرفات تثبيت Firebase لاستهداف الأجهزة لتسليم الرسائل. |
مراقبة أداء Firebase | تستخدم مراقبة الأداء معرفات تثبيت Firebase لحساب عدد عمليات تثبيت Firebase الفريدة التي تصل إلى موارد الشبكة، للتأكد من أن أنماط الوصول مجهولة بشكل كافٍ. ويستخدم أيضًا معرفات تثبيت Firebase مع Firebase Remote Config لإدارة معدل الإبلاغ عن أحداث الأداء. |
التكوين عن بعد لـ Firebase | يستخدم Remote Config معرفات تثبيت Firebase لتحديد قيم التكوين للعودة إلى أجهزة المستخدم النهائي. |
فايربيس مل | يتم استخدام بيانات الاعتماد التي تسمى الرموز المميزة لمصادقة التثبيت بواسطة Firebase ML لمصادقة الجهاز عند التفاعل مع مثيلات التطبيق، على سبيل المثال، لتوزيع نماذج المطورين على مثيلات التطبيق. |
تخزين تجزئة مستخدم Firebase | يقوم تخزين تقسيم مستخدم Firebase بتخزين معرفات تثبيت Firebase والسمات والشرائح ذات الصلة لتوفير معلومات الاستهداف لخدمات Firebase الأخرى التي تستخدمها. |
عادةً، تستخدم خدمات Firebase خدمة تثبيتات Firebase دون مطالبة المطورين بالتفاعل مباشرةً مع واجهة برمجة تطبيقات FIS. ومع ذلك، هناك حالات قد يرغب فيها مطورو التطبيقات في الاتصال مباشرة بـ FIS API، مثل:
- لحذف تثبيت Firebase والبيانات المرتبطة بالتثبيت.
- لاسترداد المعرفات (معرفات تثبيت Firebase) لاستهداف عمليات تثبيت تطبيقات محددة.
- لاسترداد الرموز المميزة لمصادقة التثبيت لمصادقة عمليات تثبيت Firebase.
للبدء في الاتصال مباشرة بـ FIS API، قم بإضافة SDK إلى تطبيقك.
أضف حزمة SDK لعمليات تثبيت Firebase إلى تطبيقك
دائرة الرقابة الداخلية +
- أضف تبعية عمليات تثبيت Firebase إلى ملف Podfile الخاص بك:
pod 'FirebaseInstallations'
- قم بتشغيل
pod install
وافتح ملف.xcworkspace
الذي تم إنشاؤه. - قم باستيراد وحدة
FirebaseCore
فيUIApplicationDelegate
، بالإضافة إلى أي وحدات Firebase أخرى يستخدمها مندوب تطبيقك. على سبيل المثال، لاستخدام Cloud Firestore والمصادقة:سويفتويي
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
سويفت
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
ج موضوعية
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- قم بتكوين مثيل
FirebaseApp
مشترك في طريقةapplication(_:didFinishLaunchingWithOptions:)
:سويفتويي
// Use Firebase library to configure APIs FirebaseApp.configure()
سويفت
// Use Firebase library to configure APIs FirebaseApp.configure()
ج موضوعية
// Use Firebase library to configure APIs [FIRApp configure];
- إذا كنت تستخدم SwiftUI، فيجب عليك إنشاء مفوض تطبيق وإرفاقه ببنية
App
الخاص بك عبرUIApplicationDelegateAdaptor
أوNSApplicationDelegateAdaptor
. يجب عليك أيضًا تعطيل swizzling مندوب التطبيق. لمزيد من المعلومات، راجع تعليمات SwiftUI .سويفتويي
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
ذكري المظهر
أضف التبعية لعمليات تثبيت Firebase Android SDK إلى ملف Gradle الخاص بالوحدة النمطية (على مستوى التطبيق) (عادةً app/build.gradle
):
implementation 'com.google.firebase:firebase-installations:17.2.0'
جافا سكريبت
اعتمادًا على كيفية استضافة تطبيق الويب الخاص بك، قد تتم معالجة التكوين الخاص بك تلقائيًا أو قد تحتاج إلى تحديث كائن تكوين Firebase الخاص بك.
على سبيل المثال، إذا تمت إضافة تبعياتك في ملف Index.html، فأضف التبعيات في عنصر <head>:
<script src="/__/firebase/10.7.1/firebase-installations.js"></script>
رفرفة
من الدليل الجذر لمشروع 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 باستخدام استدعاء API للعميل
لحذف معرفات FID التي تم إنشاؤها بواسطة خدمات Firebase، اتصل بالطريقة المناسبة من SDK لعمليات تثبيت Firebase:
سويفت
Installations.installations().delete { error in if let error = error { print("Error deleting installation: \(error)") return } print("Installation deleted"); }
ج موضوعية
[[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+KTX
FirebaseInstallations.getInstance().delete().addOnCompleteListener { task -> if (task.isComplete) { Log.d("Installations", "Installation deleted") } else { Log.e("Installations", "Unable to delete Installation") } }
جافا سكريبت
await firebase.installations().delete();
Dart
await FirebaseInstallations.instance.delete();
احذف FID باستخدام استدعاء API للخادم
لحذف FID من خلال استدعاء واجهة برمجة تطبيقات الخادم، أضف Firebase Admin SDK إلى خادمك ، إذا لم تكن قد قمت بذلك بالفعل.
بمجرد إضافة SDK، احذف معرفات FID من خلال استدعاء وظيفة الحذف باللغة التي تختارها (ملاحظة: باستثناء Node.js، تعكس هذه الطرق تسمية معرف المثيل. ومع ذلك، فإنها جميعًا تحذف فعليًا معرف FID عند استدعائها باستخدام أي Firebase حالي SDK).
Node.js
// An FIDsent from a client service SDK
const idToDelete = 'eyJhbGciOiJFUzI1N_iIs5';
admin.installations().deleteInstallation(idToDelete);
Java
// An FID sent from a client service SDK
String idToDelete = "eyJhbGciOiJFUzI1N_iIs5";
FirebaseInstanceId.getInstance().deleteInstanceIdAsync(idToDelete).get();
بايثون
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:
سويفت
Installations.installations().installationID { (id, error) in if let error = error { print("Error fetching id: \(error)") return } guard let id = id else { return } print("Installation ID: \(id)") }
ج موضوعية
[[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+KTX
FirebaseInstallations.getInstance().id.addOnCompleteListener { task -> if (task.isSuccessful) { Log.d("Installations", "Installation ID: " + task.result) } else { Log.e("Installations", "Unable to get Installation ID") } }
جافا سكريبت
const installationId = await firebase.installations().getId(); console.log(installationId);
Dart
String id = await FirebaseInstallations.instance.getId();
استرداد الرموز المميزة لمصادقة التثبيت
يمكن لخدمات Firebase مصادقة عمليات تثبيت Firebase باستخدام رموز المصادقة التي تم استردادها من FIS. على سبيل المثال، عند تصميم اختبارات A/B للتكوين عن بعد، يمكنك مصادقة جهاز اختبار مستهدف باستخدام رمز مصادقة التثبيت.
رمز مصادقة التثبيت هو رمز حامل قصير الأجل بتنسيق JSON web token (JWT) الذي يحتوي على المعلومات التالية للتثبيت:
- معرف تثبيت Firebase
- المشروع المرتبط (
projectNumber
) - معرف تطبيق Firebase المرتبط (
appId
) - تاريخ انتهاء صلاحية الرمز المميز
لا يمكن إلغاء رمز مصادقة التثبيت، ويظل صالحًا حتى تاريخ انتهاء صلاحيته. العمر الافتراضي للرمز المميز هو أسبوع واحد.
لاسترداد رمز مصادقة التثبيت:
سويفت
Installations.installations().authTokenForcingRefresh(true, completion: { (result, error) in if let error = error { print("Error fetching token: \(error)") return } guard let result = result else { return } print("Installation auth token: \(result.authToken)") })
ج موضوعية
[[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+KTX
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") } }
جافا سكريبت
const installationToken = await firebase.installations() .getToken(/* forceRefresh */ true); console.log(installationToken);
Dart
String token = await FirebaseInstallations.instance.getToken();
مراقبة دورة حياة معرف تثبيت Firebase
أثناء التشغيل العادي لأحد التطبيقات، لا تتطلب معرفات تثبيت Firebase (FIDs) مراقبة خاصة. ومع ذلك، فإن التطبيقات التي تسترد معرفات FID وتستخدمها بشكل صريح يجب أن تضيف منطقًا لمراقبة الحذف المحتمل لمعرفات FID أو تدويرها. فيما يلي بعض الحالات التي يمكن فيها حذف معرفات FID أو تدويرها:
- إلغاء تثبيت التطبيق أو إعادة تثبيته، على سبيل المثال عندما يقوم المستخدم النهائي بالتثبيت على جهاز جديد.
- يقوم المستخدم النهائي بمسح ذاكرة التخزين المؤقت للتطبيق أو الجهاز.
- يتم تشغيل حذف FID في الواجهة الخلفية بسبب عدم نشاط التطبيق (حاليًا الحد الأدنى لهذا هو 270 يومًا من عدم النشاط).
عندما تواجه التطبيقات تدوير FID أو حذفه في هذه الأنواع من الحالات، يتم تعيين FID جديد لها. كما يتم أيضًا حذف رمز مصادقة التثبيت المرتبط بـ FID المحذوف، بغض النظر عن تاريخ نضجه، ويتم استبداله برمز مصادقة تثبيت جديد.
يمكن للتطبيقات مراقبة هذه التغييرات والاستجابة وفقًا لذلك.
لمراقبة دوران FID:
سويفت
installationIDObserver = NotificationCenter.default.addObserver( forName: .InstallationIDDidChange, object: nil, queue: nil ) { (notification) in // Fetch new Installation ID self.fetchInstallationToken() }
ج موضوعية
__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 جديد.
ذكري المظهر
يجب على عملاء Kotlin وJava إضافة منطق إعادة المحاولة للرد على المكالمات الفاشلة لاسترداد FID الجديد.
جافا سكريبت
يمكن لتطبيقات الويب الاشتراك في ربط 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');
});
الترحيل من معرف المثيل إلى عمليات تثبيت Firebase
قبل تقديم عمليات تثبيت Firebase، اعتمد Firebase على Instance ID SDK لمعرفات عمليات تثبيت التطبيق. توفر عمليات تثبيت Firebase مزايا كبيرة مقارنة بمعرف المثيل من حيث الموثوقية والأداء والأمان. يجب أن يتم ترحيل تطبيقات Firebase التي تعتمد على Instance ID SDK إلى عمليات تثبيت Firebase.
تختلف عملية الترحيل بناءً على تطبيقك:
يمكن للتطبيقات التي لا تتصل مباشرة بواجهات برمجة تطبيقات معرف المثيل أن يتم ترحيلها عن طريق تحديث إصدارات SDK الخاصة بها . تقع معظم تطبيقات Firebase ضمن هذه الفئة.
يجب على التطبيقات التي تجري بشكل صريح استدعاءات واجهة برمجة التطبيقات لمعرف المثيل تحديث إصدارات SDK وإجراء تغييرات على التعليمات البرمجية لاستبدال أساليب معرف المثيل بعمليات تثبيت Firebase أو مكافئات FCM. إذا كان تطبيقك يستخدم معرف المثيل لاسترداد الرموز المميزة لتسجيل FCM أو يستخدم معرف المثيل بشكل صريح لاستهداف مثيلات التطبيق أو لأي غرض آخر، فستحتاج إلى تحديث رمز التطبيق الخاص بك.
حاليًا، FIS متوافق مع الإصدارات السابقة مع المعرف القديم Firebase Instance ID. يعد حذف IID طريقة بديلة لطلب حذف البيانات باستخدام حزم Firebase SDK هذه:
- دائرة الرقابة الداخلية 6.14.0 وأقل
- حزم SDK لنظام التشغيل Android أقدم من 27 فبراير 2020
وهذا يعني أن التطبيقات ليست مطالبة بالانتقال إلى عمليات تثبيت Firebase؛ ومع ذلك، يوصى بشدة بالقيام بذلك.
الترقية إلى الحد الأدنى من إصدارات SDK لعمليات تثبيت Firebase
للترحيل من معرف المثيل إلى عمليات تثبيت Firebase، تأكد من أن تطبيقاتك تستخدم على الأقل الحد الأدنى من أرقام الإصدارات المدرجة لحزم Firebase SDK التالية:
Firebase SDK | الحد الأدنى لإصدار أندرويد | الحد الأدنى لإصدار iOS |
المراسلة السحابية من Firebase | v20.3.0 | v6.34.0 |
التكوين عن بعد | v19.2.0 | v6.24.0 |
Google Analytics for Firebase \ (SDK للقياس) | v17.4.4 | v6.18.0 |
المراسلة داخل التطبيق | v19.0.7 | v6.24.0 |
مراقبة الاداء | v19.0.8 | v6.21.0 |
Crashlytics | v17.2.1 | v6.23.0 |
مجموعة مل | v22.1.2 | v6.28.0 |
تحديث التعليمات البرمجية التي تستدعي بشكل صريح واجهات برمجة تطبيقات معرف المثيل
إذا كان تطبيق Android أو Apple الخاص بك يستخدم أساليب Instance ID SDK مباشرةً، فيمكنك استبدال هذا الاستخدام ببدائل متطابقة في SDK لعمليات تثبيت Firebase أو FCM SDK.
استرداد معرف
يتم استبدال طرق الحصول على معرفات المثيلات بطرق الحصول على معرف التثبيت. على سبيل المثال:
قبل
سويفت
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)" } }
ج موضوعية
[[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+KTX
FirebaseInstanceId.getInstance().instanceId .addOnSuccessListener { result -> Log.d("IID_TOKEN", result.token) }
بعد
سويفت
Installations.installations().installationID { (id, error) in if let error = error { print("Error fetching id: \(error)") return } guard let id = id else { return } print("Installation ID: \(id)") }
ج موضوعية
[[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+KTX
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. على سبيل المثال:
قبل
سويفت
InstanceID.instanceID().deleteID { error in
if let error = error {
print("Error deleting instance ID: \(error)")
}
}
ج موضوعية
[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
if error != nil {
NSLog(@"Error deleting instance ID: %@", error);
}
}];
ذكري المظهر
FirebaseInstanceId.deleteInstanceId();
بعد
سويفت
func delete(completion: @escaping (Error?) -> Void)
ج موضوعية
- (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+KTX
FirebaseInstallations.getInstance().delete().addOnCompleteListener { task -> if (task.isComplete) { Log.d("Installations", "Installation deleted") } else { Log.e("Installations", "Unable to delete Installation") } }
استرداد رمز تسجيل FCM
قبل تقديم عمليات تثبيت Firebase، قام عملاء FCM باسترداد الرموز المميزة للتسجيل من معرف المثيل. الآن، توفر FCM SDK طرقًا لاسترداد رمز التسجيل المميز.
قبل
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+KTX
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() })
سويفت
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)" } }
ج موضوعية
[[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+KTX
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() })
سويفت
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)" } }
ج موضوعية
[[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; } }];