Dịch vụ lắp đặt Firebase (FIS) cung cấp Firebase mã cài đặt (FID) cho mỗi phiên bản đã cài đặt của một ứng dụng Firebase. Mã cài đặt Firebase được các Firebase này sử dụng nội bộ các dịch vụ:
Dịch vụ Firebase | Chức năng cài đặt Firebase |
---|---|
Firebase Cloud Messaging |
Firebase Cloud Messaging lần sử dụng Firebase mã cài đặt để nhắm mục tiêu các thiết bị nhằm gửi tin nhắn. |
Firebase Crashlytics |
Firebase Crashlytics xoay quá trình cài đặt Crashlytics Mã nhận dạng duy nhất (UUID) dựa trên các thay đổi đối với Firebase của phiên bản ứng dụng mã cài đặt. Trong tương lai, mã cài đặt có thể được dùng để bật các tính năng 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 lần sử dụng Firebase mã cài đặt để nhắm mục tiêu các thiết bị nhằm gửi tin nhắn. |
Firebase Performance Monitoring |
Performance Monitoring sử dụng Firebase mã cài đặt để tính toán số lượt cài đặt Firebase riêng biệt truy cập tài nguyên mạng, để đảm bảo rằng các mẫu truy cập ẩn danh đủ. Công cụ này cũng sử dụng Firebase mã cài đặt với Firebase Remote Config để quản lý tỷ lệ báo cáo sự kiện hiệu suất. |
Firebase Remote Config |
Remote Config sử dụng Firebase mã cài đặt để chọn cấu hình để trả lại cho thiết bị của người dùng cuối. |
Firebase ML |
Thông tin đăng nhập đã được gọi mã thông báo xác thực cài đặt được Firebase ML sử dụng cho xác thực thiết bị khi tương tác với ứng dụng ví dụ: để 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ộ nhớ phân đoạn người dùng Firebase lưu trữ Firebase mã cài đặt cũng như các thuộc tính và phân đoạn có liên quan để cung cấp thông tin nhắm mục tiêu với 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 cần yêu cầu nhà phát triển tương tác trực tiếp với FIS API. Tuy nhiên, có những trường hợp mà nhà phát triển ứng dụng có thể muốn gọi trực tiếp FIS API, chẳng hạn như:
- Để xoá một bản 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ã cài đặt) để nhắm mục tiêu lượt cài đặt ứng dụng cụ thể.
- Cách truy xuất mã thông báo xác thực việc cài đặt nhằm xác thực Firebase cài đặt.
Để bắt đầu gọi điện trực tiếp FIS API, 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 trở lên
- Thêm phần phụ thuộc cho các lượt cài đặt Firebase vào Podfile:
pod 'FirebaseInstallations'
- Chạy
pod install
và mở tệp.xcworkspace
đã tạo. - Nhập mô-đun
FirebaseCore
trongUIApplicationDelegate
cũng như bất kỳ tên nào khác Các mô-đun Firebase mà người được uỷ quyề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
FirebaseApp
thực thể dùng chung trong Phương thứcapplication(_: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];
- Nếu đang sử dụng SwiftUI, bạn phải tạo một ứng dụng uỷ quyền và đính kèm nó
đến cấu trúc
App
của bạn thông quaUIApplicationDelegateAdaptor
hoặcNSApplicationDelegateAdaptor
. Bạn cũng phải tắt tính năng uỷ quyền ứng dụng. Để hãy xem hướng dẫn về SwiftUI để biết thêm thông tin.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) (thường là app/build.gradle
):
implementation 'com.google.firebase:firebase-installations:18.0.0'
JavaScript
Tuỳ thuộc vào cách ứng dụng web đượ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 phải cập nhật Đối tượng cấu hình Firebase.
Ví dụ: nếu các phần phụ thuộc của bạn được thêm vào trongindex.html, hãy thêm thuộc tính trong thẻ <head> phần tử:
<script src="/__/firebase/11.0.2/firebase-installations.js"></script>
Flutter
Trong 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_installations
Tạo lại dự án:
flutter run
Nhập trình bổ trợ cài đặt Firebase:
import 'package:firebase_app_installations/firebase_app_installations.dart';
Xoá một lượt cài đặt Firebase
Dữ liệu liên kết với bản cài đặt Firebase thường không mang tính cá nhân xác định danh tính. Tuy nhiên, bạn nên cho phép người dùng quản lý và xoá dữ liệu này.
Mã cài đặt Firebase là 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ó các chỉ số Firebase mã cài đặt. Firebase mã cài đặt xác định ứng dụng cài đặt và dữ liệu gắn liền với lượt cài đặt ứng dụng đó.
Khi bạn xoá mã cài đặt, dữ liệu liên kết với mã cài đặt đó mã 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ụ của Firebase sử dụng Firebase mã cài đặt để xác định lượt cài đặt trong vòng 180 ngày. Quy trình này được mô tả ở cấp độ cao trong tuyên bố về việc xoá và giữ lại dữ liệu.
Trừ phi bạn tắt tất cả các dịch vụ tạo FID trong 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 bản cài đặt Firebase mới, và không liên kết tài khoản đó với mã nhận dạng hoặc dữ liệu trước đó theo bất kỳ cách nào.
Xoá FID bằng lệnh gọi API ứng dụng
Cách xoá FID do các dịch vụ Firebase tạo: gọi phương thức thích hợp từ SDK cài đặt Firebase:
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+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();
Xoá FID bằng lệnh gọi API máy chủ
Cách xoá FID bằng 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 thêm.
Sau khi thêm SDK, hãy xoá FID thông qua lệnh gọi đến bằng ngôn ngữ bạn chọn (lưu ý: Ngoại trừ Node.js, các hàm này phản ánh cách đặt tên mã thực thể. Tuy nhiên, tất cả họ đều xoá FID khi được gọi bằng Firebase SDK hiện tại).
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)
Tiến hành
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ã cài đặt Firebase bằng lệnh gọi API máy chủ, Firebase Dịch vụ sẽ bắt đầu quá trình xoá dữ liệu gắn với mã cài đặt đó, dừng chấp nhận dữ liệu mới cho mã nhận dạng đó trong khoảng thời gian 1-2 ngày, sau đó thông báo ứng dụng khách mà mã nhận dạng đã bị xoá. Cho đến khi Firebase thông báo cho ứng dụng khách, một số các dịch vụ của ứng dụng vẫn có thể nhắm mục tiêu mã này, ví dụ: Firebase người dùng có thể tiếp tục nhận được thông báo của FCM trong giờ.
Nếu bạn muốn xoá mã cài đặt Firebase hiện tại và sử dụng ngay Các dịch vụ của Firebase có mã nhận dạng mới, không liên quan, sử dụng API ứng dụng khách để 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ể làm như vậy bằng cách truy xuất mã cài đặt Firebase. Ví dụ: để tạo các phân đoạn lượt cài đặt ứng dụng để nhập BiqQuery hoặc để thực hiện 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 mã cài đặt Firebase tương ứng.
Cách truy xuất mã 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+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 việc cài đặt
Các dịch vụ của Firebase có thể xác thực các lượt cài đặt Firebase bằng mã thông báo xác thực truy xuất từ FIS. Ví dụ: khi thiết kế thử nghiệm A/B cho Remote Config, bạn có thể xác thực một 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 quá trình cài đặt là một mã thông báo mang tính 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 một lượt cài đặt:
- Mã cài đặt Firebase
- Dự án đã liên kết (
projectNumber
) - Mã ứng dụng Firebase đã liên kết (
appId
) - Ngày hết hạn của mã thông báo
Không thể thu hồi mã thông báo xác thực cài đặt và mã này sẽ có hiệu lực cho đến ngày hết hạn của tài khoản. Thời gian tồn tại của mã thông báo mặc định là một tuần.
Cách truy xuất mã thông báo xác thực chế độ 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+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 mã cài đặt Firebase
Trong quá trình hoạt động bình thường của một ứng dụng, có Firebase mã cài đặt (FID) không yêu cầu giám sát đặc biệt. Tuy nhiên, những ứng dụng truy xuất và sử dụng FID rõ ràng nên thêm logic để theo dõi khả năng xoá hoặc xoay Độ trễ đầu vào đầu tiên. Sau đây là một số trường hợp mà FID có thể bị xoá 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 xoá bộ nhớ đệm của ứng dụng hoặc thiết bị.
- Quá trình xoá FID được kích hoạt trong phần phụ trợ do ứng dụng không hoạt động (hiện ngưỡng cho chỉ số 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 bị xoá FID trong những ứng dụng này các loại trường hợp khác nhau, thì chúng sẽ được chỉ định 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 đã xoá là bị xoá, bất kể mức độ hoàn thiện của chính nó và được thay thế bằng mã thông báo xác thực cài đặt.
Các ứng dụng có thể theo dõi những thay đổi này và phản hồi một cách phù hợp.
Cách giám sát chế độ xoay 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 NSNotificationName.InstallationIDDidChange
là
đăng lên NSNotificationCenter mặc định bất cứ khi nào có
Đã chỉ định FID (Độ trễ đầu vào đầu tiên).
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 để 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ẽ là đã 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ã phiên bản sang Firebase lượt cài đặt
Trước khi giới thiệu Firebase cài đặt, Firebase dựa vào SDK mã phiên bản cho giá trị nhận dạng lượt cài đặt ứng dụng. Firebase lần cài đặt mang lại nhiều lợi thế đáng kể so với mã thực thể 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 mã phiên bản nên di chuyển đến Firebase lượt cài đặt.
Quá trình di chuyển khác nhau tuỳ theo ứng dụng của bạn:
Những ứng dụng không gọi trực tiếp API mã phiên bản có thể di chuyển bằng cách cập nhật các 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 lệnh gọi API một cách rõ ràng đến mã phiên bản phải cập nhật phiên bản SDK và thay đổi mã để thay thế Mã phiên bản bằng các phương thức Firebase lượt cài đặt hoặc FCM tương đương. Nếu ứng dụng của bạn sử dụng Mã phiên bản để truy xuất mã thông báo đăng ký FCM hoặc sử dụng rõ ràng Mã phiên bản để nhắm mục tiêu các phiên bản ứng dụng hoặc cho mục đích khác, bạn sẽ cần phải hãy 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 mã phiên bản Firebase của giá trị nhận dạng cũ. 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
- Các SDK Android trước ngày 27 tháng 2 năm 2020
Điều này có nghĩa là bạn không bắt buộc phải di chuyển các ứng dụng sang Firebase bản cài đặt; 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 Firebase lượt cài đặt
Để di chuyển từ mã phiên bản sang bản cài đặt Firebase, hãy đảm bảo rằng ứng dụng sử dụng ít nhất số phiên bản tối thiểu được liệt kê của Firebase SDK sau:
SDK Firebase | 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 | Các 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 | Các 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 | Phiên bản 17.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 SDK mã 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ế tương tự trong lượt cài đặt Firebase SDK hoặc SDK FCM.
Truy xuất giá trị nhận dạng
Các phương thức để lấy mã thực thể sẽ được thay thế bằng các phương thức để thu thập lượt cài đặt Mã nhận dạng. 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)") self.remoteFCMTokenMessage.text = "Remote FCM registration token: \(token)" } }
Objective-C
[[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error fetching the remote FCM registration token: %@", error); } else { NSLog(@"Remote FCM registration token: %@", token); NSString* message = [NSString stringWithFormat:@"FCM registration token: %@", token]; self.remoteFCMTokenMessage.text = message; } }];
Java
FirebaseInstanceId.getInstance().getInstanceId() .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() { @Override public void onComplete(@NonNull Task<InstanceIdResult> task) { Log.d("IID_TOKEN", task.getResult().getToken()); } });
Kotlin+KTX
FirebaseInstanceId.getInstance().instanceId .addOnSuccessListener { result -> Log.d("IID_TOKEN", result.token) }
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+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") } }
Xoá giá trị nhận dạng
Các phương thức xoá mã phiên bản sẽ được thay thế bằng phương thức xoá Firebase mã cài đặt. 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+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, FCM ứng dụng đã truy xuất mã thông báo đăng ký từ Mã 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() })
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)") self.remoteFCMTokenMessage.text = "Remote FCM registration token: \(token)" } }
Objective-C
[[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error fetching the remote FCM registration token: %@", error); } else { NSLog(@"Remote FCM registration token: %@", token); NSString* message = [NSString stringWithFormat:@"FCM registration token: %@", token]; self.remoteFCMTokenMessage.text = message; } }];
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() })
Swift
Messaging.messaging().token { token, error in if let error = error { print("Error fetching FCM registration token: \(error)") } else if let token = token { print("FCM registration token: \(token)") self.fcmRegTokenMessage.text = "Remote FCM registration token: \(token)" } }
Objective-C
[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) { if (error != nil) { NSLog(@"Error getting FCM registration token: %@", error); } else { NSLog(@"FCM registration token: %@", token); self.fcmRegTokenMessage.text = token; } }];