توفر خدمة تثبيتات Firebase (FIS) معرف تثبيت Firebase (FID) لكل مثيل مثبت لتطبيق Firebase. يتم استخدام معرّف تثبيت Firebase داخليًا بواسطة خدمات Firebase التالية:
خدمة Firebase | وظائف عمليات تثبيت Firebase |
---|---|
Firebase Cloud Messaging | يستخدم Firebase Cloud Messaging معرّفات تثبيت Firebase لاستهداف الأجهزة لتسليم الرسائل. |
Firebase Crashlytics | يقوم Firebase Crashlytics بتدوير UUID الخاص بتثبيت Crashlytics استنادًا إلى التغييرات التي تم إجراؤها على معرف تثبيت Firebase الخاص بمثيل التطبيق. في المستقبل ، يمكن استخدام معرّف التثبيت لتمكين الميزات التي تعمل على تحسين خدمات الإبلاغ عن الأعطال وإدارة الأعطال. |
المراسلة داخل تطبيق Firebase | تستخدم المراسلة داخل التطبيق من Firebase معرّفات تثبيت Firebase لاستهداف الأجهزة لتسليم الرسائل. |
مراقبة أداء Firebase | تستخدم مراقبة الأداء معرّفات تثبيت Firebase لحساب عدد عمليات تثبيت Firebase الفريدة التي تصل إلى موارد الشبكة ، للتأكد من أن أنماط الوصول مجهولة الهوية بدرجة كافية. كما أنها تستخدم معرّفات تثبيت Firebase مع Firebase Remote Config لإدارة معدل تقارير أحداث الأداء. |
تهيئة Firebase عن بُعد | يستخدم Remote Config معرّفات تثبيت Firebase لتحديد قيم التكوين للعودة إلى أجهزة المستخدم النهائي. |
Firebase ML | يتم استخدام بيانات الاعتماد التي يطلق عليها رموز مصادقة التثبيت بواسطة Firebase ML لمصادقة الجهاز عند التفاعل مع مثيلات التطبيق ، على سبيل المثال ، لتوزيع نماذج المطورين على مثيلات التطبيق. |
تخزين تجزئة مستخدمي Firebase | يخزن مخزن تقسيم مستخدمي Firebase معرّفات تثبيت Firebase والسمات والشرائح ذات الصلة لتوفير معلومات الاستهداف لخدمات Firebase الأخرى التي تستخدمها. |
عادةً ما تستخدم خدمات Firebase خدمة تثبيتات Firebase دون مطالبة المطورين بالتفاعل مباشرةً مع واجهة برمجة تطبيقات FIS. ومع ذلك ، هناك حالات قد يرغب فيها مطورو التطبيقات في الاتصال مباشرة بواجهة برمجة تطبيقات FIS ، مثل:
- لحذف تثبيت Firebase والبيانات المرتبطة بالتثبيت.
- لاسترداد المعرفات (معرفات تثبيت Firebase) من أجل استهداف عمليات تثبيت تطبيقات معينة.
- لاسترداد رموز مصادقة التثبيت لمصادقة عمليات تثبيت Firebase.
لبدء الاتصال مباشرة بواجهة برمجة تطبيقات FIS ، أضف SDK إلى تطبيقك.
أضف حزمة تطوير البرامج (SDK) الخاصة بتثبيتات Firebase إلى تطبيقك
iOS +
- أضف التبعية لعمليات تثبيت Firebase إلى Podfile:
pod 'FirebaseInstallations'
- قم بتشغيل
pod install
وافتح ملف.xcworkspace
الذي تم إنشاؤه. - قم باستيراد وحدة
FirebaseCore
في مندوبUIApplicationDelegate
، بالإضافة إلى أي وحدات Firebase أخرى يستخدمها مفوض التطبيق. على سبيل المثال ، لاستخدام Cloud Firestore والمصادقة:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
سويفت
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
ج موضوعية
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- قم بتهيئة مثيل
FirebaseApp
مشترك فيapplication(_:didFinishLaunchingWithOptions:)
:SwiftUI
// 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
. يجب عليك أيضًا تعطيل استخدام مفوض التطبيق. لمزيد من المعلومات ، راجع تعليمات SwiftUI .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.1.3'
جافا سكريبت
اعتمادًا على كيفية استضافة تطبيق الويب الخاص بك ، قد تتم معالجة التكوين الخاص بك تلقائيًا أو قد تحتاج إلى تحديث كائن تكوين Firebase .
على سبيل المثال ، إذا تمت إضافة التبعيات الخاصة بك في index.html ، فأضف التبعية في عنصر <head>:
<script src="/__/firebase/9.22.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 باستدعاء خادم API ، أضف Firebase Admin SDK إلى الخادم الخاص بك ، إذا لم تكن قد قمت بذلك بالفعل.
بمجرد إضافة SDK ، احذف FIDs من خلال استدعاء لوظيفة الحذف باللغة التي تختارها (ملاحظة: باستثناء 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 باستخدام استدعاء خادم API ، تبدأ خدمات Firebase العملية لحذف البيانات المرتبطة بمعرف التثبيت هذا ، والتوقف عن قبول البيانات الجديدة لهذا المعرف على مدار يوم أو يومين ، ثم إخطار تطبيق العميل أنه تم حذف المعرف. إلى أن يخطر Firebase تطبيق العميل ، قد تستمر بعض خدمات التطبيق في استهداف المعرف - على سبيل المثال ، قد يستمر تثبيت Firebase في تلقي إشعارات FCM لبضع ساعات.
إذا كنت تريد حذف معرف تثبيت Firebase الحالي واستخدام خدمات Firebase فورًا بمعرف جديد غير ذي صلة ، فاستخدم واجهة برمجة تطبيقات العميل للتعامل مع الحذف.
استرجع معرفات العميل
إذا كان لديك متطلب لتحديد عمليات تثبيت معينة لتطبيقك ، فيمكنك القيام بذلك عن طريق استرداد معرف تثبيت Firebase. على سبيل المثال ، لإجراء اختبار أثناء تطوير 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 لـ Remote Config ، يمكنك مصادقة جهاز اختبار مستهدف باستخدام رمز مصادقة التثبيت.
رمز مصادقة التثبيت هو رمز حامل قصير العمر بتنسيق 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 (FID) مراقبة خاصة. ومع ذلك ، يجب أن تضيف التطبيقات التي تسترد وتستخدم FIDs بشكل صريح منطقًا لمراقبة الحذف أو التدوير المحتمل لمعرفات الإدخال (FID). فيما يلي بعض الحالات التي يمكن فيها حذف FIDs أو تدويرها:
- إلغاء تثبيت التطبيق أو إعادة تثبيته ، على سبيل المثال عندما يقوم أحد المستخدمين بالتثبيت على جهاز جديد.
- يمسح المستخدم النهائي ذاكرة التخزين المؤقت للتطبيق أو الجهاز.
- يتم تشغيل حذف 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 على معرف مثيل SDK لمعرّفات عمليات تثبيت التطبيق. توفر عمليات تثبيت Firebase مزايا كبيرة مقارنة بمعرف المثيل من حيث الموثوقية والأداء والأمان. يجب أن تنتقل تطبيقات Firebase التي تعتمد على Instance ID SDK إلى عمليات تثبيت Firebase.
تختلف عملية الترحيل بناءً على تطبيقك:
يمكن للتطبيقات التي لا تستدعي واجهات برمجة تطبيقات معرّف المثيل مباشرةً الترحيل عن طريق تحديث إصدارات SDK الخاصة بها . تقع معظم تطبيقات Firebase ضمن هذه الفئة.
يجب أن تقوم التطبيقات التي تجري صراحة استدعاءات API لمعرف المثيل بتحديث إصدارات SDK وإجراء تغييرات على التعليمات البرمجية لاستبدال طرق معرف المثيل بتثبيتات Firebase أو مكافئات FCM. إذا كان تطبيقك يستخدم معرف المثيل لاسترداد الرموز المميزة للتسجيل FCM أو استخدم معرف المثيل بشكل صريح لاستهداف مثيلات التطبيق أو لأي غرض آخر ، فستحتاج إلى تحديث رمز التطبيق الخاص بك.
حاليًا ، FIS متوافق مع الإصدارات السابقة مع المعرف القديم Firebase Instance ID. يعد حذف IID طريقة بديلة لطلب حذف البيانات باستخدام مجموعات Firebase SDK:
- iOS 6.14.0 والإصدارات الأقدم
- مجموعات Android SDK قبل 27 فبراير 2020
هذا يعني أن التطبيقات ليست مطلوبة للترحيل إلى عمليات تثبيت Firebase ؛ ومع ذلك ، يوصى بشدة بالقيام بذلك.
الترقية إلى الحد الأدنى من إصدارات SDK لعمليات تثبيت Firebase
للترحيل من معرّف المثيل إلى عمليات تثبيت Firebase ، تأكد من أن تطبيقاتك تستخدم على الأقل الحد الأدنى لأرقام الإصدار المدرجة من حزم Firebase SDK التالية:
Firebase SDK | الحد الأدنى من إصدار Android | الحد الأدنى من إصدار iOS |
Firebase Cloud Messaging | الإصدار 20.3.0 | الإصدار 6.34.0 |
التكوين عن بعد | الإصدار 19.2.0 | الإصدار 6.24.0 |
Google Analytics for Firebase \ (Measurement 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 |
ML كيت | الإصدار 22.1.2 | الإصدار 6.28.0 |
تحديث التعليمات البرمجية التي تستدعي بشكل صريح واجهات برمجة تطبيقات معرف المثيل
إذا كان تطبيق Android أو Apple الخاص بك يستخدم طرق 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; } }];