Dịch vụ Firebase cài đặt (FIS) cung cấp Firebase mã nhận dạng lượt cài đặt (FID) cho mỗi phiên bản đã cài đặt của một ứng dụng Firebase. Các dịch vụ Firebase sau đây sử dụng mã nhận dạng lượt cài đặt Firebase trong nội bộ:
| Dịch vụ Firebase | Chức năng cài đặt Firebase |
|---|---|
| Firebase Cloud Messaging |
Firebase Cloud Messaging sử dụng mã nhận dạng lượt cài đặt Firebase để nhắm đến các thiết bị nhằm phân phối thông báo. |
| Firebase Crashlytics |
Firebase Crashlytics xoay UUID của lượt cài đặt Crashlytics dựa trên các thay đổi đối với mã nhận dạng lượt cài đặt Firebase của phiên bản ứng dụng. Trong tương lai, mã nhận dạng lượt cài đặt có thể được dùng để bật các tính năng giúp cải thiện dịch vụ báo cáo sự cố và quản lý sự cố. |
| Firebase In-App Messaging |
Firebase In-App Messaging sử dụng mã nhận dạng lượt cài đặt Firebase để nhắm đến các thiết bị nhằm phân phối thông báo. |
| Firebase Performance Monitoring |
Performance Monitoring sử dụng mã nhận dạng lượt cài đặt Firebase để tính số lượt cài đặt Firebase riêng biệt truy cập vào tài nguyên mạng, nhằm đảm bảo các mẫu truy cập đủ ẩn danh. SDK này cũng sử dụng mã nhận dạng lượt cài đặt Firebase với Firebase Remote Config để quản lý tốc độ báo cáo sự kiện hiệu suất. |
| Firebase Remote Config |
Remote Config sử dụng mã nhận dạng lượt cài đặt Firebase để chọn các giá trị cấu hình cần trả về cho thiết bị của người dùng cuối. |
| Firebase ML |
Firebase ML sử dụng thông tin đăng nhập có tên là mã thông báo xác thực khi cài đặt để xác thực thiết bị khi tương tác với các phiên bản ứng dụng, chẳng hạn như để phân phối các mô hình của nhà phát triển cho các phiên bản ứng dụng. |
| Bộ nhớ phân khúc người dùng Firebase |
Bộ nhớ phân đoạn người dùng Firebase lưu trữ mã nhận dạng lượt cài đặt Firebase và các thuộc tính cũng như phân đoạn liên quan để cung cấp thông tin nhắm mục tiêu cho các dịch vụ Firebase khác sử dụng những thông tin này. |
Thông thường, các dịch vụ của Firebase sử dụng dịch vụ cài đặt Firebase mà không yêu cầu nhà phát triển tương tác trực tiếp với API FIS. Tuy nhiên, có những trường hợp nhà phát triển ứng dụng có thể muốn gọi trực tiếp API FIS, chẳng hạn như:
- Để xoá một lượt cài đặt Firebase và dữ liệu liên kết với lượt cài đặt đó.
- Để truy xuất giá trị nhận dạng (Firebase mã nhận dạng lượt cài đặt) nhằm nhắm đến các lượt cài đặt ứng dụng cụ thể.
- Để truy xuất mã thông báo uỷ quyền cài đặt nhằm xác thực các lượt cài đặt Firebase.
Để bắt đầu gọi trực tiếp FIS API, hãy thêm SDK vào ứng dụng của bạn.
Thêm SDK Firebase lượt cài đặt vào ứng dụng của bạn
iOS+
- Thêm phần phụ thuộc cho các bản cài đặt Firebase vào Podfile:
pod 'FirebaseInstallations'
- Chạy
pod installvà mở tệp.xcworkspaceđã tạo. - Nhập mô-đun
FirebaseCoretrongUIApplicationDelegate, cũng như mọi mô-đun Firebase khác mà uỷ quyền ứng dụng của bạn sử dụng. Ví dụ: để sử dụng Cloud Firestore và 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; // ...
- Định cấu hình một phiên bản dùng chung
FirebaseApptrong phương thứcapplication(_:didFinishLaunchingWithOptions:)của uỷ quyền ứng dụng: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];
- Nếu đang sử dụng SwiftUI, bạn phải tạo một uỷ quyền ứng dụng và đính kèm uỷ quyền đó vào cấu trúc
Appthông quaUIApplicationDelegateAdaptorhoặcNSApplicationDelegateAdaptor. Bạn cũng phải tắt tính năng thay thế phương thức uỷ quyền của ứng dụng. Để biết thêm thông tin, hãy xem hướng dẫn về 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
Thêm phần phụ thuộc cho SDK Android về lượt cài đặt Firebase vào tệp Gradle (ở cấp ứng dụng) trong mô-đun của bạn (thường là app/build.gradle):
implementation 'com.google.firebase:firebase-installations:19.1.0'
JavaScript
Tuỳ thuộc vào cách ứng dụng web của bạn được lưu trữ, cấu hình của bạn có thể được xử lý tự động hoặc bạn có thể cần cập nhật đối tượng cấu hình Firebase.
Ví dụ: nếu bạn thêm các phần phụ thuộc vào index.html, hãy thêm phần phụ thuộc vào phần tử <head>:
<script src="/__/firebase/12.12.0/firebase-installations.js"></script>
Flutter
Từ thư mục gốc của dự án Flutter, hãy chạy lệnh sau để cài đặt trình bổ trợ cài đặt Firebase:
flutter pub add firebase_app_installationsTạo lại dự án:
flutter runNhập trình bổ trợ cài đặt Firebase:
import 'package:firebase_app_installations/firebase_app_installations.dart';
Xoá một bản cài đặt Firebase
Dữ liệu liên kết với một lần cài đặt Firebase thường không nhận dạng cá nhân. Tuy nhiên, bạn nên cung cấp cho người dùng lựa chọn quản lý và xoá dữ liệu này.
Mã nhận dạng lượt cài đặt Firebase khác nhau cho mỗi lượt cài đặt của mỗi ứng dụng; các ứng dụng khác nhau trên cùng một thiết bị có mã nhận dạng lượt cài đặt Firebase khác nhau. Firebase mã nhận dạng lượt cài đặt xác định các lượt cài đặt ứng dụng và dữ liệu được liên kết với những lượt cài đặt ứng dụng đó.
Khi bạn xoá một mã nhận dạng lượt cài đặt, dữ liệu được liên kết với mã nhận dạng lượt cài đặt đó sẽ bị xoá khỏi hệ thống trực tiếp và hệ thống sao lưu của tất cả các dịch vụ Firebase sử dụng mã nhận dạng lượt cài đặt Firebase để xác định lượt cài đặt trong vòng 180 ngày. Quy trình này được mô tả ở mức tổng quan trong tuyên bố của Google về việc xoá và giữ lại.
Trừ phi bạn tắt tất cả các dịch vụ tạo FID trong ứng dụng, FIS sẽ tạo một mã nhận dạng mới trong vòng vài ngày. Firebase coi mã nhận dạng mới tạo là một lượt cài đặt Firebase mới và không liên kết mã nhận dạng này với mã nhận dạng hoặc dữ liệu trước đó theo bất kỳ cách nào.
Xoá một FID bằng lệnh gọi API ứng dụng
Để xoá FID do các dịch vụ Firebase tạo, hãy gọi phương thức thích hợp từ SDK Firebasecài đặt:
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();
Xoá FID bằng lệnh gọi API máy chủ
Để xoá một FID bằng lệnh gọi API máy chủ, hãy thêm SDK của Firebase dành cho quản trị viên vào máy chủ (nếu bạn chưa thực hiện).
Sau khi thêm SDK, hãy xoá FID thông qua lệnh gọi đến hàm xoá bằng ngôn ngữ bạn chọn (lưu ý: Ngoại trừ Node.js, các phương thức này phản ánh cách đặt tên cho mã nhận dạng phiên bản. Tuy nhiên, tất cả đều thực sự xoá FID khi được gọi bằng bất kỳ Firebase SDK hiện tại nào).
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)
Bắt đầu
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)
}
Khi bạn xoá một mã nhận dạng lượt cài đặt Firebase bằng một lệnh gọi API máy chủ, các dịch vụ Firebase sẽ bắt đầu quy trình xoá dữ liệu được liên kết với mã nhận dạng lượt cài đặt đó, ngừng chấp nhận dữ liệu mới cho mã nhận dạng đó trong khoảng thời gian từ 1 đến 2 ngày, sau đó thông báo cho ứng dụng khách rằng mã nhận dạng đã bị xoá. Cho đến khi Firebase thông báo cho ứng dụng khách, một số dịch vụ của ứng dụng có thể vẫn nhắm đến mã nhận dạng này – ví dụ: một lượt cài đặt Firebase có thể tiếp tục nhận thông báo FCM trong vài giờ.
Nếu bạn muốn xoá mã nhận dạng lượt cài đặt Firebase hiện tại và sử dụng ngay các dịch vụ Firebase bằng một mã nhận dạng mới, không liên quan, hãy dùng API ứng dụng để xử lý việc xoá.
Truy xuất giá trị nhận dạng ứng dụng khách
Nếu có yêu cầu xác định các lượt cài đặt cụ thể của ứng dụng, bạn có thể thực hiện việc này bằng cách truy xuất mã nhận dạng lượt cài đặt Firebase. Ví dụ: để tạo phân khúc lượt cài đặt ứng dụng cho hoạt động nhập BigQuery hoặc để thực hiện kiểm thử trong quá trình phát triển Firebase In-App Messaging, bạn có thể xác định và nhắm đến đúng thiết bị bằng cách sử dụng mã nhận dạng lượt cài đặt Firebase tương ứng.
Cách truy xuất mã nhận dạng lượt cài đặt 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();
Truy xuất mã xác thực khi cài đặt
Các dịch vụ Firebase có thể xác thực các bản cài đặt Firebase bằng mã thông báo xác thực được truy xuất từ FIS. Ví dụ: khi thiết kế các thử nghiệm A/B cho Remote Config, bạn có thể xác thực một thiết bị thử nghiệm mục tiêu bằng mã thông báo xác thực khi cài đặt.
Mã thông báo uỷ quyền cài đặt là mã thông báo người mang ngắn hạn ở định dạng mã thông báo web JSON (JWT) chứa thông tin sau cho một lượt cài đặt:
- Mã nhận dạng lượt cài đặt Firebase
- Dự án được liên kết (
projectNumber) - Mã ứng dụng Firebase được liên kết (
appId) - Ngày hết hạn của mã thông báo
Bạn không thể thu hồi mã thông báo uỷ quyền cài đặt và mã này vẫn hợp lệ cho đến ngày hết hạn. Thời gian tồn tại mặc định của mã thông báo là một tuần.
Cách truy xuất mã xác thực khi cài đặt:
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();
Giám sát vòng đời mã nhận dạng lượt cài đặt Firebase
Trong quá trình hoạt động bình thường của một ứng dụng, mã nhận dạng lượt cài đặt Firebase(FID) không yêu cầu hoạt động giám sát đặc biệt. Tuy nhiên, những ứng dụng truy xuất và sử dụng FID một cách rõ ràng nên thêm logic để theo dõi khả năng xoá hoặc xoay vòng FID. Sau đây là một số trường hợp mà FID có thể bị xoá hoặc thay đổi:
- Gỡ cài đặt hoặc cài đặt lại ứng dụng, chẳng hạn như khi người dùng cuối cài đặt trên một thiết bị mới.
- Người dùng cuối xoá bộ nhớ đệm của ứng dụng hoặc thiết bị.
- Việc xoá FID được kích hoạt ở phần phụ trợ do ứng dụng không hoạt động (hiện tại, ngưỡng cho việc này là 270 ngày không hoạt động).
Khi gặp phải trường hợp xoay vòng hoặc xoá FID, các ứng dụng sẽ được chỉ định một FID mới. Ngoài ra, mã thông báo uỷ quyền cài đặt được liên kết với một FID đã bị xoá cũng sẽ bị xoá, bất kể thời gian tồn tại của mã thông báo đó và được thay thế bằng một mã thông báo uỷ quyền cài đặt mới.
Các ứng dụng có thể theo dõi những thay đổi này và phản hồi cho phù hợp.
Cách theo dõi hoạt động xoay vòng 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]; }];
Một NSNotification có tên là NSNotificationName.InstallationIDDidChange sẽ được đăng lên NSNotificationCenter mặc định bất cứ khi nào một FID mới được chỉ định.
Android
Ứng dụng Kotlin và Java nên thêm logic thử lại để phản hồi các lệnh gọi không thành công nhằm truy xuất FID mới.
JavaScript
Ứng dụng web có thể đăng ký lệnh gọi onIdChange.
Bất cứ khi nào một FID mới được tạo, lệnh gọi lại đã đăng ký sẽ được kích hoạt:
await firebase.installations().onIdChange((newId) => { console.log(newId); // TODO: Handle new installation ID. });
Dart
FirebaseInstallations.instance.onIdChange.listen((token) {
print('FID token: $token');
});
Di chuyển từ Mã nhận dạng phiên bản sang lượt cài đặt Firebase
Trước khi ra mắt Firebase lượt cài đặt, Firebase dựa vào Instance ID SDK để xác định lượt cài đặt ứng dụng. Firebase cài đặt mang lại những lợi thế đáng kể so với Mã nhận dạng phiên bản về độ tin cậy, hiệu suất và tính bảo mật. Các ứng dụng Firebase phụ thuộc vào Instance ID SDK cần di chuyển sang các bản cài đặt Firebase.
Quy trình di chuyển sẽ khác nhau tuỳ thuộc vào ứng dụng của bạn:
Những ứng dụng không trực tiếp gọi Instance ID API có thể di chuyển bằng cách cập nhật phiên bản SDK. Hầu hết các ứng dụng Firebase đều thuộc danh mục này.
Những ứng dụng thực hiện rõ ràng các lệnh gọi API đến Mã nhận dạng phiên bản phải cập nhật phiên bản SDK và thực hiện các thay đổi về mã để thay thế các phương thức Mã nhận dạng phiên bản bằng các phương thức cài đặt Firebase hoặc các phương thức tương đương FCM. Nếu ứng dụng của bạn sử dụng Mã nhận dạng phiên bản để truy xuất mã thông báo đăng ký FCM hoặc sử dụng rõ ràng Mã nhận dạng phiên bản để nhắm đến các phiên bản ứng dụng hoặc cho bất kỳ mục đích nào khác, bạn sẽ cần cập nhật mã xử lý ứng dụng của mình.
Hiện tại, FIS tương thích ngược với giá trị nhận dạng cũ là Mã nhận dạng phiên bản Firebase. Xoá IID là một phương thức thay thế để yêu cầu xoá dữ liệu bằng các SDK Firebase sau:
- iOS 6.14.0 trở xuống
- SDK Android trước ngày 27 tháng 2 năm 2020
Điều này có nghĩa là các ứng dụng không bắt buộc phải di chuyển sang lượt cài đặt Firebase; tuy nhiên, bạn nên làm như vậy.
Nâng cấp lên phiên bản SDK tối thiểu cho các bản cài đặt Firebase
Để di chuyển từ Mã nhận dạng phiên bản sang lượt cài đặt Firebase, hãy đảm bảo rằng các ứng dụng của bạn sử dụng ít nhất số phiên bản tối thiểu được liệt kê của các SDK Firebase sau:
| Firebase SDK | Phiên bản Android tối thiểu | Phiên bản iOS tối thiểu |
| Giải pháp gửi thông báo qua đám mây của Firebase | Phiên bản 20.3.0 | Phiên bản 6.34.0 |
| Cấu hình từ xa | Phiên bản 19.2.0 | Phiên bản 6.24.0 |
| Google Analytics cho Firebase (SDK đo lường) | Phiên bản 17.4.4 | Phiên bản 6.18.0 |
| Gửi thông báo trong ứng dụng | Phiên bản 19.0.7 | Phiên bản 6.24.0 |
| Giám sát hiệu suất | Phiên bản 19.0.8 | Phiên bản 6.21.0 |
| Crashlytics | v17.2.1 | Phiên bản 6.23.0 |
| Bộ công cụ máy học | Phiên bản 22.1.2 | Phiên bản 6.28.0 |
Cập nhật mã gọi rõ ràng Instance ID API
Nếu ứng dụng Android hoặc Apple của bạn trực tiếp sử dụng các phương thức Instance ID SDK, thì bạn có thể thay thế việc sử dụng đó bằng các phương thức thay thế tương tự trong SDK lượt cài đặt Firebase hoặc SDK FCM.
Truy xuất giá trị nhận dạng
Các phương thức để lấy mã nhận dạng phiên bản sẽ được thay thế bằng các phương thức để lấy mã nhận dạng lượt cài đặt. Ví dụ:
Trước
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) }
Sau
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") } }
Xoá giá trị nhận dạng
Các phương thức xoá mã nhận dạng phiên bản sẽ được thay thế bằng các phương thức xoá mã nhận dạng lượt cài đặt Firebase. Ví dụ:
Trước
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();
Sau
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") } }
Truy xuất mã thông báo đăng ký FCM
Trước khi có Firebase Installations, các ứng dụng FCM sẽ truy xuất mã thông báo đăng ký từ Instance ID. Giờ đây, SDK FCM cung cấp các phương thức để truy xuất mã thông báo đăng ký.
Trước
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); } }];
Sau
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); } }];