سرویس نصب Firebase (FIS) برای هر نمونه نصب شده یک برنامه Firebase یک شناسه نصب Firebase (FID) ارائه میکند. شناسه نصب 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 User Segmentation Storage شناسههای نصب Firebase و ویژگیها و بخشهای مرتبط را ذخیره میکند تا اطلاعات هدفگیری را به سایر سرویسهای Firebase که از آنها استفاده میکنند ارائه دهد. |
به طور معمول، خدمات Firebase از سرویس نصب Firebase بدون نیاز به برنامهنویسان برای تعامل مستقیم با 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 // ...
سویفت
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
هدف-C
@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()
هدف-C
// Use Firebase library to configure APIs [FIRApp configure];
- اگر از SwiftUI استفاده میکنید، باید یک نماینده برنامه ایجاد کنید و آن را از طریق
UIApplicationDelegateAdaptor
یاNSApplicationDelegateAdaptor
به ساختارApp
خود متصل کنید. همچنین باید swizzling نمایندگی برنامه را غیرفعال کنید. برای اطلاعات بیشتر، دستورالعمل های 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:18.0.0'
جاوا اسکریپت
بسته به نحوه میزبانی برنامه وب شما، ممکن است پیکربندی شما به صورت خودکار مدیریت شود یا ممکن است نیاز به به روز رسانی شی پیکربندی Firebase خود داشته باشید.
به عنوان مثال، اگر وابستگی های شما در index.html اضافه شده است، وابستگی را در عنصر <head> اضافه کنید:
<script src="/__/firebase/10.13.2/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 برای شناسایی نصبها در عرض ۱۸۰ روز استفاده میکنند، حذف میشوند. این فرآیند در بیانیه Google در مورد حذف و حفظ در سطح بالایی توضیح داده شده است.
مگر اینکه تمام خدمات تولید کننده FID را در برنامه خود غیرفعال کنید، FIS ظرف چند روز یک شناسه جدید ایجاد می کند. Firebase شناسه تازه ایجاد شده را یک نصب Firebase جدید می داند و به هیچ وجه آن را با شناسه یا داده های قبلی مرتبط نمی کند.
یک FID را با تماس API مشتری حذف کنید
برای حذف FID های تولید شده توسط سرویس های Firebase، روش مناسب را از SDK نصب Firebase فراخوانی کنید:
سویفت
do { try await Installations.installations().delete() print("Installation deleted"); } catch { print("Error deleting installation: \(error)") }
هدف-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+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 اضافه شد، FID ها را از طریق فراخوانی تابع حذف در زبان انتخابی خود حذف کنید (توجه: به جز Node.js، این روش ها منعکس کننده نام گذاری Instance ID هستند. با این حال، همه آنها در واقع 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 با یک شناسه جدید و نامرتبط استفاده کنید، از API مشتری برای مدیریت حذف استفاده کنید.
بازیابی شناسه های مشتری
اگر نیاز به شناسایی نصبهای خاصی از برنامه خود دارید، میتوانید با بازیابی شناسه نصب Firebase این کار را انجام دهید. به عنوان مثال، برای ایجاد بخشهایی از نصبهای برنامه برای وارد کردن BiqQuery، یا انجام آزمایش در طول توسعه Firebase In-App Messaging ، میتوانید با استفاده از شناسههای نصب Firebase مربوطه دستگاههای صحیح را شناسایی و هدفگیری کنید.
برای بازیابی شناسه نصب Firebase :
سویفت
do { let id = try await Installations.installations().installationID() print("Installation ID: \(id)") } catch { print("Error fetching id: \(error)") }
هدف-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+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 (JWT) است که حاوی اطلاعات زیر برای نصب است:
- شناسه نصب Firebase
- پروژه مرتبط (
projectNumber
) - شناسه برنامه Firebase مرتبط (
appId
) - تاریخ انقضای توکن
نشانه تأیید اعتبار نصب قابل ابطال نیست و تا تاریخ انقضا معتبر باقی می ماند. طول عمر توکن پیش فرض یک هفته است.
برای بازیابی رمز تأیید نصب:
سویفت
do { let result = try await Installations.installations() .authTokenForcingRefresh(true) print("Installation auth token: \(result.authToken)") } catch { print("Error fetching token: \(error)") }
هدف-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+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();
چرخه عمر ID نصب Firebase را نظارت کنید
در طول عملکرد عادی یک برنامه، شناسه های نصب Firebase (FID) به نظارت خاصی نیاز ندارند. با این حال، برنامه هایی که به صراحت 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 Task { await self.fetchInstallationToken() } }
هدف-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 جدید اختصاص داده شود.
اندروید
کلاینت های 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');
});
از Instance ID به تاسیسات Firebase مهاجرت کنید
قبل از معرفی نصبهای Firebase ، Firebase برای شناسههای نصب برنامه بر روی Instance ID SDK تکیه میکرد. نصب Firebase مزایای قابل توجهی نسبت به Instance ID در قابلیت اطمینان، عملکرد و امنیت دارد. برنامههای Firebase که به Instance ID SDK وابسته هستند باید به تأسیسات Firebase منتقل شوند.
فرآیند مهاجرت بر اساس برنامه شما متفاوت است:
برنامههایی که مستقیماً با Instance ID API تماس نمیگیرند، میتوانند با بهروزرسانی نسخههای SDK خود مهاجرت کنند. اکثر برنامه های Firebase در این دسته قرار می گیرند.
برنامههایی که صراحتاً با Instance ID تماسهای API برقرار میکنند، باید نسخههای SDK را بهروزرسانی کنند و کد را تغییر دهند تا روشهای Instance ID را با نصبهای Firebase یا معادلهای FCM خود جایگزین کنند. اگر برنامه شما از Instance ID برای بازیابی نشانههای ثبت FCM استفاده میکند یا صراحتاً از Instance ID برای هدفیابی نمونههای برنامه یا هر هدف دیگری استفاده میکند، باید کد برنامه خود را بهروزرسانی کنید.
در حال حاضر، FIS با شناسه قدیمی Firebase Instance ID سازگار است. حذف یک IID یک روش جایگزین برای درخواست حذف داده با این SDK های Firebase است:
- iOS 6.14.0 و پایین تر
- Android SDK زودتر از 27 فوریه 2020
این بدان معناست که برنامهها نیازی به مهاجرت به نصبهای Firebase ندارند. با این حال، انجام این کار به شدت توصیه می شود.
ارتقاء به حداقل نسخه های SDK برای نصب های Firebase
برای انتقال از Instance ID به نصبهای Firebase ، مطمئن شوید که برنامههای شما حداقل از حداقل شمارههای نسخه فهرستشده SDKهای Firebase زیر استفاده میکنند:
Firebase SDK | حداقل نسخه اندروید | حداقل نسخه iOS |
Firebase Cloud Messaging | نسخه 20.3.0 | نسخه 6.34.0 |
پیکربندی از راه دور | نسخه 19.2.0 | نسخه 6.24.0 |
Google Analytics برای 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 |
کیت ام ال | نسخه 22.1.2 | نسخه 6.28.0 |
بهروزرسانی کدی که به صراحت از APIهای Instance ID فراخوانی میکند
اگر برنامه 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)" } }
هدف-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+KTX
FirebaseInstanceId.getInstance().instanceId .addOnSuccessListener { result -> Log.d("IID_TOKEN", result.token) }
بعد از
سویفت
do { let id = try await Installations.installations().installationID() print("Installation ID: \(id)") } catch { print("Error fetching id: \(error)") }
هدف-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+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)")
}
}
هدف-C
[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
if error != nil {
NSLog(@"Error deleting instance ID: %@", error);
}
}];
اندروید
FirebaseInstanceId.deleteInstanceId();
بعد از
سویفت
func delete(completion: @escaping (Error?) -> Void)
هدف-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+KTX
FirebaseInstallations.getInstance().delete().addOnCompleteListener { task -> if (task.isComplete) { Log.d("Installations", "Installation deleted") } else { Log.e("Installations", "Unable to delete Installation") } }
بازیابی رمز ثبت FCM
قبل از معرفی Firebase Installations، مشتریان FCM توکن های ثبت نام را از Instance ID بازیابی می کردند. اکنون، 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)" } }
هدف-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+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)" } }
هدف-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; } }];