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 ở định dạng JSON, được gọi là Remote Config mẫu. Điều này cho phép bạn thực hiện các thay đổi đối với mẫu trên phần phụ trợ mà ứng dụng máy khách có thể tìm nạp bằng thư viện ứng dụng.
Khi sử dụng Remote Config REST API hoặc các Admin SDKs đượ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 Remote Config các thay đổi vào quy trình của riêng mình. Ví dụ: với Remote Config backend API (API phần phụ trợ), bạn có thể:
- Lên lịch Remote Config cập nhật. Bằng cách sử dụng các lệnh gọi API kết hợp với một công việc cron, bạn có thể thay đổi Remote Config giá trị 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ể sử 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 đủ số người đã tương tác với tính năng mới.

Các phần sau đây của hướng dẫn này mô tả những thao tác bạn có thể thực hiện với các Remote Config backend API (API phần phụ trợ). Để xem xét một số mã thực hiện các tác vụ này thông qua REST API (API REST), hãy xem một trong những ứng dụng mẫu sau:
- Hướng dẫn nhanh về Firebase Remote Config REST API (API REST Cấu hình từ xa Firebase) bằng Java
- Hướng dẫn nhanh về Firebase Remote Config REST API (API REST Cấu hình từ xa Firebase) bằng Node.js
- Hướng dẫn nhanh về Firebase Remote Config REST API (API REST Cấu hình từ xa Firebase) bằng Python
Sửa đổi Cấu hình từ xa bằng Firebase Admin SDK (SDK quản trị Firebase)
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ó đặ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 và ghi từ Realtime Database, v.v. Để 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 Thêm Firebase Admin SDK (SDK quản trị Firebase) vào máy chủ.
Trong một quy trình Remote Config điển hình, bạn có thể lấy mẫu hiện tại, sửa đổi một số tham số hoặc nhóm tham số và điều kiện, xác thực mẫu, sau đó phát hành 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 chạy 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 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 Cấu hình từ xa hiện tại
Khi làm việc với các mẫu Remote Config, hãy lưu ý rằng chúng được kiểm soát 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 bài viết Mẫu và kiểm soát phiên bản để biết thêm thông tin.
Bạn có thể sử dụng các API phần 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 A/B Testing thử nghiệm 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 các tham số Cấu hình từ xa
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 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 phát hành mẫu một cách rõ ràng sau khi sửa đổi.
Sửa đổi các điều kiện Cấu hình từ xa
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 phát hành mẫu một cách rõ ràng sau khi sửa đổi.
Các API phần 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ể sử 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 Cấu hình từ xa
Bạn có thể xác thực các bản cập nhật trước khi phát hành (không bắt buộc), như minh hoạ dưới đây:
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 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 thẻ ETag có định dạng không đúng.
Ví dụ: một yêu cầu chứa nhiều hơn số lượng khoá được phép
(2000) sẽ trả về thông báo lỗi Param count too large.
Phát hành mẫu Cấu hình từ xa
Sau khi truy xuất một mẫu và sửa đổi mẫu đó bằng các bản cập nhật mong muốn, bạn có thể phát hành mẫu đó. Việc phát hành 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 gán số phiên bản lớn hơn mẫu mà mẫu đó thay thế một số.
Nếu cần, bạn có thể sử dụng REST API (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 phát hành.
Remote Config các điều kiện và tính năng cá nhân hoá đượ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 đây khi cố gắng phát hành cho một dự án khác:
Không thể nhập các tính năng cá nhân hoá từ dự án này sang dự án khác.
Ví dụ: nếu bạn bật các tính năng cá nhân hoá trong dự án của mình và tải xuống và chỉnh sửa một mẫu, thì bạn có thể phát hành mẫu đó cho cùng một dự án, nhưng không thể phát hành cho một dự án khác trừ phi bạn xoá các 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ể (như mã ứng dụng hoặc đối tượng) phải tồn tại trong dự án đích trước khi phát hành.
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ể phát hành mẫu đó cho một dự án khác, vì giá trị nền tảng giống nhau đối với mọi dự án. Tuy nhiên, nếu mẫu đó chứa một điều kiện dựa vào một mã ứng dụng cụ thể hoặc đối tượng người dùng không tồn tại trong dự án đích, thì quá trình xác thực sẽ không thành công.Nếu mẫu bạn định phát hành chứa các điều kiện dựa vào Google Analytics, thì bạn phải bật Analytics trong dự án đích.
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 Cấu hình từ xa bằng REST API (API REST)
Phần này mô tả các chức năng chính của
Remote Config REST API (API REST) 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 về 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ụ Google . Bạn có thể sử dụng tài khoản này để gọi các 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 thông qua tài khoản dịch vụ này để uỷ quyền cho các yêu cầu của máy chủ.
Để xác thực một 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ụ 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 mở 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ữ tệp JSON chứa khoá một cách an toàn.
Khi uỷ quyền thông qua tài khoản dịch vụ, bạn có 2 lựa chọn để cung cấp thông tin xác thực cho ứng dụng. Bạn có thể đặt biến môi trường GOOGLE_APPLICATION_CREDENTIALS hoặc bạn có thể truyền đường dẫn đến khoá tài khoản dịch vụ một cách rõ ràng trong mã. Lựa chọn đầu tiên an toàn hơn và bạn nên chọn lựa chọn này.
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ụ. Biến này chỉ áp dụng cho phiên shell hiện tại, 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 các môi trường không phải của Google.
Sử dụng thông tin xác thực Firebase cùng với Thư viện xác thực của Google cho ngôn ngữ bạn ưu tiên để truy xuất mã truy cập OAuth 2.0 có thời gian tồn tại 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 API của Google 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 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 đã cập nhật.
Để uỷ quyền 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 Cấu hình từ xa
Khi làm việc với các mẫu Remote Config, hãy lưu ý rằng chúng được kiểm soát 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 bài viết Mẫu và kiểm soát phiên bản để biết thêm thông tin.
Lấy mẫu Cấu hình từ xa hiện tại
Bạn có thể sử dụng các API phần 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 A/B Testing thử nghiệm không được đưa vào các mẫu đã xuất.
Hãy 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.
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 bao gồm một ETag mà bạn sử dụng cho yêu cầu tiếp theo.
Xác thực mẫu Cấu hình từ xa
Bạn có thể xác thực các bản cập nhật trước khi phát hành (không bắt buộc).
Xác thực các bản cập nhật mẫu bằng cách thêm
tham số URL ?validate_only=truevào yêu cầu phát hành.
Trong phản hồi, mã trạng thái 200 và thẻ ETag đã cập nhật có hậu tố -0
có nghĩa là bản 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 là 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
phát hành.
Cập nhật mẫu Cấu hình từ xa
Sau khi truy xuất một mẫu và sửa đổi nội dung JSON bằng các bản cập nhật mong muốn, bạn có thể phát hành mẫu đó. Việc phát hành 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 gán số phiên bản lớn hơn mẫu mà mẫu đó thay thế một số.
Nếu cần, bạn có thể sử dụng REST API (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 phát hành.
Remote Config các điều kiện và tính năng cá nhân hoá đượ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 đây khi cố gắng phát hành cho một dự án khác:
Không thể nhập các tính năng cá nhân hoá từ dự án này sang dự án khác.
Ví dụ: nếu bạn bật các tính năng cá nhân hoá trong dự án của mình và tải xuống và chỉnh sửa một mẫu, thì bạn có thể phát hành mẫu đó cho cùng một dự án, nhưng không thể phát hành cho một dự án khác trừ phi bạn xoá các 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ể (như mã ứng dụng hoặc đối tượng) phải tồn tại trong dự án đích trước khi phát hành.
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ể phát hành mẫu đó cho một dự án khác, vì giá trị nền tảng giống nhau đối với mọi dự án. Tuy nhiên, nếu mẫu đó chứa một điều kiện dựa vào một mã ứng dụng cụ thể hoặc đối tượng người dùng không tồn tại trong dự án đích, thì quá trình xác thực sẽ không thành công.Nếu mẫu bạn định phát hành chứa các điều kiện dựa vào Google Analytics, thì bạn phải bật Analytics trong dự án đích.
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ự "@",
tiếp theo 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 đã cập nhật sẽ được cung cấp trong
tiêu đề phản hồi của lệnh PUT tiếp theo.
Sửa đổi các điều kiện Cấu hình từ xa
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 REST API (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 phát hành 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 sửa đổi ở trên trước tiên 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) giá trị cho từng tham số. Thao tác này cũng thêm một nội dung mô tả không bắt buộc cho từng phần tử; giống như nhận xét về mã, các nội dung này dành cho nhà phát triển sử dụng và không hiển thị 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ần 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ể sử 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 (2000) sẽ trả về 400 (Yêu cầu không hợp lệ) với
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 Firebase Remote Config REST API chưa được thêm vào dự án của bạn trong Cloud Developer Console) |
| 403 | Đã xảy ra lỗi xác thực (đã 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ợ Firebase |
Mã trạng thái 200 có nghĩa là mẫu Remote Config (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 Remote Config mẫu đã tồn tại trước đó vẫn có hiệu lực.
Sau khi gửi các bản 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ư mong đợi. Đ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 đánh giá các điều kiện đó (điều kiện đầu tiên đánh giá true sẽ có hiệu lực).
Cách 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 tình trạng tranh đua và các bản cập nhật trùng lặp đối với tài nguyên. Để tìm hiểu thêm về ETag, hãy xem bài viết ETag – HTTP.
Đối với REST API (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 đề yêu cầu If-Match khi đưa ra các 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 đưa ra một lệnh GET
mới để lấy một 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à tính năng 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ì phương pháp này có nguy cơ gây 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 với nhiều
ứng dụng sử dụng API hoặc với các bản cập nhật xung đột từ ứng dụng API và
Firebase người dùng bảng điều khiển.
Để được hướng dẫn về cách quản lý các phiên bản mẫu Remote Config, hãy xem Mẫu Cấu hình từ xa và kiểm soát phiên bản.