שירות התקנות 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 In-App Messaging משתמש במזהי התקנה של Firebase כדי למקד למכשירים להעברת הודעות. |
ניטור ביצועי Firebase | ניטור ביצועים משתמש במזהי התקנה של Firebase כדי לחשב את מספר ההתקנות הייחודיות של Firebase שניגשות למשאבי רשת, כדי להבטיח שדפוסי הגישה אנונימיים מספיק. הוא גם משתמש במזהי התקנה של Firebase עם Firebase Remote Config כדי לנהל את קצב הדיווח על אירועי ביצועים. |
תצורה מרחוק של Firebase | 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 ובאימות:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
מָהִיר
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()
מָהִיר
// 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() } } } }
דְמוּי אָדָם
הוסף את התלות של Firebase התקנות Android SDK לקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל app/build.gradle
):
implementation 'com.google.firebase:firebase-installations:17.1.4'
JavaScript
בהתאם לאופן האחסון של יישום האינטרנט שלך, ייתכן שהתצורה שלך תטופל אוטומטית או שתצטרך לעדכן את אובייקט התצורה של Firebase .
לדוגמה, אם התלות שלך מתווספות ב-index.html, הוסף את התלות באלמנט <head>:
<script src="/__/firebase/10.4.0/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 של הלקוח
כדי למחוק FIDs שנוצרו על ידי שירותי Firebase, קרא את השיטה המתאימה מ-Firebase installations SDK:
מָהִיר
Installations.installations().delete { error in if let error = error { print("Error deleting installation: \(error)") return } print("Installation deleted"); }
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+KTX
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 עם קריאת 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 מתחילים בתהליך למחיקת הנתונים הקשורים למזהה ההתקנה הזה, מפסיקים לקבל נתונים חדשים עבור מזהה זה במהלך 1-2 ימים, ולאחר מכן מודיעים לאפליקציית הלקוח שהזיהוי נמחק. עד ש-Firebase יודיע לאפליקציית הלקוח, חלק משירותי האפליקציה עדיין עשויים למקד את המזהה - לדוגמה, התקנה של Firebase עשויה להמשיך לקבל התראות FCM למשך מספר שעות.
אם ברצונך למחוק את מזהה ההתקנה הנוכחי של Firebase ולהשתמש מיד בשירותי Firebase עם מזהה חדש ולא קשור, השתמש בממשק API של הלקוח כדי לטפל במחיקה.
אחזר מזהי לקוחות
אם יש לך דרישה לזהות התקנות מסוימות של האפליקציה שלך, תוכל לעשות זאת על ידי אחזור מזהה ההתקנה של 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)") }
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+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") } }
JavaScript
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)") })
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+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") } }
JavaScript
const installationToken = await firebase.installations() .getToken(/* forceRefresh */ true); console.log(installationToken);
Dart
String token = await FirebaseInstallations.instance.getToken();
עקוב אחר מחזור החיים של מזהה ההתקנה של Firebase
במהלך הפעולה הרגילה של אפליקציה, מזהי התקנת Firebase (FID) אינם דורשים ניטור מיוחד. עם זאת, אפליקציות המאחזרות ומשתמשות במפורש ב-FID צריכות להוסיף היגיון כדי לנטר את המחיקה או הסיבוב הפוטנציאליים של ה-FID. להלן כמה מקרים שבהם ניתן למחוק או לסובב את FID:
- הסרה או התקנה מחדש של האפליקציה, למשל כאשר משתמש קצה מתקין במכשיר חדש.
- משתמש הקצה מנקה את המטמון של האפליקציה או המכשיר.
- מחיקת FID מופעלת ב-backend עקב חוסר פעילות של האפליקציה (כרגע הסף לכך הוא 270 ימים של חוסר פעילות).
כאשר יישומים חווים סיבוב או מחיקה של FID במקרים מסוג זה, מוקצה להם FID חדש. כמו כן, אסימון אישור ההתקנה המשויך ל-FID שנמחק נמחק, ללא קשר לבשלותו שלו, ומוחלף באסימון אישור התקנה חדש.
אפליקציות יכולות לעקוב אחר שינויים אלה ולהגיב בהתאם.
כדי לעקוב אחר סיבוב FID:
מָהִיר
installationIDObserver = NotificationCenter.default.addObserver( forName: .InstallationIDDidChange, object: nil, queue: nil ) { (notification) in // Fetch new Installation ID 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 בכל פעם שמקצים FID חדש.
דְמוּי אָדָם
לקוחות Kotlin ו-Java צריכים להוסיף לוגיקת ניסיון חוזר כדי להגיב על שיחות שנכשלו כדי לאחזר את ה-FID החדש.
JavaScript
אפליקציות אינטרנט יכולות להירשם ל- onIdChange
hook.
בכל פעם שנוצר 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 התלויות ב-SDK של מזהה מופע צריכות לעבור להתקנות Firebase.
תהליך ההעברה שונה בהתבסס על האפליקציה שלך:
אפליקציות שאינן מתקשרות ישירות לממשקי API של מזהה מופעים יכולות להעביר על ידי עדכון גרסאות ה-SDK שלהן . רוב אפליקציות Firebase נכנסות לקטגוריה זו.
אפליקציות שמבצעות במפורש קריאות API למזהה מופע חייבות לעדכן גרסאות SDK ולבצע שינויי קוד כדי להחליף את שיטות מזהה המופע בהתקנות Firebase או המקבילות שלהן ל-FCM. אם האפליקציה שלך משתמשת במזהה מופע כדי לאחזר אסימוני רישום של FCM או משתמשת במפורש במזהה מופע כדי למקד למופעי אפליקציה או לכל מטרה אחרת, תצטרך לעדכן את קוד היישום שלך.
נכון לעכשיו, FIS תואם לאחור עם המזהה הישן של Firebase Instance ID. מחיקת IID היא שיטה חלופית לבקשת מחיקת נתונים עם ערכות ה-SDK של Firebase:
- iOS 6.14.0 ומטה
- ערכות SDK של Android לפני 27 בפברואר 2020
המשמעות היא שאפליקציות אינן נדרשות לעבור להתקנות Firebase; עם זאת, מומלץ מאוד לעשות זאת.
שדרוג לגרסאות SDK מינימליות עבור התקנות Firebase
כדי לעבור ממזהה מופע להתקנות Firebase, ודא שהאפליקציות שלך משתמשות לפחות במספרי הגרסאות המינימליים המפורטים של ערכות ה-SDK הבאות של Firebase:
Firebase SDK | מינימום גרסת אנדרואיד | גרסת iOS מינימלית |
Firebase Cloud Messaging | 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 |
ערכת ML | v22.1.2 | v6.28.0 |
עדכון קוד שקורא במפורש ל-Instance ID APIs
אם אפליקציית Android או Apple שלך משתמשת ישירות בשיטות SDK של Instance ID, תוכל להחליף את השימוש הזה בחלופות זהות ב-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)" } }
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]; 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)") }
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+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)")
}
}
Objective-C
[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
if error != nil {
NSLog(@"Error deleting instance ID: %@", error);
}
}];
דְמוּי אָדָם
FirebaseInstanceId.deleteInstanceId();
לאחר
מָהִיר
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+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)" } }
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]; 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)" } }
Objective-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; } }];