שירות ההתקנות (FIS) מספק Firebase מזהה התקנה (FID) לכל מופע מותקן של אפליקציית Firebase. 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 כדי לבחור ערכי הגדרה להחזרה למכשירי משתמשי הקצה. התכונה Remote Config התאמה אישית משתמשת בFirebaseמזהי התקנות כדי לשייך נתוני אירועים באפליקציה לFirebase התקנות, במטרה לחזות ולהחזיר ערכי הגדרה אופטימליים למכשירים של משתמשי הקצה. |
| Firebase ML |
Firebase ML משתמש בפרטי כניסה שנקראים אסימוני אימות של התקנה לצורך אימות המכשיר בזמן אינטראקציה עם מופעים של אפליקציות, למשל כדי להפיץ מודלים של מפתחים למופעים של אפליקציות. |
| אחסון של פילוח משתמשים ב-Firebase |
מאגר הנתונים של פילוח משתמשים ב-Firebase מאחסן Firebase מזהי התקנה ומאפיינים ופלחים קשורים כדי לספק מידע על טירגוט לשירותים אחרים של Firebase שמשתמשים בהם. |
בדרך כלל, שירותי Firebase משתמשים בשירות Firebase installations בלי שמפתחים צריכים לבצע אינטראקציה ישירה עם FIS API. עם זאת, יש מקרים שבהם מפתחי אפליקציות ירצו להפעיל ישירות את FIS API, למשל:
- כדי למחוק התקנה של Firebase ונתונים שקשורים להתקנה.
- כדי לאחזר מזהים (Firebase מזהי התקנה) לצורך טירגוט של התקנות ספציפיות של אפליקציות.
- כדי לאחזר אסימוני אימות של התקנות כדי לאמת התקנות של Firebase.
כדי להתחיל לבצע קריאות ישירות ל-FIS API, צריך להוסיף את ה-SDK לאפליקציה.
הוספה של Firebase installations SDK לאפליקציה
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. צריך גם להשבית את החלפת השיטות ב-app delegate. מידע נוסף זמין בהוראות ל-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
מוסיפים את התלות ב-Firebase Installations Android SDK לקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל app/build.gradle):
implementation 'com.google.firebase:firebase-installations:19.1.2'
JavaScript
בהתאם לאופן האירוח של אפליקציית האינטרנט, יכול להיות שההגדרה תטופל באופן אוטומטי או שתצטרכו לעדכן את אובייקט ההגדרה של Firebase.
לדוגמה, אם יחסי התלות מתווספים בקובץ index.html, מוסיפים את יחסי התלות ברכיב <head>:
<script src="/__/firebase/12.19.0/firebase-installations.js"></script>
Flutter
מתיקיית השורש של פרויקט Flutter, מריצים את הפקודה הבאה כדי להתקין את הפלאגין Firebase installations:
flutter pub add firebase_app_installationsבונים מחדש את הפרויקט:
flutter runמייבאים את הפלאגין Firebase installations:
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, צריך להפעיל את השיטה המתאימה מתוך Firebase installations 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 באמצעות קריאה ל-API של השרת
כדי למחוק FID באמצעות קריאה ל-API של השרת, צריך להוסיף את SDK של Firebase לאדמינים לשרת, אם עדיין לא עשיתם זאת.
אחרי שמוסיפים את ה-SDK, אפשר למחוק מזהי FID באמצעות קריאה לפונקציית המחיקה בשפה הרצויה (הערה: למעט Node.js, השיטות האלה משקפות את השמות של מזהי המופעים). אבל בפועל, כל הפונקציות האלה מוחקות את מזהה Firebase (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();
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 באמצעות קריאה ל-API של השרת, שירותי Firebase מתחילים בתהליך של מחיקת הנתונים שמשויכים למזהה ההתקנה הזה, מפסיקים לקבל נתונים חדשים עבור המזהה הזה במהלך יום או יומיים, ואז מודיעים לאפליקציית הלקוח שהמזהה נמחק. עד ש-Firebase ישלח הודעה לאפליקציית הלקוח, יכול להיות שחלק מהשירותים של האפליקציה עדיין יטרגטו את המזהה – לדוגמה, יכול להיות שהתקנה של Firebase תמשיך לקבל FCMהתראות למשך כמה שעות.
אם רוצים למחוק את מזהה ההתקנה הנוכחי של Firebase ולהשתמש מיד בשירותי Firebase עם מזהה חדש שלא קשור למזהה הקודם, צריך להשתמש ב-API של הלקוח כדי לטפל במחיקה.
אחזור מזהי לקוחות
אם אתם צריכים לזהות התקנות ספציפיות של האפליקציה, תוכלו לעשות זאת על ידי אחזור Firebase מזהה ההתקנה. לדוגמה, כדי ליצור פלחים של התקנות אפליקציות לייבוא ל-BigQuery, או כדי לבצע בדיקות במהלך 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. לדוגמה, כשמתכננים בדיקות A/B ל-Remote Config, אפשר לאמת מכשיר בדיקה מטורגט באמצעות טוקן אימות של התקנה.
אסימון אימות להתקנה הוא אסימון bearer לזמן קצר בפורמט 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מזהי התקנה (FID). עם זאת, אפליקציות שמחלצות ומשתמשות במזהי מופע 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 שמוגדר כברירת מחדל בכל פעם שמוקצה FID חדש.
Android
לקוחות Kotlin ו-Java צריכים להוסיף לוגיקה של ניסיון חוזר כדי להגיב לקריאות שנכשלו לאחזור ה-FID החדש.
JavaScript
אפליקציות אינטרנט יכולות להירשם ל-hook onIdChange.
בכל פעם שנוצר FID חדש, מתבצעת הפעלה של הקריאה החוזרת (callback) שאליה נרשמתם:
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 installations מספקת יתרונות משמעותיים בהשוואה ל-Instance ID מבחינת אמינות, ביצועים ואבטחה. אפליקציות Firebase שתלויות ב-Instance ID SDK צריכות לעבור אל Firebase התקנות.
תהליך ההעברה משתנה בהתאם לאפליקציה:
אפליקציות שלא קוראות ישירות לממשקי API של מזהה מופע יכולות לעבור על ידי עדכון גרסאות ה-SDK שלהן. רוב האפליקציות של Firebase נכללות בקטגוריה הזו.
אפליקציות שמבצעות קריאות API באופן מפורש למזהה מופע חייבות לעדכן את גרסאות ה-SDK ולבצע שינויים בקוד כדי להחליף את השיטות של מזהה המופע בשיטות המקבילות של Firebase installations או FCM. אם האפליקציה שלכם משתמשת במזהה מופע כדי לאחזר FCM טוקנים של רישום או משתמשת במזהה מופע באופן מפורש כדי לטרגט מופעים של האפליקציה או לכל מטרה אחרת, תצטרכו לעדכן את קוד האפליקציה.
בשלב הזה, FIS תואם לאחור למזהה מדור קודם Firebase Instance ID. מחיקת מזהה מופע היא שיטה חלופית לבקשת מחיקת נתונים באמצעות ערכות ה-SDK הבאות של Firebase:
- iOS מגרסה 6.14.0 ומטה
- גרסאות Android SDK ישנות יותר מ-27 בפברואר 2020
כלומר, לא חובה להעביר את האפליקציות להתקנות של Firebase, אבל מומלץ מאוד לעשות זאת.
שדרוג לגרסאות SDK מינימליות להתקנות של Firebase
כדי לעבור משימוש במזהה מופע לשימוש בFirebaseהתקנות, צריך לוודא שהאפליקציות שלכם משתמשות לפחות במספרי הגרסאות המינימליים שמופיעים ברשימה של Firebase SDK הבאים:
| Firebase SDK | גרסת Android מינימלית | גרסת המינימום של 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 |
| Performance Monitoring | v19.0.8 | v6.21.0 |
| Crashlytics | v17.2.1 | v6.23.0 |
| ML Kit | v22.1.2 | v6.28.0 |
עדכון קוד שקורא באופן מפורש לממשקי Instance ID API
אם אפליקציית Android או אפליקציית Apple שלכם משתמשת ישירות בשיטות של Instance ID SDK, אתם יכולים להחליף את השימוש הזה בחלופות זהות ב-Firebase Installations SDK או ב-FCM SDK.
אחזור מזהה
השיטות לקבלת מזהי מכונה הוחלפו בשיטות לקבלת מזהה התקנה. לדוגמה:
לפני
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 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
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); } }];