Dịch vụ cài đặt Firebase (FIS) cung cấp ID cài đặt Firebase (FID) cho mỗi phiên bản đã cài đặt của ứng dụng Firebase. ID cài đặt Firebase được các dịch vụ Firebase này sử dụng nội bộ:
Dịch vụ căn cứ hỏa lực | Chức năng cài đặt Firebase |
---|---|
Nhắn tin qua đám mây Firebase | Nhắn tin qua đám mây của Firebase sử dụng ID cài đặt Firebase để nhắm mục tiêu các thiết bị gửi tin nhắn. |
Firebase Crashlytics | Firebase Crashlytics xoay vòng UUID cài đặt Crashlytics dựa trên các thay đổi đối với ID cài đặt Firebase của phiên bản ứng dụng. Trong tương lai, ID cài đặt có thể được sử dụng để kích hoạt các tính năng nâng cao dịch vụ báo cáo sự cố và quản lý sự cố. |
Nhắn tin trong ứng dụng Firebase | Nhắn tin trong ứng dụng Firebase sử dụng ID cài đặt Firebase để nhắm mục tiêu các thiết bị gửi tin nhắn. |
Giám sát hiệu suất Firebase | Giám sát hiệu suất sử dụng ID cài đặt Firebase để tính toán số lượng cài đặt Firebase duy nhất truy cập vào tài nguyên mạng để đảm bảo rằng các mẫu truy cập đủ ẩn danh. Nó cũng sử dụng ID cài đặt Firebase với Cấu hình từ xa Firebase để quản lý tỷ lệ báo cáo sự kiện hiệu suất. |
Cấu hình từ xa Firebase | Cấu hình từ xa sử dụng ID cài đặt Firebase để chọn giá trị cấu hình để trả về thiết bị của người dùng cuối. |
Firebase ML | Thông tin xác thực được gọi là mã thông báo xác thực cài đặt được Firebase ML sử dụng để 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 mô hình 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ộ lưu trữ phân khúc người dùng Firebase lưu trữ ID cài đặt Firebase cũng như các thuộc tính và 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 chúng. |
Thông thường, các dịch vụ 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ư:
- Để xóa cài đặt Firebase và dữ liệu được liên kết với cài đặt.
- Để truy xuất số nhận dạng (ID cài đặt Firebase) để nhắm mục tiêu cài đặt ứng dụng cụ thể.
- Để truy xuất mã thông báo xác thực cài đặt nhằm xác thực cài đặt Firebase.
Để bắt đầu gọi trực tiếp API FIS, hãy thêm SDK vào ứng dụng của bạn.
Thêm SDK cài đặt Firebase vào ứng dụng của bạn
iOS+
- Thêm phần phụ thuộc để cài đặt Firebase vào Podfile của bạn:
pod 'FirebaseInstallations'
- Chạy
pod install
và mở tệp.xcworkspace
đã tạo. - Nhập mô-đun
FirebaseCore
trongUIApplicationDelegate
của bạn, cũng như bất kỳ mô-đun Firebase nào khác mà ủy quyền ứng dụng của bạn sử dụng. Ví dụ: để sử dụng Cloud Firestore và Xác thực:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Nhanh
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Mục tiêu-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Định cấu hình phiên bản chia sẻ
FirebaseApp
trong phương thứcapplication(_:didFinishLaunchingWithOptions:)
của đại biểu ứng dụng của bạn:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Nhanh
// Use Firebase library to configure APIs FirebaseApp.configure()
Mục tiêu-C
// Use Firebase library to configure APIs [FIRApp configure];
- Nếu bạn đang sử dụng SwiftUI, bạn phải tạo một đại biểu ứng dụng và đính kèm nó vào cấu trúc
App
của mình thông quaUIApplicationDelegateAdaptor
hoặcNSApplicationDelegateAdaptor
. Bạn cũng phải tắt chức năng chuyển giao ứng dụng. Để biết thêm thông tin, hãy xem hướng dẫn 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 cài đặt Firebase vào tệp Gradle mô-đun (cấp ứng dụng) của bạn (thường là app/build.gradle
):
implementation 'com.google.firebase:firebase-installations:17.1.4'
JavaScript
Tùy 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 của mình.
Ví dụ: nếu phần phụ thuộc của bạn được thêm vào index.html, hãy thêm phần phụ thuộc đó vào phần tử <head>:
<script src="/__/firebase/10.4.0/firebase-installations.js"></script>
Chớp cánh
Từ thư mục gốc của dự án Flutter của bạn, hãy chạy lệnh sau để cài đặt plugin cài đặt Firebase:
flutter pub add firebase_app_installations
Xây dựng lại dự án của bạn:
flutter run
Nhập plugin cài đặt Firebase:
import 'package:firebase_app_installations/firebase_app_installations.dart';
Xóa cài đặt Firebase
Dữ liệu liên quan đến cài đặt Firebase thường không nhận dạng cá nhân. Tuy nhiên, việc cung cấp cho người dùng tùy chọn quản lý và xóa dữ liệu này có thể hữu ích.
ID cài đặt Firebase khác nhau đối với mỗi lần cài đặt mỗi ứng dụng; các ứng dụng khác nhau trên cùng một thiết bị có ID cài đặt Firebase khác nhau. ID cài đặt Firebase xác định các lượt cài đặt ứng dụng và dữ liệu gắn liền với các lượt cài đặt ứng dụng đó.
Khi bạn xóa ID cài đặt, dữ liệu gắn với ID cài đặt đó sẽ bị xóa khỏi hệ thống trực tiếp và sao lưu của tất cả các dịch vụ Firebase sử dụng ID cài đặt Firebase để xác định các lượt cài đặt trong vòng 180 ngày. Quá trình này được mô tả ở mức độ cao trong tuyên bố của Google về việc xóa và lưu giữ .
Trừ khi bạn tắt tất cả các dịch vụ tạo FID trong ứng dụng của mình, FIS sẽ tạo ID mới trong vòng vài ngày. Firebase coi ID mới được tạo là bản cài đặt Firebase mới và không liên kết ID đó với ID hoặc dữ liệu trước đó theo bất kỳ cách nào.
Xóa FID bằng lệnh gọi API ứng dụng khách
Để xóa FID do dịch vụ Firebase tạo, hãy gọi phương thức thích hợp từ SDK cài đặt Firebase:
Nhanh
Installations.installations().delete { error in if let error = error { print("Error deleting installation: \(error)") return } print("Installation deleted"); }
Mục tiêu-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();
Xóa FID bằng lệnh gọi API máy chủ
Để xóa FID bằng lệnh gọi API máy chủ, hãy thêm SDK quản trị Firebase vào máy chủ của bạn nếu bạn chưa làm vậy.
Sau khi SDK được thêm, hãy xóa FID thông qua lệnh gọi đến chức năng xóa 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 ID phiên bản. Tuy nhiên, tất cả chúng đều thực sự xóa FID khi được gọi với bất kỳ Firebase hiện tại nào 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)
Đi
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 xóa ID cài đặt Firebase bằng lệnh gọi API máy chủ, dịch vụ Firebase sẽ bắt đầu quá trình xóa dữ liệu được liên kết với ID cài đặt đó, ngừng chấp nhận dữ liệu mới cho ID đó trong vòng 1-2 ngày, sau đó thông báo cho ứng dụng khách rằng ID đã bị xóa. 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 vẫn có thể nhắm mục tiêu ID—ví dụ: bản cài đặt Firebase có thể tiếp tục nhận được thông báo FCM trong vài giờ.
Nếu bạn muốn xóa ID cài đặt Firebase hiện tại và sử dụng ngay các dịch vụ Firebase bằng ID mới, không liên quan, hãy sử dụng API ứng dụng khách để xử lý việc xóa.
Truy xuất số nhận dạng khách hàng
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ể làm như vậy bằng cách truy xuất ID cài đặt Firebase. Ví dụ: để tạo phân đoạn lượt cài đặt ứng dụng để nhập BiqQuery hoặc để thực hiện thử nghiệm trong quá trình phát triển Nhắn tin trong ứng dụng Firebase, bạn có thể xác định và nhắm mục tiêu đúng thiết bị bằng cách sử dụng ID cài đặt Firebase tương ứng.
Để truy xuất ID cài đặt Firebase:
Nhanh
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)") }
Mục tiêu-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();
Truy xuất mã thông báo xác thực cài đặt
Dịch vụ Firebase có thể xác thực 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ế thử nghiệm A/B cho Cấu hình từ xa, bạn có thể xác thực thiết bị thử nghiệm được nhắm mục tiêu bằng mã thông báo xác thực cài đặt.
Mã thông báo xác thực cài đặt là mã thông báo mang tồn tại trong thời gian ngắn ở định dạng mã thông báo web JSON (JWT) chứa thông tin sau cho quá trình cài đặt:
- ID cài đặt Firebase
- Dự án liên quan (
projectNumber
) - ID ứng dụng Firebase được liên kết (
appId
) - Ngày hết hạn của mã thông báo
Mã thông báo xác thực cài đặt không thể bị thu hồi và vẫn có hiệu lực cho đến ngày hết hạn. Thời gian tồn tại của mã thông báo mặc định là một tuần.
Để truy xuất mã thông báo xác thực cài đặt:
Nhanh
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)") })
Mục tiêu-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();
Giám sát vòng đời ID cài đặt Firebase
Trong quá trình hoạt động bình thường của ứng dụng, ID cài đặt Firebase (FID) không yêu cầu giám sát đặc biệt. Tuy nhiên, các ứng dụng truy xuất và sử dụng FID một cách rõ ràng phải thêm logic để giám sát khả năng xóa hoặc xoay FID. Dưới đây là một số trường hợp FID có thể bị xóa hoặc xoay:
- 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 thiết bị mới.
- Người dùng cuối xóa bộ nhớ đệm của ứng dụng hoặc thiết bị.
- Việc xóa FID được kích hoạt trong 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 ứng dụng gặp phải tình trạng xoay hoặc xóa FID trong những trường hợp này, chúng sẽ được gán một FID mới. Ngoài ra, mã thông báo xác thực cài đặt được liên kết với FID đã xóa sẽ bị xóa, bất kể thời gian đáo hạn của chính nó và được thay thế bằng mã thông báo xác thực cài đặt mới.
Ứng dụng có thể theo dõi những thay đổi này và phản hồi tương ứng.
Để theo dõi vòng quay FID:
Nhanh
installationIDObserver = NotificationCenter.default.addObserver( forName: .InstallationIDDidChange, object: nil, queue: nil ) { (notification) in // Fetch new Installation ID self.fetchInstallationToken() }
Mục tiêu-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 NSNotificationName.InstallationIDDidChange
được đăng lên NSNotificationCenter mặc định bất cứ khi nào FID mới được chỉ định.
Android
Máy khách 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
Các ứng dụng web có thể đăng ký hook 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ừ ID phiên bản sang cài đặt Firebase
Trước khi giới thiệu cài đặt Firebase, Firebase đã dựa vào SDK ID phiên bản để lấy số nhận dạng lượt cài đặt ứng dụng. Cài đặt Firebase mang lại lợi thế đáng kể so với ID phiên bản về độ tin cậy, hiệu suất và bảo mật. Các ứng dụng Firebase phụ thuộc vào SDK ID phiên bản sẽ di chuyển sang bản cài đặt Firebase.
Quá trình di chuyển sẽ khác nhau tùy theo ứng dụng của bạn:
Các ứng dụng không gọi trực tiếp API ID phiên bản có thể di chuyển bằng cách cập nhật phiên bản SDK của chúng . Hầu hết các ứng dụng Firebase đều thuộc danh mục này.
Các ứng dụng thực hiện lệnh gọi API rõ ràng tới ID phiên bản phải cập nhật phiên bản SDK và thực hiện thay đổi mã để thay thế các phương thức ID phiên bản bằng bản cài đặt Firebase hoặc FCM tương đương. Nếu ứng dụng của bạn sử dụng ID phiên bản để truy xuất mã thông báo đăng ký FCM hoặc sử dụng ID phiên bản một cách rõ ràng để nhắm mục tiêu 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ã ứng dụng của mình.
Hiện tại, FIS tương thích ngược với mã nhận dạng cũ ID phiên bản Firebase. Xóa IID là một phương pháp thay thế để yêu cầu xóa dữ liệu bằng các SDK Firebase này:
- iOS 6.14.0 trở xuống
- SDK Android sớm hơn 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 bản cài đặt Firebase; tuy nhiên, làm như vậy là rất khuyến khích.
Nâng cấp lên phiên bản SDK tối thiểu để cài đặt Firebase
Để di chuyển từ ID phiên bản sang cài đặt Firebase, hãy đảm bảo rằng ứ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 SDK Firebase sau:
SDK căn cứ hỏa lực | Phiên bản Android tối thiểu | Phiên bản iOS tối thiểu |
Nhắn tin qua đám mây Firebase | v20.3.0 | v6.34.0 |
Cấu hình từ xa | v19.2.0 | v6.24.0 |
Google Analytics cho Firebase \ (SDK đo lường) | v17.4.4 | v6.18.0 |
Nhắn tin trong ứng dụng | v19.0.7 | v6.24.0 |
Giám sát hiệu suất | v19.0.8 | v6.21.0 |
Crashlytics | v17.2.1 | v6.23.0 |
Bộ ML | v22.1.2 | v6.28.0 |
Cập nhật mã gọi API ID phiên bản một cách rõ ràng
Nếu ứng dụng Android hoặc Apple của bạn trực tiếp sử dụng phương pháp SDK ID phiên bản, bạn có thể thay thế cách sử dụng đó bằng các lựa chọn thay thế giống hệt trong SDK cài đặt Firebase hoặc SDK FCM.
Truy xuất số nhận dạng
Các phương thức lấy ID phiên bản được thay thế bằng các phương thức lấy ID cài đặt. Ví dụ:
Trước
Nhanh
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)" } }
Mục tiêu-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) }
Sau đó
Nhanh
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)") }
Mục tiêu-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") } }
Xóa số nhận dạng
Các phương pháp xóa ID phiên bản được thay thế bằng các phương pháp xóa ID cài đặt Firebase. Ví dụ:
Trước
Nhanh
InstanceID.instanceID().deleteID { error in
if let error = error {
print("Error deleting instance ID: \(error)")
}
}
Mục tiêu-C
[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
if error != nil {
NSLog(@"Error deleting instance ID: %@", error);
}
}];
Android
FirebaseInstanceId.deleteInstanceId();
Sau đó
Nhanh
func delete(completion: @escaping (Error?) -> Void)
Mục tiêu-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") } }
Truy xuất mã thông báo đăng ký FCM
Trước khi giới thiệu Cài đặt Firebase, khách hàng FCM đã truy xuất mã thông báo đăng ký từ ID phiên bản. 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+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() })
Nhanh
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)" } }
Mục tiêu-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; } }];
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+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() })
Nhanh
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)" } }
Mục tiêu-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; } }];
Dịch vụ cài đặt Firebase (FIS) cung cấp ID cài đặt Firebase (FID) cho mỗi phiên bản đã cài đặt của ứng dụng Firebase. ID cài đặt Firebase được các dịch vụ Firebase này sử dụng nội bộ:
Dịch vụ căn cứ hỏa lực | Chức năng cài đặt Firebase |
---|---|
Nhắn tin qua đám mây Firebase | Nhắn tin qua đám mây của Firebase sử dụng ID cài đặt Firebase để nhắm mục tiêu các thiết bị gửi tin nhắn. |
Firebase Crashlytics | Firebase Crashlytics xoay vòng UUID cài đặt Crashlytics dựa trên các thay đổi đối với ID cài đặt Firebase của phiên bản ứng dụng. Trong tương lai, ID cài đặt có thể được sử dụng để kích hoạt các tính năng nâng cao dịch vụ báo cáo sự cố và quản lý sự cố. |
Nhắn tin trong ứng dụng Firebase | Nhắn tin trong ứng dụng Firebase sử dụng ID cài đặt Firebase để nhắm mục tiêu các thiết bị gửi tin nhắn. |
Giám sát hiệu suất Firebase | Giám sát hiệu suất sử dụng ID cài đặt Firebase để tính toán số lượng cài đặt Firebase duy nhất truy cập vào tài nguyên mạng để đảm bảo rằng các mẫu truy cập đủ ẩn danh. Nó cũng sử dụng ID cài đặt Firebase với Cấu hình từ xa Firebase để quản lý tỷ lệ báo cáo sự kiện hiệu suất. |
Cấu hình từ xa Firebase | Cấu hình từ xa sử dụng ID cài đặt Firebase để chọn giá trị cấu hình để trả về thiết bị của người dùng cuối. |
Firebase ML | Thông tin xác thực được gọi là mã thông báo xác thực cài đặt được Firebase ML sử dụng để 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 mô hình 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ộ lưu trữ phân khúc người dùng Firebase lưu trữ ID cài đặt Firebase cũng như các thuộc tính và 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 chúng. |
Thông thường, các dịch vụ 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ư:
- Để xóa cài đặt Firebase và dữ liệu được liên kết với cài đặt.
- Để truy xuất số nhận dạng (ID cài đặt Firebase) để nhắm mục tiêu cài đặt ứng dụng cụ thể.
- Để truy xuất mã thông báo xác thực cài đặt nhằm xác thực cài đặt Firebase.
Để bắt đầu gọi trực tiếp API FIS, hãy thêm SDK vào ứng dụng của bạn.
Thêm SDK cài đặt Firebase vào ứng dụng của bạn
iOS+
- Thêm phần phụ thuộc để cài đặt Firebase vào Podfile của bạn:
pod 'FirebaseInstallations'
- Chạy
pod install
và mở tệp.xcworkspace
đã tạo. - Nhập mô-đun
FirebaseCore
trongUIApplicationDelegate
của bạn, cũng như bất kỳ mô-đun Firebase nào khác mà ủy quyền ứng dụng của bạn sử dụng. Ví dụ: để sử dụng Cloud Firestore và Xác thực:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Nhanh
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Mục tiêu-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Định cấu hình phiên bản chia sẻ
FirebaseApp
trong phương thứcapplication(_:didFinishLaunchingWithOptions:)
của đại biểu ứng dụng của bạn:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Nhanh
// Use Firebase library to configure APIs FirebaseApp.configure()
Mục tiêu-C
// Use Firebase library to configure APIs [FIRApp configure];
- Nếu bạn đang sử dụng SwiftUI, bạn phải tạo một đại biểu ứng dụng và đính kèm nó vào cấu trúc
App
của mình thông quaUIApplicationDelegateAdaptor
hoặcNSApplicationDelegateAdaptor
. Bạn cũng phải tắt chức năng chuyển giao ứng dụng. Để biết thêm thông tin, hãy xem hướng dẫn 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 cài đặt Firebase vào tệp Gradle mô-đun (cấp ứng dụng) của bạn (thường là app/build.gradle
):
implementation 'com.google.firebase:firebase-installations:17.1.4'
JavaScript
Tùy 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 của mình.
Ví dụ: nếu phần phụ thuộc của bạn được thêm vào index.html, hãy thêm phần phụ thuộc đó vào phần tử <head>:
<script src="/__/firebase/10.4.0/firebase-installations.js"></script>
Chớp cánh
Từ thư mục gốc của dự án Flutter của bạn, hãy chạy lệnh sau để cài đặt plugin cài đặt Firebase:
flutter pub add firebase_app_installations
Xây dựng lại dự án của bạn:
flutter run
Nhập plugin cài đặt Firebase:
import 'package:firebase_app_installations/firebase_app_installations.dart';
Xóa cài đặt Firebase
Dữ liệu liên quan đến cài đặt Firebase thường không nhận dạng cá nhân. Tuy nhiên, việc cung cấp cho người dùng tùy chọn quản lý và xóa dữ liệu này có thể hữu ích.
ID cài đặt Firebase khác nhau đối với mỗi lần cài đặt mỗi ứng dụng; các ứng dụng khác nhau trên cùng một thiết bị có ID cài đặt Firebase khác nhau. ID cài đặt Firebase xác định các lượt cài đặt ứng dụng và dữ liệu gắn liền với các lượt cài đặt ứng dụng đó.
Khi bạn xóa ID cài đặt, dữ liệu gắn với ID cài đặt đó sẽ bị xóa khỏi hệ thống trực tiếp và sao lưu của tất cả các dịch vụ Firebase sử dụng ID cài đặt Firebase để xác định các lượt cài đặt trong vòng 180 ngày. Quá trình này được mô tả ở mức độ cao trong tuyên bố của Google về việc xóa và lưu giữ .
Trừ khi bạn tắt tất cả các dịch vụ tạo FID trong ứng dụng của mình, FIS sẽ tạo ID mới trong vòng vài ngày. Firebase coi ID mới được tạo là bản cài đặt Firebase mới và không liên kết ID đó với ID hoặc dữ liệu trước đó theo bất kỳ cách nào.
Xóa FID bằng lệnh gọi API ứng dụng khách
Để xóa FID do dịch vụ Firebase tạo, hãy gọi phương thức thích hợp từ SDK cài đặt Firebase:
Nhanh
Installations.installations().delete { error in if let error = error { print("Error deleting installation: \(error)") return } print("Installation deleted"); }
Mục tiêu-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();
Xóa FID bằng lệnh gọi API máy chủ
Để xóa FID bằng lệnh gọi API máy chủ, hãy thêm SDK quản trị Firebase vào máy chủ của bạn nếu bạn chưa làm vậy.
Sau khi SDK được thêm, hãy xóa FID thông qua lệnh gọi đến chức năng xóa 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 ID phiên bản. Tuy nhiên, tất cả chúng đều thực sự xóa FID khi được gọi với bất kỳ Firebase hiện tại nào 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)
Đi
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 xóa ID cài đặt Firebase bằng lệnh gọi API máy chủ, dịch vụ Firebase sẽ bắt đầu quá trình xóa dữ liệu được liên kết với ID cài đặt đó, ngừng chấp nhận dữ liệu mới cho ID đó trong vòng 1-2 ngày, sau đó thông báo cho ứng dụng khách rằng ID đã bị xóa. 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 vẫn có thể nhắm mục tiêu ID—ví dụ: bản cài đặt Firebase có thể tiếp tục nhận được thông báo FCM trong vài giờ.
Nếu bạn muốn xóa ID cài đặt Firebase hiện tại và sử dụng ngay các dịch vụ Firebase bằng ID mới, không liên quan, hãy sử dụng API ứng dụng khách để xử lý việc xóa.
Truy xuất số nhận dạng khách hàng
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ể làm như vậy bằng cách truy xuất ID cài đặt Firebase. Ví dụ: để tạo phân đoạn lượt cài đặt ứng dụng để nhập BiqQuery hoặc để thực hiện thử nghiệm trong quá trình phát triển Nhắn tin trong ứng dụng Firebase, bạn có thể xác định và nhắm mục tiêu đúng thiết bị bằng cách sử dụng ID cài đặt Firebase tương ứng.
Để truy xuất ID cài đặt Firebase:
Nhanh
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)") }
Mục tiêu-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();
Truy xuất mã thông báo xác thực cài đặt
Dịch vụ Firebase có thể xác thực 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ế thử nghiệm A/B cho Cấu hình từ xa, bạn có thể xác thực thiết bị thử nghiệm được nhắm mục tiêu bằng mã thông báo xác thực cài đặt.
Mã thông báo xác thực cài đặt là mã thông báo mang tồn tại trong thời gian ngắn ở định dạng mã thông báo web JSON (JWT) chứa thông tin sau cho quá trình cài đặt:
- ID cài đặt Firebase
- Dự án liên quan (
projectNumber
) - ID ứng dụng Firebase được liên kết (
appId
) - Ngày hết hạn của mã thông báo
Mã thông báo xác thực cài đặt không thể bị thu hồi và vẫn có hiệu lực cho đến ngày hết hạn. Thời gian tồn tại của mã thông báo mặc định là một tuần.
Để truy xuất mã thông báo xác thực cài đặt:
Nhanh
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)") })
Mục tiêu-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();
Giám sát vòng đời ID cài đặt Firebase
Trong quá trình hoạt động bình thường của ứng dụng, ID cài đặt Firebase (FID) không yêu cầu giám sát đặc biệt. Tuy nhiên, các ứng dụng truy xuất và sử dụng FID một cách rõ ràng phải thêm logic để giám sát khả năng xóa hoặc xoay FID. Dưới đây là một số trường hợp FID có thể bị xóa hoặc xoay:
- 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 thiết bị mới.
- Người dùng cuối xóa bộ nhớ đệm của ứng dụng hoặc thiết bị.
- Việc xóa FID được kích hoạt trong 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 ứng dụng gặp phải tình trạng xoay hoặc xóa FID trong những trường hợp này, chúng sẽ được gán một FID mới. Ngoài ra, mã thông báo xác thực cài đặt được liên kết với FID đã xóa sẽ bị xóa, bất kể thời gian đáo hạn của chính nó và được thay thế bằng mã thông báo xác thực cài đặt mới.
Ứng dụng có thể theo dõi những thay đổi này và phản hồi tương ứng.
Để theo dõi vòng quay FID:
Nhanh
installationIDObserver = NotificationCenter.default.addObserver( forName: .InstallationIDDidChange, object: nil, queue: nil ) { (notification) in // Fetch new Installation ID self.fetchInstallationToken() }
Mục tiêu-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 NSNotificationName.InstallationIDDidChange
được đăng lên NSNotificationCenter mặc định bất cứ khi nào FID mới được chỉ định.
Android
Máy khách 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
Các ứng dụng web có thể đăng ký hook 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ừ ID phiên bản sang cài đặt Firebase
Trước khi giới thiệu cài đặt Firebase, Firebase đã dựa vào SDK ID phiên bản để lấy số nhận dạng lượt cài đặt ứng dụng. Cài đặt Firebase mang lại lợi thế đáng kể so với ID phiên bản về độ tin cậy, hiệu suất và bảo mật. Các ứng dụng Firebase phụ thuộc vào SDK ID phiên bản sẽ di chuyển sang bản cài đặt Firebase.
Quá trình di chuyển sẽ khác nhau tùy theo ứng dụng của bạn:
Các ứng dụng không gọi trực tiếp API ID phiên bản có thể di chuyển bằng cách cập nhật phiên bản SDK của chúng . Hầu hết các ứng dụng Firebase đều thuộc danh mục này.
Các ứng dụng thực hiện lệnh gọi API rõ ràng tới ID phiên bản phải cập nhật phiên bản SDK và thực hiện thay đổi mã để thay thế các phương thức ID phiên bản bằng bản cài đặt Firebase hoặc FCM tương đương. Nếu ứng dụng của bạn sử dụng ID phiên bản để truy xuất mã thông báo đăng ký FCM hoặc sử dụng ID phiên bản một cách rõ ràng để nhắm mục tiêu 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ã ứng dụng của mình.
Hiện tại, FIS tương thích ngược với mã nhận dạng cũ ID phiên bản Firebase. Xóa IID là một phương pháp thay thế để yêu cầu xóa dữ liệu bằng các SDK Firebase này:
- iOS 6.14.0 trở xuống
- SDK Android sớm hơn 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 bản cài đặt Firebase; tuy nhiên, làm như vậy là rất khuyến khích.
Nâng cấp lên phiên bản SDK tối thiểu để cài đặt Firebase
Để di chuyển từ ID phiên bản sang cài đặt Firebase, hãy đảm bảo rằng ứ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 SDK Firebase sau:
SDK căn cứ hỏa lực | Phiên bản Android tối thiểu | Phiên bản iOS tối thiểu |
Nhắn tin qua đám mây Firebase | v20.3.0 | v6.34.0 |
Cấu hình từ xa | v19.2.0 | v6.24.0 |
Google Analytics cho Firebase \ (SDK đo lường) | v17.4.4 | v6.18.0 |
Nhắn tin trong ứng dụng | v19.0.7 | v6.24.0 |
Giám sát hiệu suất | v19.0.8 | v6.21.0 |
Crashlytics | v17.2.1 | v6.23.0 |
Bộ ML | v22.1.2 | v6.28.0 |
Cập nhật mã gọi API ID phiên bản một cách rõ ràng
Nếu ứng dụng Android hoặc Apple của bạn trực tiếp sử dụng phương pháp SDK ID phiên bản, bạn có thể thay thế cách sử dụng đó bằng các lựa chọn thay thế giống hệt trong SDK cài đặt Firebase hoặc SDK FCM.
Truy xuất số nhận dạng
Các phương thức lấy ID phiên bản được thay thế bằng các phương thức lấy ID cài đặt. Ví dụ:
Trước
Nhanh
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)" } }
Mục tiêu-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) }
Sau đó
Nhanh
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)") }
Mục tiêu-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") } }
Xóa số nhận dạng
Các phương pháp xóa ID phiên bản được thay thế bằng các phương pháp xóa ID cài đặt Firebase. Ví dụ:
Trước
Nhanh
InstanceID.instanceID().deleteID { error in
if let error = error {
print("Error deleting instance ID: \(error)")
}
}
Mục tiêu-C
[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
if error != nil {
NSLog(@"Error deleting instance ID: %@", error);
}
}];
Android
FirebaseInstanceId.deleteInstanceId();
Sau đó
Nhanh
func delete(completion: @escaping (Error?) -> Void)
Mục tiêu-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") } }
Truy xuất mã thông báo đăng ký FCM
Trước khi giới thiệu Cài đặt Firebase, khách hàng FCM đã truy xuất mã thông báo đăng ký từ ID phiên bản. 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+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() })
Nhanh
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)" } }
Mục tiêu-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; } }];
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+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() })
Nhanh
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)" } }
Mục tiêu-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; } }];