Định cấu hình mẫu bằng SDK dành cho quản trị viên, API REST và Giao diện dòng lệnh (CLI) của Firebase.
Tài liệu này mô tả cách bạn có thể đọc và sửa đổi theo phương thức lập trình tập hợp các tham số và điều kiện có định dạng JSON, còn được gọi là mẫu Remote Config. Điều này cho phép bạn thực hiện các thay đổi về mẫu ở phần phụ trợ mà ứng dụng khách có thể tìm nạp bằng thư viện ứng dụng.
Bằng cách sử dụng Remote Config API REST, Admin SDKs hoặc Firebase CLI được mô tả trong hướng dẫn này, bạn có thể bỏ qua việc quản lý mẫu trong bảng điều khiển Firebase để tích hợp trực tiếp các thay đổi Remote Config vào quy trình của riêng mình. Ví dụ: với các API phụ trợ Remote Config, bạn có thể:
- Lên lịch Remote Config cập nhật. Khi sử dụng các lệnh gọi API kết hợp với dịch vụ chạy ngầm theo thời gian định trước, bạn có thể thay đổi các giá trị Remote Config theo lịch trình thường xuyên.
- Nhập hàng loạt các giá trị cấu hình để chuyển đổi hiệu quả từ hệ thống độc quyền của riêng bạn sang Firebase Remote Config.
- Sử dụng Remote Config với Cloud Functions for Firebase, thay đổi các giá trị trong ứng dụng dựa trên các sự kiện xảy ra ở phía máy chủ. Ví dụ: bạn có thể dùng Remote Config để quảng bá một tính năng mới trong ứng dụng của mình, sau đó tự động tắt chương trình quảng bá đó khi phát hiện thấy có đủ số người đã tương tác với tính năng mới.

Các phần sau đây trong hướng dẫn này mô tả những thao tác bạn có thể thực hiện bằng cách sử dụng các API phụ trợ Remote Config.
Sửa đổi Remote Config bằng Firebase Admin SDK
Admin SDK là một tập hợp các thư viện máy chủ cho phép bạn tương tác với Firebase từ các môi trường đặc quyền. Ngoài việc thực hiện các bản cập nhật cho Remote Config, Admin SDK còn cho phép tạo và xác minh mã thông báo xác thực Firebase, cũng như đọc và ghi từ Realtime Database. Để tìm hiểu thêm về các điều kiện tiên quyết và cách thiết lập Admin SDK, hãy xem bài viết Thêm Firebase Admin SDK vào máy chủ.
Để xem mã mẫu thực hiện các tác vụ này bằng Admin SDK, hãy xem một trong các ứng dụng khởi động nhanh sau:
- Firebase Remote Config Hướng dẫn nhanh về Java
- Firebase Remote Config Hướng dẫn nhanh về Node.js
- Firebase Remote Config Python Quickstart
Trong một quy trình Remote Config thông thường, bạn có thể nhận mẫu hiện tại, sửa đổi một số thông số hoặc nhóm thông số và điều kiện, xác thực mẫu, rồi xuất bản mẫu đó. Trước khi thực hiện các lệnh gọi API đó, bạn phải uỷ quyền cho các yêu cầu từ SDK.
Khởi chạy SDK và uỷ quyền cho các yêu cầu API
Khi bạn khởi tạo Admin SDK mà không có tham số, SDK sẽ sử dụng Thông tin xác thực mặc định của ứng dụng Google và đọc các lựa chọn từ biến môi trường FIREBASE_CONFIG.
Nếu nội dung của biến FIREBASE_CONFIG bắt đầu bằng {, thì nội dung đó sẽ được phân tích cú pháp dưới dạng một đối tượng JSON. Nếu không, SDK sẽ giả định rằng chuỗi này là tên của một tệp JSON chứa các lựa chọn.
Ví dụ:
Node.js
const admin = require('firebase-admin'); admin.initializeApp();
Java
FileInputStream serviceAccount = new FileInputStream("service-account.json"); FirebaseOptions options = FirebaseOptions.builder() .setCredentials(GoogleCredentials.fromStream(serviceAccount)) .build(); FirebaseApp.initializeApp(options);
Lấy mẫu Remote Config hiện tại
Khi làm việc với các mẫu Remote Config, hãy nhớ rằng các mẫu này được lập phiên bản và mỗi phiên bản có thời gian tồn tại giới hạn từ thời điểm tạo đến thời điểm bạn thay thế bằng một bản cập nhật: 90 ngày, với tổng giới hạn là 300 phiên bản được lưu trữ. Hãy xem phần Mẫu và phiên bản để biết thêm thông tin.
Bạn có thể dùng các API phụ trợ để lấy phiên bản đang hoạt động hiện tại của mẫu Remote Config ở định dạng JSON.
Các tham số và giá trị tham số được tạo riêng dưới dạng biến thể trong một thử nghiệm A/B Testing sẽ không được đưa vào các mẫu đã xuất.
Cách lấy mẫu:
Node.js
function getTemplate() { var config = admin.remoteConfig(); config.getTemplate() .then(function (template) { console.log('ETag from server: ' + template.etag); var templateStr = JSON.stringify(template); fs.writeFileSync('config.json', templateStr); }) .catch(function (err) { console.error('Unable to get template'); console.error(err); }); }
Java
Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get(); // See the ETag of the fetched template. System.out.println("ETag from server: " + template.getETag());
Sửa đổi thông số Remote Config
Bạn có thể sửa đổi và thêm các tham số Remote Config và nhóm tham số theo phương thức lập trình. Ví dụ: đối với một nhóm tham số hiện có có tên là "new_menu", bạn có thể thêm một tham số để kiểm soát việc hiển thị thông tin theo mùa:
Node.js
function addParameterToGroup(template) { template.parameterGroups['new_menu'].parameters['spring_season'] = { defaultValue: { useInAppDefault: true }, description: 'spring season menu visibility.', }; }
Java
template.getParameterGroups().get("new_menu").getParameters() .put("spring_season", new Parameter() .setDefaultValue(ParameterValue.inAppDefault()) .setDescription("spring season menu visibility.") );
API này cho phép bạn tạo các tham số và nhóm tham số mới, hoặc sửa đổi các giá trị mặc định, giá trị có điều kiện và nội dung mô tả. Trong mọi trường hợp, bạn phải xuất bản mẫu một cách rõ ràng sau khi thực hiện các sửa đổi.
Sửa đổi điều kiện Remote Config
Bạn có thể sửa đổi và thêm các điều kiện Remote Config và giá trị có điều kiện theo phương thức lập trình. Ví dụ: cách thêm một điều kiện mới:
Node.js
function addNewCondition(template) { template.conditions.push({ name: 'android_en', expression: 'device.os == \'android\' && device.country in [\'us\', \'uk\']', tagColor: 'BLUE', }); }
Java
template.getConditions().add(new Condition("android_en", "device.os == 'android' && device.country in ['us', 'uk']", TagColor.BLUE));
Trong mọi trường hợp, bạn phải xuất bản mẫu một cách rõ ràng sau khi thực hiện các sửa đổi.
Các API phụ trợ Remote Config cung cấp một số điều kiện và toán tử so sánh mà bạn có thể dùng để thay đổi hành vi và giao diện của ứng dụng. Để tìm hiểu thêm về các điều kiện và toán tử được hỗ trợ cho các điều kiện này, hãy xem tài liệu tham khảo về biểu thức có điều kiện.
Xác thực mẫu Remote Config
Bạn có thể xác thực nội dung cập nhật trước khi xuất bản (không bắt buộc), như minh hoạ:
Node.js
function validateTemplate(template) { admin.remoteConfig().validateTemplate(template) .then(function (validatedTemplate) { // The template is valid and safe to use. console.log('Template was valid and safe to use'); }) .catch(function (err) { console.error('Template is invalid and cannot be published'); console.error(err); }); }
Java
try { Template validatedTemplate = FirebaseRemoteConfig.getInstance() .validateTemplateAsync(template).get(); System.out.println("Template was valid and safe to use"); } catch (ExecutionException e) { if (e.getCause() instanceof FirebaseRemoteConfigException) { FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause(); System.out.println("Template is invalid and cannot be published"); System.out.println(rcError.getMessage()); } }
Quy trình xác thực này kiểm tra các lỗi như khoá trùng lặp cho các tham số và điều kiện, tên điều kiện không hợp lệ hoặc điều kiện không tồn tại, hoặc etag có định dạng sai. Ví dụ: một yêu cầu chứa nhiều hơn số lượng khoá được phép (2.000) sẽ trả về thông báo lỗi Param count too large.
Xuất bản mẫu Remote Config
Sau khi truy xuất một mẫu và sửa đổi mẫu đó bằng thông tin cập nhật của mình, bạn có thể xuất bản mẫu đó. Việc xuất bản một mẫu như mô tả trong phần này sẽ thay thế toàn bộ mẫu cấu hình hiện có bằng tệp đã cập nhật và mẫu đang hoạt động mới được chỉ định số phiên bản lớn hơn mẫu mà mẫu đó thay thế một đơn vị.
Nếu cần, bạn có thể sử dụng API REST để khôi phục về phiên bản trước. Để giảm thiểu nguy cơ xảy ra lỗi trong bản cập nhật, bạn có thể xác thực trước khi xuất bản.
Remote Config hoạt động cá nhân hoá và điều kiện được đưa vào các mẫu đã tải xuống, vì vậy, bạn cần lưu ý những hạn chế sau khi cố gắng xuất bản sang một dự án khác:
Bạn không thể nhập chế độ cá nhân hoá từ dự án này sang dự án khác.
Ví dụ: nếu đã bật tính năng cá nhân hoá trong dự án và tải xuống cũng như chỉnh sửa một mẫu, bạn có thể xuất bản mẫu đó vào cùng dự án, nhưng không thể xuất bản vào một dự án khác trừ phi bạn xoá tính năng cá nhân hoá khỏi mẫu.
Bạn có thể nhập các điều kiện từ dự án này sang dự án khác, nhưng lưu ý rằng mọi giá trị có điều kiện cụ thể (chẳng hạn như mã ứng dụng hoặc đối tượng) phải có trong dự án mục tiêu trước khi xuất bản.
Ví dụ: nếu bạn có một tham số Remote Config sử dụng một điều kiện chỉ định giá trị nền tảng là
iOS, thì bạn có thể xuất bản mẫu đó sang một dự án khác, vì giá trị nền tảng là như nhau đối với mọi dự án. Tuy nhiên, nếu chứa một điều kiện dựa trên một mã ứng dụng hoặc đối tượng người dùng cụ thể không tồn tại trong dự án mục tiêu, thì quá trình xác thực sẽ thất bại.Nếu mẫu mà bạn dự định xuất bản có chứa các điều kiện dựa trên Google Analytics, thì bạn phải bật Analytics trong dự án mục tiêu.
Node.js
function publishTemplate() { var config = admin.remoteConfig(); var template = config.createTemplateFromJSON( fs.readFileSync('config.json', 'UTF8')); config.publishTemplate(template) .then(function (updatedTemplate) { console.log('Template has been published'); console.log('ETag from server: ' + updatedTemplate.etag); }) .catch(function (err) { console.error('Unable to publish template.'); console.error(err); }); }
Java
try { Template publishedTemplate = FirebaseRemoteConfig.getInstance() .publishTemplateAsync(template).get(); System.out.println("Template has been published"); // See the ETag of the published template. System.out.println("ETag from server: " + publishedTemplate.getETag()); } catch (ExecutionException e) { if (e.getCause() instanceof FirebaseRemoteConfigException) { FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause(); System.out.println("Unable to publish template."); System.out.println(rcError.getMessage()); } }
Sửa đổi Remote Config bằng API REST
Phần này mô tả các chức năng chính của REST API Remote Config tại https://firebaseremoteconfig.googleapis.com. Để biết thông tin chi tiết đầy đủ, hãy xem Tài liệu tham khảo API.
Lấy mã truy cập để xác thực và uỷ quyền cho các yêu cầu API
Các dự án Firebase hỗ trợ tài khoản dịch vụ của Google. Bạn có thể dùng tài khoản này để gọi API máy chủ Firebase từ máy chủ ứng dụng hoặc môi trường đáng tin cậy. Nếu đang phát triển mã cục bộ hoặc triển khai ứng dụng tại chỗ, bạn có thể sử dụng thông tin xác thực thu được bằng tài khoản dịch vụ này để uỷ quyền cho các yêu cầu của máy chủ.
Bạn có thể xem tất cả tài khoản dịch vụ cho dự án Firebase của mình trong thẻ
Để xác thực tài khoản dịch vụ và uỷ quyền cho tài khoản đó truy cập vào các dịch vụ của Firebase, bạn phải tạo một tệp khoá riêng tư ở định dạng JSON.
Cách tạo tệp khoá riêng tư cho tài khoản dịch vụ:
Trong bảng điều khiển Firebase, hãy chuyển đến thẻ
Cài đặt > Tài khoản dịch vụ.Nhấp vào Tạo khoá riêng tư mới, sau đó xác nhận bằng cách nhấp vào Tạo khoá.
Lưu trữ an toàn tệp JSON chứa khoá.
Khi uỷ quyền thông qua tài khoản dịch vụ, bạn có hai lựa chọn để cung cấp thông tin đăng nhập cho ứng dụng của mình. Bạn có thể đặt biến môi trường GOOGLE_APPLICATION_CREDENTIALS hoặc truyền rõ ràng đường dẫn đến khoá tài khoản dịch vụ trong mã. Lựa chọn đầu tiên an toàn hơn và bạn nên dùng.
Cách đặt biến môi trường:
Đặt biến môi trường GOOGLE_APPLICATION_CREDENTIALS thành đường dẫn tệp của tệp JSON chứa khoá tài khoản dịch vụ của bạn. Biến này chỉ áp dụng cho phiên shell hiện tại của bạn, vì vậy, nếu bạn mở một phiên mới, hãy đặt lại biến.
Linux hoặc macOS
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
Với PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
Sau khi bạn hoàn tất các bước trên, Thông tin xác thực mặc định của ứng dụng (ADC) có thể xác định ngầm thông tin xác thực của bạn, cho phép bạn sử dụng thông tin xác thực tài khoản dịch vụ khi kiểm thử hoặc chạy trong môi trường không phải của Google.
Sử dụng thông tin đăng nhập Firebase cùng với Thư viện xác thực của Google cho ngôn ngữ bạn muốn để truy xuất mã truy cập OAuth 2.0 có thời hạn ngắn:
node.js
function getAccessToken() {
return admin.credential.applicationDefault().getAccessToken()
.then(accessToken => {
return accessToken.access_token;
})
.catch(err => {
console.error('Unable to get access token');
console.error(err);
});
}
Trong ví dụ này, thư viện ứng dụng Google API xác thực yêu cầu bằng mã thông báo web JSON (JWT). Để biết thêm thông tin, hãy xem bài viết Mã thông báo web JSON.
Python
def _get_access_token():
"""Retrieve a valid access token that can be used to authorize requests.
:return: Access token.
"""
credentials = ServiceAccountCredentials.from_json_keyfile_name(
'service-account.json', SCOPES)
access_token_info = credentials.get_access_token()
return access_token_info.access_token
Java
public static String getAccessToken() throws IOException {
GoogleCredentials googleCredentials = GoogleCredentials
.fromStream(new FileInputStream("service-account.json"))
.createScoped(Arrays.asList(SCOPES));
googleCredentials.refreshAccessToken();
return googleCredentials.getAccessToken().getTokenValue();
}
Sau khi mã truy cập hết hạn, phương thức làm mới mã thông báo sẽ tự động được gọi để truy xuất mã truy cập mới.
Để cho phép truy cập vào Remote Config, hãy yêu cầu phạm vi https://www.googleapis.com/auth/firebase.remoteconfig.
Sửa đổi mẫu Remote Config
Khi làm việc với các mẫu Remote Config, hãy nhớ rằng các mẫu này được lập phiên bản và mỗi phiên bản có thời gian tồn tại giới hạn từ thời điểm tạo đến thời điểm bạn thay thế bằng một bản cập nhật: 90 ngày, với tổng giới hạn là 300 phiên bản được lưu trữ. Hãy xem phần Mẫu và phiên bản để biết thêm thông tin.
Lấy mẫu Remote Config hiện tại
Bạn có thể dùng các API phụ trợ để lấy phiên bản đang hoạt động hiện tại của mẫu Remote Config ở định dạng JSON.
Các tham số và giá trị tham số được tạo riêng dưới dạng biến thể trong một thử nghiệm A/B Testing sẽ không được đưa vào các mẫu đã xuất.
Sử dụng các lệnh sau:
cURL
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filenameLệnh này xuất tải trọng JSON vào một tệp và các tiêu đề (bao gồm cả Etag) vào một tệp riêng biệt.
Yêu cầu HTTP thô
Host: firebaseremoteconfig.googleapis.com GET /v1/projects/my-project-id/remoteConfig HTTP/1.1 Authorization: Bearer token Accept-Encoding: gzip
Lệnh gọi API này trả về JSON sau đây, cùng với một tiêu đề riêng biệt bao gồm một ETag mà bạn dùng cho yêu cầu tiếp theo.
Xác thực mẫu Remote Config
Bạn có thể xác thực nội dung cập nhật trước khi xuất bản (không bắt buộc).
Xác thực nội dung cập nhật mẫu bằng cách thêm tham số URL ?validate_only=true vào yêu cầu xuất bản của bạn.
Trong phản hồi, mã trạng thái 200 và etag đã cập nhật có hậu tố -0 có nghĩa là nội dung cập nhật của bạn đã được xác thực thành công. Mọi phản hồi không phải 200 đều cho biết dữ liệu JSON chứa các lỗi mà bạn phải sửa trước khi xuất bản.
Cập nhật mẫu Remote Config
Sau khi truy xuất một mẫu và sửa đổi nội dung JSON bằng thông tin cập nhật của mình, bạn có thể xuất bản mẫu đó. Việc xuất bản một mẫu như mô tả trong phần này sẽ thay thế toàn bộ mẫu cấu hình hiện có bằng tệp đã cập nhật và mẫu đang hoạt động mới được chỉ định số phiên bản lớn hơn mẫu mà mẫu đó thay thế một đơn vị.
Nếu cần, bạn có thể sử dụng API REST để khôi phục về phiên bản trước. Để giảm thiểu nguy cơ xảy ra lỗi trong bản cập nhật, bạn có thể xác thực trước khi xuất bản.
Remote Config hoạt động cá nhân hoá và điều kiện được đưa vào các mẫu đã tải xuống, vì vậy, bạn cần lưu ý những hạn chế sau khi cố gắng xuất bản sang một dự án khác:
Bạn không thể nhập chế độ cá nhân hoá từ dự án này sang dự án khác.
Ví dụ: nếu đã bật tính năng cá nhân hoá trong dự án và tải xuống cũng như chỉnh sửa một mẫu, bạn có thể xuất bản mẫu đó vào cùng dự án, nhưng không thể xuất bản vào một dự án khác trừ phi bạn xoá tính năng cá nhân hoá khỏi mẫu.
Bạn có thể nhập các điều kiện từ dự án này sang dự án khác, nhưng lưu ý rằng mọi giá trị có điều kiện cụ thể (chẳng hạn như mã ứng dụng hoặc đối tượng) phải có trong dự án mục tiêu trước khi xuất bản.
Ví dụ: nếu bạn có một tham số Remote Config sử dụng một điều kiện chỉ định giá trị nền tảng là
iOS, thì bạn có thể xuất bản mẫu đó sang một dự án khác, vì giá trị nền tảng là như nhau đối với mọi dự án. Tuy nhiên, nếu chứa một điều kiện dựa trên một mã ứng dụng hoặc đối tượng người dùng cụ thể không tồn tại trong dự án mục tiêu, thì quá trình xác thực sẽ thất bại.Nếu mẫu mà bạn dự định xuất bản có chứa các điều kiện dựa trên Google Analytics, thì bạn phải bật Analytics trong dự án mục tiêu.
cURL
curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -d @filenameĐối với lệnh curl này, bạn có thể chỉ định nội dung bằng cách sử dụng ký tự "@", theo sau là tên tệp.
Yêu cầu HTTP thô
Host: firebaseremoteconfig.googleapis.com PUT /v1/projects/my-project-id/remoteConfig HTTP/1.1 Content-Length: size Content-Type: application/json; UTF8 Authorization: Bearer token If-Match: expected ETag Accept-Encoding: gzip JSON_HERE
Vì đây là yêu cầu ghi, nên ETag sẽ được lệnh này sửa đổi và một ETag mới sẽ được cung cấp trong tiêu đề phản hồi của lệnh PUT tiếp theo.
Sửa đổi điều kiện Remote Config
Bạn có thể sửa đổi các điều kiện Remote Config và giá trị có điều kiện theo phương thức lập trình. Với API REST, bạn phải chỉnh sửa trực tiếp mẫu để sửa đổi các điều kiện trước khi xuất bản mẫu.
{
"conditions": [{
"name": "android_english",
"expression": "device.os == 'android' && device.country in ['us', 'uk']",
"tagColor": "BLUE"
}, {
"name": "tenPercent",
"expression": "percent <= 10",
"tagColor": "BROWN"
}],
"parameters": {
"welcome_message": {
"defaultValue": {
"value": "Welcome to this sample app"
},
"conditionalValues": {
"tenPercent": {
"value": "Welcome to this new sample app"
}
},
"description": "The sample app's welcome message"
},
"welcome_message_caps": {
"defaultValue": {
"value": "false"
},
"conditionalValues": {
"android_english": {
"value": "true"
}
},
"description": "Whether the welcome message should be displayed in all
capital letters."
}
}
}Các nội dung sửa đổi trong đoạn mã trước tiên sẽ xác định một tập hợp các điều kiện, sau đó xác định các giá trị mặc định và giá trị tham số dựa trên điều kiện (giá trị có điều kiện) cho từng tham số. Họ cũng thêm nội dung mô tả không bắt buộc cho từng phần tử; giống như nhận xét mã, những nội dung này dành cho nhà phát triển sử dụng và không xuất hiện trong ứng dụng. ETag cũng được cung cấp cho mục đích kiểm soát phiên bản.
Các API phụ trợ Remote Config cung cấp một số điều kiện và toán tử so sánh mà bạn có thể dùng để thay đổi hành vi và giao diện của ứng dụng. Để tìm hiểu thêm về các điều kiện và toán tử được hỗ trợ cho các điều kiện này, hãy xem tài liệu tham khảo về biểu thức có điều kiện.
Mã lỗi HTTP
| Mã trạng thái | Ý nghĩa |
|---|---|
| 200 | Đã cập nhật thành công |
| 400 | Đã xảy ra lỗi xác thực. Ví dụ: một yêu cầu chứa nhiều hơn số lượng khoá được phép (2.000) sẽ trả về 400 (Yêu cầu không hợp lệ) kèm theo thông báo lỗi Param count too large.
Ngoài ra, Mã trạng thái HTTPS này có thể xảy ra trong 2 trường hợp sau:
|
| 401 | Đã xảy ra lỗi uỷ quyền (không có mã truy cập nào được cung cấp hoặc bạn chưa thêm API REST Remote Config của Firebase vào dự án trong Cloud Developer Console) |
| 403 | Đã xảy ra lỗi xác thực (bạn cung cấp mã truy cập không chính xác) |
| 500 | Đã xảy ra lỗi nội bộ. Nếu lỗi này xảy ra, hãy gửi phiếu yêu cầu hỗ trợ cho Firebase |
Mã trạng thái 200 có nghĩa là mẫu Remote Config (các tham số, giá trị và điều kiện cho dự án) đã được cập nhật và hiện có sẵn cho các ứng dụng sử dụng dự án này. Các mã trạng thái khác cho biết mẫu Remote Config từng tồn tại trước đó vẫn có hiệu lực.
Sau khi bạn gửi nội dung cập nhật cho mẫu, hãy chuyển đến bảng điều khiển Firebase để xác minh rằng các thay đổi của bạn xuất hiện như dự kiến. Điều này rất quan trọng vì thứ tự của các điều kiện ảnh hưởng đến cách chúng được đánh giá (điều kiện đầu tiên đánh giá true sẽ có hiệu lực).
Việc sử dụng ETag và các bản cập nhật bắt buộc
API REST Remote Config sử dụng thẻ thực thể (ETag) để ngăn chặn tình trạng tranh đua và các bản cập nhật trùng lặp cho tài nguyên. Để tìm hiểu thêm về ETag, hãy xem ETag – HTTP.
Đối với API REST, Google khuyên bạn nên lưu vào bộ nhớ đệm ETag do lệnh GET gần đây nhất cung cấp và sử dụng giá trị ETag đó trong tiêu đề của yêu cầu If-Match khi đưa ra lệnh PUT. Nếu lệnh PUT của bạn dẫn đến Mã trạng thái HTTPS 409, bạn nên phát hành lệnh GET mới để có được ETag và mẫu mới để sử dụng với lệnh PUT tiếp theo.
Bạn có thể bỏ qua ETag và biện pháp bảo vệ mà ETag cung cấp bằng cách buộc mẫu Remote Config được cập nhật như sau: If-Match: *. Tuy nhiên, bạn không nên sử dụng phương pháp này vì có nguy cơ làm mất các bản cập nhật cho mẫu Remote Config nếu nhiều ứng dụng đang cập nhật mẫu Remote Config. Loại xung đột này có thể xảy ra khi có nhiều ứng dụng sử dụng API hoặc khi có các bản cập nhật xung đột từ ứng dụng API và người dùng bảng điều khiển Firebase.
Để được hướng dẫn về cách quản lý các phiên bản mẫu Remote Config, hãy xem bài viết Mẫu Remote Config và việc quản lý phiên bản.
Sửa đổi Remote Config bằng giao diện dòng lệnh Firebase
CLI Firebase cho phép bạn kiểm tra, quản lý và khôi phục các mẫu Remote Config, cũng như liệt kê, kiểm tra và xoá các thử nghiệm và quy trình triển khai Remote Config ngay từ dòng lệnh.
Điều kiện tiên quyết và cách thiết lập
Đăng nhập vào Firebase:
firebase loginĐặt dự án đang hoạt động hoặc chỉ định
--project PROJECT_IDbằng mỗi lệnh:firebase use PROJECT_ID
Đảm bảo rằng tài khoản hoặc tài khoản dịch vụ của bạn có các quyền IAM cần thiết:
- Để kiểm tra, tải xuống hoặc khôi phục các mẫu Remote Config và quản lý việc triển khai, bạn cần có vai trò Firebase Remote Config Quản trị viên (
roles/cloudconfig.admin) (hoặc các quyềncloudconfig.configs.get,cloudconfig.configs.update,cloudconfig.rollouts.get,cloudconfig.rollouts.listvàcloudconfig.rollouts.archive). Đối với các thao tác chỉ xem, vai trò Firebase Remote Config Người xem (roles/cloudconfig.viewer) (cloudconfig.configs.get,cloudconfig.rollouts.getvàcloudconfig.rollouts.list) là đủ. - Để quản lý các thử nghiệm A/B Testing, bạn cần có vai trò Quản trị viên Firebase A/B Testing (
roles/firebaseabt.admin) (hoặc các quyềnfirebaseabt.experiments.get,firebaseabt.experiments.listvàfirebaseabt.experiments.delete). Đối với các thao tác chỉ xem, vai trò Người xem Firebase A/B Testing (roles/firebaseabt.viewer) là đủ.
Tóm tắt lệnh CLI
| Ra lệnh | Mô tả |
|---|---|
firebase remoteconfig:versions:list |
Liệt kê các phiên bản mẫu Remote Config gần đây. |
firebase remoteconfig:get |
Lấy một mẫu Remote Config (bạn có thể ghi vào một tệp). |
firebase remoteconfig:rollback |
Khôi phục mẫu Remote Config về phiên bản trước. |
firebase remoteconfig:experiments:list |
Liệt kê tất cả các thử nghiệm Remote Config trong dự án. |
firebase remoteconfig:experiments:get |
Lấy thông tin chi tiết về một thử nghiệm Remote Config cụ thể. |
firebase remoteconfig:experiments:delete |
Xoá một thử nghiệm Remote Config cụ thể. |
firebase remoteconfig:rollouts:list |
Liệt kê tất cả các đợt phát hành Remote Config trong dự án. |
firebase remoteconfig:rollouts:get |
Lấy thông tin chi tiết về một đợt phát hành Remote Config cụ thể. |
firebase remoteconfig:rollouts:delete |
Xoá một đợt phát hành Remote Config cụ thể. |
Sửa đổi mẫu và phiên bản Remote Config
Sử dụng các lệnh sau để kiểm tra, tải xuống và khôi phục các mẫu Remote Config và nhật ký phiên bản của chúng:
Liệt kê các phiên bản mẫu
Theo mặc định, danh sách này liệt kê 10 phiên bản gần đây nhất của mẫu Remote Config, bao gồm số phiên bản, thời gian cập nhật, nguồn cập nhật, loại cập nhật và updateUser.
firebase remoteconfig:versions:list [--limit NUMBER_OF_VERSIONS]--limit NUMBER_OF_VERSIONS: Số lượng phiên bản tối đa cần trả về. Chỉ định0để trả về tất cả các phiên bản hiện có (tối đa 300 phiên bản được lưu trữ).
Ví dụ:
Liệt kê 10 phiên bản gần đây nhất:
firebase remoteconfig:versions:listLiệt kê tất cả các phiên bản hiện có:
firebase remoteconfig:versions:list --limit 0Liệt kê 5 phiên bản gần đây nhất:
firebase remoteconfig:versions:list --limit 5
Lấy mẫu
Lấy mẫu Remote Config và xuất các nhóm tham số, tham số, tên điều kiện và phiên bản. Theo mặc định, lệnh này sẽ truy xuất phiên bản đang hoạt động mới nhất và in một bản tóm tắt được định dạng vào thiết bị đầu cuối.
firebase remoteconfig:get [-v, --version_number VERSION_NUMBER] [-o, --output FILENAME]-v, --version_number VERSION_NUMBER: Số phiên bản của mẫu cần truy xuất. Nếu bạn bỏ qua thuộc tính này, phiên bản mặc định sẽ là phiên bản mới nhất.-o, --output FILENAME: Ghi trực tiếp tải trọng JSON mẫu vào đường dẫn đã chỉ định thay vì in ra stdout.
Ví dụ:
Hiển thị mẫu đang hoạt động hiện tại trong thiết bị đầu cuối:
firebase remoteconfig:getTải mẫu đang hoạt động hiện tại xuống một tệp JSON:
firebase remoteconfig:get -o remote_config_template.jsonTải một phiên bản cũ cụ thể (ví dụ: phiên bản 12) xuống một tệp:
firebase remoteconfig:get -v 12 -o remote_config_v12.json
Quay lại phiên bản trước của mẫu
Khôi phục mẫu Remote Config đang hoạt động về phiên bản trước. Thao tác này sẽ tạo một phiên bản đang hoạt động mới có nội dung giống hệt với phiên bản đích.
firebase remoteconfig:rollback [-v, --version_number VERSION_NUMBER] [--force]-v, --version_number VERSION_NUMBER: Số phiên bản mục tiêu cần khôi phục. Nếu bạn bỏ qua thuộc tính này, thì giá trị mặc định sẽ là phiên bản ngay trước đó (phiên bản hiện tại trừ đi 1).--force: Thực hiện quy trình khôi phục ngay lập tức mà không cần nhắc xác nhận tương tác (Y/N). Hữu ích cho các quy trình CI/CD và tập lệnh tự động.
Ví dụ:
Khôi phục về phiên bản trước đó bằng cách xác nhận tương tác:
firebase remoteconfig:rollbackKhôi phục về phiên bản 8 mà không cần nhắc:
firebase remoteconfig:rollback -v 8 --force
Chỉnh sửa thử nghiệm A/B Testing
Sử dụng các lệnh sau để liệt kê, kiểm tra và xoá các thử nghiệm Remote Config A/B Testing trực tiếp bằng CLI:
Liệt kê các thử nghiệm
Liệt kê tất cả các thử nghiệm Remote Config cho dự án, có thể lọc và phân trang.
firebase remoteconfig:experiments:list [--filter EXPRESSION] [--pageSize NUMBER] [--pageToken TOKEN]--filter EXPRESSION: Biểu thức bộ lọc để áp dụng cho danh sách thử nghiệm.--pageSize NUMBER: Số lượng thử nghiệm cần trả về trên mỗi trang (mặc định là 10).--pageToken TOKEN: Mã thông báo cho mức chênh lệch trang khi truy xuất kết quả được phân trang.
Ví dụ:
firebase remoteconfig:experiments:listXem thông tin chi tiết về thử nghiệm
Lấy thông tin chi tiết đầy đủ cho một thử nghiệm Remote Config cụ thể.
firebase remoteconfig:experiments:get EXPERIMENT_IDVí dụ:
firebase remoteconfig:experiments:get exp_promo_discount_2026Xoá một thử nghiệm
Xoá thử nghiệm Remote Config đã chỉ định.
firebase remoteconfig:experiments:delete EXPERIMENT_IDVí dụ:
firebase remoteconfig:experiments:delete exp_promo_discount_2026Sửa đổi Remote Config bản phát hành
Sử dụng các lệnh sau để liệt kê, kiểm tra và xoá Remote Config bản phát hành từng phần trực tiếp bằng CLI:
- Liệt kê các bản phát hành công khai
- Xem thông tin chi tiết về quá trình triển khai
- Xoá bản phát hành công khai
Liệt kê các đợt triển khai
Liệt kê tất cả các đợt phát hành Remote Config cho dự án, có thể lọc và phân trang.
firebase remoteconfig:rollouts:list [--filter EXPRESSION] [--pageSize NUMBER] [--pageToken TOKEN]--filter EXPRESSION: Biểu thức bộ lọc để áp dụng cho danh sách phát hành.--pageSize NUMBER: Số lượng bản phát hành để trả về trên mỗi trang (mặc định là 10).--pageToken TOKEN: Mã thông báo cho mức chênh lệch trang khi truy xuất kết quả được phân trang.
Ví dụ:
firebase remoteconfig:rollouts:listXem thông tin chi tiết về quy trình phát hành
Lấy thông tin chi tiết đầy đủ cho một đợt phát hành Remote Config cụ thể.
firebase remoteconfig:rollouts:get ROLLOUT_IDVí dụ:
firebase remoteconfig:rollouts:get rollout_new_checkout_flowXoá đợt phát hành
Xoá bản phát hành Remote Config đã chỉ định.
firebase remoteconfig:rollouts:delete ROLLOUT_IDVí dụ:
firebase remoteconfig:rollouts:delete rollout_new_checkout_flowĐể biết thêm thông tin chung về các lệnh Firebase CLI, hãy xem tài liệu tham khảo về Firebase CLI.