Tích hợp Cấu hình từ xa trên lớp học lập trình Android

1. Giới thiệu

Lần cập nhật gần đây nhất: 2021-03-09

Cấu hình từ xa Firebase là gì?

Cấu hình từ xa Firebase là một dịch vụ đám mây cho phép bạn thay đổi cách hoạt động và giao diện của ứng dụng mà không cần yêu cầu người dùng tải bản cập nhật ứng dụng xuống miễn phí. Khi sử dụng Cấu hình từ xa, bạn có thể tạo các giá trị mặc định trong ứng dụng để kiểm soát hoạt động và giao diện của ứng dụng. Sau đó, bạn có thể sử dụng bảng điều khiển của Firebase hoặc API phần phụ trợ của Cấu hình từ xa để ghi đè các giá trị mặc định trong ứng dụng cho tất cả người dùng ứng dụng hoặc cho các phân khúc người dùng. Ứng dụng của bạn kiểm soát thời điểm áp dụng bản cập nhật, đồng thời có thể thường xuyên kiểm tra và áp dụng bản cập nhật mà không ảnh hưởng đáng kể đến hiệu suất.

Tính năng này hoạt động ra sao?

Cấu hình từ xa có một thư viện ứng dụng xử lý các tác vụ quan trọng như tìm nạp và lưu vào bộ nhớ đệm các giá trị tham số, đồng thời vẫn cho phép bạn kiểm soát thời điểm kích hoạt các giá trị mới để chúng ảnh hưởng đến trải nghiệm người dùng của ứng dụng. Điều này giúp bạn bảo vệ trải nghiệm trong ứng dụng bằng cách kiểm soát thời điểm thực hiện mọi thay đổi.

Các phương thức get của thư viện ứng dụng Cấu hình từ xa cung cấp một điểm truy cập duy nhất cho các giá trị tham số. Ứng dụng của bạn nhận các giá trị phía máy chủ bằng cách sử dụng cùng một logic mà ứng dụng dùng để nhận các giá trị mặc định trong ứng dụng, vì vậy, bạn có thể thêm các khả năng của Cấu hình từ xa vào ứng dụng mà không cần viết nhiều mã.

Để ghi đè các giá trị mặc định trong ứng dụng, bạn có thể sử dụng bảng điều khiển của Firebase hoặc API phần phụ trợ của Cấu hình từ xa để tạo các thông số có cùng tên với các thông số được dùng trong ứng dụng. Đối với mỗi thông số, bạn có thể đặt một giá trị mặc định phía máy chủ để ghi đè giá trị mặc định trong ứng dụng, đồng thời bạn cũng có thể tạo các giá trị có điều kiện để ghi đè giá trị mặc định trong ứng dụng cho những phiên bản ứng dụng đáp ứng một số điều kiện nhất định. Hình ảnh này cho thấy cách các giá trị tham số được ưu tiên trong phần phụ trợ của Remote Config và trong ứng dụng của bạn:

61f12f33d2ac3133.png

Kiến thức bạn sẽ học được

  • Cách triển khai Cấu hình từ xa Firebase
  • Cách sử dụng Cấu hình từ xa Firebase để thay đổi các giá trị mà không cần cập nhật ứng dụng

Bạn cần có

  • Phiên bản mới nhất của Android Studio
  • Tài khoản Firebase
  • (nên dùng nhưng không bắt buộc) Thiết bị Android thực để chạy ứng dụng
  • Có kiến thức cơ bản về Java hoặc Kotlin

2. Bắt đầu thiết lập

(Không bắt buộc) Tải mã mẫu xuống

Trong lớp học lập trình này, bạn sẽ tạo ứng dụng kiểm thử của riêng mình. Tuy nhiên, nếu muốn xem và chạy ứng dụng mẫu hiện có, bạn có thể tải mã mẫu bắt đầu nhanh xuống.

Nhấp vào nút sau đây để tải tất cả mã dành cho lớp học lập trình này:

Giải nén tệp zip đã tải xuống. Thao tác này sẽ giải nén một thư mục gốc có tên là quickstart-android-master.

...hoặc sao chép kho lưu trữ GitHub từ dòng lệnh.

$ git clone https://github.com/firebase/quickstart-android.git

Kho lưu trữ chứa nhiều thư mục. Chúng ta sẽ sử dụng thư mục config android_studio_folder.png.

(Không bắt buộc) Nhập mã mẫu

Khởi chạy Android Studio, chọn "Import project" (Nhập dự án) trong màn hình chào mừng. Sau đó, hãy mở thư mục đã tải xuống và chọn thư mục config android_studio_folder.png. Sau đó, hãy nhấp vào "mở".

5f90353b0b519642.png

Tạo dự án Android mới

  1. Trong Android Studio, hãy bắt đầu dự án mới
  2. Chọn Hoạt động cơ bản
  3. Trong màn hình "Định cấu hình dự án":
  4. Đặt tên cho dự án. Hệ thống sẽ tự động tạo tên gói và Vị trí lưu cho bạn.
  5. Ngôn ngữ: Java
  6. SDK tối thiểu 16

3. Thêm Firebase và Firebase Analytics vào Dự án Android

Tạo dự án Firebase

Trước khi có thể thêm Firebase vào ứng dụng Android, bạn cần tạo một dự án Firebase để kết nối với ứng dụng iOS. Hãy truy cập vào trang Tìm hiểu về các dự án Firebase để tìm hiểu thêm về các dự án Firebase.

  1. Trong bảng điều khiển của Firebase, hãy nhấp vào Thêm dự án, sau đó chọn hoặc nhập Tên dự án. 910158221fe46223.png

Nếu đang có một dự án trên Google Cloud Platform (GCP), bạn có thể chọn dự án đó trong trình đơn thả xuống để thêm tài nguyên Firebase vào dự án đó.

  1. (Không bắt buộc) Nếu đang tạo một dự án mới, bạn có thể chỉnh sửa Mã dự án.

Firebase tự động chỉ định một mã nhận dạng duy nhất cho dự án Firebase của bạn. Hãy truy cập vào trang Tìm hiểu về các dự án Firebase để tìm hiểu về cách Firebase sử dụng mã dự án.

  1. Nhấp vào Tiếp tục.
  2. Thiết lập Google Analytics cho dự án của bạn để có trải nghiệm tối ưu khi sử dụng bất kỳ sản phẩm nào sau đây của Firebase:
  • Firebase Crashlytics
  • Dự đoán Firebase
  • Giải pháp gửi thông báo qua đám mây của Firebase
  • Tính năng gửi thông báo trong ứng dụng của Firebase
  • Cấu hình từ xa Firebase
  • Thử nghiệm A/B trong Firebase

Khi được nhắc, hãy chọn sử dụng tài khoản Google Analytics hiện có hoặc tạo tài khoản mới. Nếu bạn chọn tạo tài khoản mới, hãy chọn vị trí báo cáo Analytics, sau đó chấp nhận cài đặt cách chia sẻ dữ liệu và các điều khoản của Google Analytics cho dự án của bạn.

1282a798556779ab.png48ade68c8de27d2.png

  1. Nhấp vào Tạo dự án (hoặc Thêm Firebase nếu bạn đang sử dụng một dự án GCP hiện có).

Firebase tự động cung cấp tài nguyên cho dự án Firebase của bạn. Khi quy trình hoàn tất, bạn sẽ được chuyển đến trang tổng quan về dự án Firebase của mình trong bảng điều khiển của Firebase.

Đăng ký ứng dụng của bạn với Firebase

Khi có một dự án Firebase, bạn có thể thêm ứng dụng Android của mình vào dự án đó.

Hãy truy cập vào trang Tìm hiểu về các dự án Firebase để tìm hiểu thêm về các phương pháp hay nhất và những điều cần cân nhắc khi thêm ứng dụng vào một dự án Firebase, bao gồm cả cách xử lý nhiều biến thể bản dựng.

  1. Truy cập vào bảng điều khiển của Firebase.
  2. Ở đầu trang Tổng quan về dự án, hãy nhấp vào biểu tượng Android để chạy quy trình thiết lập. Nếu bạn đã thêm một ứng dụng vào dự án Firebase, hãy nhấp vào Thêm ứng dụng để hiển thị các lựa chọn về nền tảng.
  3. Nhập tên gói của ứng dụng vào trường Tên gói Android.
  4. (Không bắt buộc) Nhập Biệt hiệu của ứng dụng.
  5. Để trống trường SHA-1 vì dự án này không yêu cầu SHA-1.
  6. Nhấp vào Đăng ký ứng dụng.

Thêm tệp cấu hình Firebase

Tiếp theo, bạn sẽ được nhắc tải một tệp cấu hình chứa tất cả siêu dữ liệu cần thiết của Firebase cho ứng dụng của bạn. Nhấp vào Tải google-services.json xuống để lấy tệp cấu hình Firebase Android (google-services.json).

bc8ec7d3c9a28d75.pnga99b7415462dfc8b.png

Trong tệp Gradle cấp dự án (build.gradle), hãy thêm các quy tắc để đưa trình bổ trợ Gradle của Dịch vụ Google vào. Đồng thời, hãy kiểm tra để đảm bảo bạn có kho lưu trữ Maven của Google.

Tệp build.gradle cấp dự án (<project>/build.gradle):

buildscript {

  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
  }

  dependencies {
    // ...

    // Add the following line:
    classpath 'com.google.gms:google-services:4.3.5'  // Google Services plugin
  }
}

allprojects {
  // ...

  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
    // ...
  }
}

Trong tệp Gradle (cấp ứng dụng) của mô-đun (thường là app/build.gradle), hãy áp dụng trình bổ trợ Gradle của Dịch vụ Google:

Tệp build.gradle cấp ứng dụng (<project>/<app-module>/build.gradle):

apply plugin: ‘com.android.application'

// Add the following line:

apply plugin: ‘com.google.gms.google-services' // Google Services plugin

android {

// ...

}

Thêm Firebase SDK vào ứng dụng Android

Đối với Cấu hình từ xa, bạn phải sử dụng Google Analytics để nhắm mục tiêu các phiên bản ứng dụng đến thuộc tính người dùng và đối tượng một cách có điều kiện. Đảm bảo bạn đã bật Google Analytics trong dự án của mình.

(Việc này đã được thực hiện trong mã bắt đầu nhanh mẫu)

Bằng cách sử dụng Firebase Android BoM (Bảng kê khai thành phần của Firebase cho Android), hãy khai báo phần phụ thuộc cho thư viện Cấu hình từ xa trên Android trong tệp Gradle (ở cấp ứng dụng) trong mô-đun của bạn (thường là app/build.gradle). Bằng cách sử dụng Firebase Android BoM (Bảng kê khai thành phần của Firebase cho Android), ứng dụng của bạn sẽ luôn sử dụng những phiên bản tương thích của thư viện Android trên Firebase.

Ngoài ra, trong quá trình thiết lập Analytics, bạn cần thêm Firebase SDK cho Google Analytics vào ứng dụng của mình. Trong phần dependencies, hãy thêm mã sau:

app/build.gradle

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:26.6.0')

    // Declare the dependencies for the Remote Config and Analytics libraries
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-config'
    implementation 'com.google.firebase:firebase-analytics'
}

Đồng bộ hoá dự án với các tệp Gradle

Để đảm bảo rằng tất cả các phần phụ thuộc đều có sẵn cho ứng dụng của bạn, hãy đồng bộ hoá dự án với các tệp gradle bằng cách chọn Tệp > Đồng bộ hoá dự án với các tệp Gradle.

4. Xem xét các thành phần chính của Cấu hình từ xa

Bây giờ, chúng ta sẽ xem xét các bước để sử dụng Cấu hình từ xa trong một ứng dụng. Các bước này đã được hoàn tất trong mã của lớp học lập trình về hướng dẫn nhanh. Vui lòng sử dụng phần này trong khi xem xét mã lớp học lập trình về hướng dẫn nhanh để hiểu điều gì đang xảy ra.

1. Tải đối tượng Singleton Cấu hình từ xa

Tải một phiên bản đối tượng Cấu hình từ xa và đặt khoảng thời gian tìm nạp tối thiểu để cho phép làm mới thường xuyên:

MainActivity.java

mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

Đối tượng singleton được dùng để lưu trữ các giá trị tham số mặc định trong ứng dụng, tìm nạp các giá trị tham số đã cập nhật từ phần phụ trợ và kiểm soát thời điểm các giá trị được tìm nạp có sẵn cho ứng dụng của bạn.

Trong quá trình phát triển, bạn nên đặt khoảng thời gian tìm nạp tối thiểu tương đối thấp. Hãy xem phần Điều tiết để biết thêm thông tin.

2. Đặt giá trị tham số mặc định trong ứng dụng

Bạn có thể đặt các giá trị tham số mặc định trong ứng dụng trong đối tượng Cấu hình từ xa, để ứng dụng hoạt động như dự kiến trước khi kết nối với phần phụ trợ Cấu hình từ xa và để các giá trị mặc định có sẵn nếu không có giá trị nào được đặt trong phần phụ trợ.

Bạn có thể xác định một tập hợp tên tham số và giá trị tham số mặc định bằng cách sử dụng đối tượng Map hoặc tệp tài nguyên XML được lưu trữ trong thư mục res/xml của ứng dụng. Ứng dụng mẫu khởi động nhanh Cấu hình từ xa sử dụng một tệp XML để xác định tên và giá trị tham số mặc định. Sau đây là cách tạo tệp XML của riêng bạn:

  1. Tạo thư mục xml trong thư mục res.

4b8a2a637a626e94.png

  1. Nhấp chuột phải vào thư mục xml vừa tạo rồi tạo một tệp.

358b4ba740120ece.png

  1. Đặt giá trị mặc định. Trong phần tiếp theo, bạn sẽ thử thay đổi các giá trị mặc định trong tệp XML của hướng dẫn nhanh về Cấu hình từ xa.
  2. Thêm các giá trị này vào đối tượng Cấu hình từ xa bằng setDefaultsAsync(int), như minh hoạ:

MainActivity.java

mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

3. Nhận giá trị thông số để sử dụng trong ứng dụng

Giờ đây, bạn có thể nhận các giá trị tham số từ đối tượng Cấu hình từ xa. Nếu bạn đặt giá trị trong phần phụ trợ, tìm nạp các giá trị đó rồi kích hoạt chúng, thì ứng dụng của bạn sẽ có các giá trị đó. Nếu không, bạn sẽ nhận được các giá trị tham số trong ứng dụng được định cấu hình bằng setDefaultsAsync(int). Để lấy các giá trị này, hãy gọi phương thức được liệt kê bên dưới, phương thức này sẽ ánh xạ đến kiểu dữ liệu mà ứng dụng của bạn mong đợi, cung cấp khoá tham số làm đối số:

4. Tìm nạp và kích hoạt các giá trị

  1. Để tìm nạp các giá trị tham số từ phần phụ trợ của Cấu hình từ xa, hãy gọi phương thức fetch(). Mọi giá trị mà bạn đặt trong phần phụ trợ đều được tìm nạp và lưu trữ trong đối tượng Cấu hình từ xa.
  2. Để cung cấp các giá trị thông số đã tìm nạp cho ứng dụng, hãy gọi phương thức activate(). Trong trường hợp muốn tìm nạp và kích hoạt các giá trị trong một lệnh gọi, bạn có thể sử dụng yêu cầu fetchAndActivate() để tìm nạp các giá trị từ phần phụ trợ của Cấu hình từ xa và cung cấp các giá trị đó cho ứng dụng:

MainActivity.java

mFirebaseRemoteConfig.fetchAndActivate()
        .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
            @Override
            public void onComplete(@NonNull Task<Boolean> task) {
                if (task.isSuccessful()) {
                    boolean updated = task.getResult();
                    Log.d(TAG, "Config params updated: " + updated);
                    Toast.makeText(MainActivity.this, "Fetch and activate succeeded",
                            Toast.LENGTH_SHORT).show();

                } else {
                    Toast.makeText(MainActivity.this, "Fetch failed",
                            Toast.LENGTH_SHORT).show();
                }
                displayWelcomeMessage();
            }
        });

Vì những giá trị tham số được cập nhật này ảnh hưởng đến hành vi và giao diện của ứng dụng, nên bạn cần kích hoạt các giá trị đã tìm nạp vào thời điểm đảm bảo mang lại trải nghiệm mượt mà cho người dùng, chẳng hạn như vào lần tiếp theo người dùng mở ứng dụng của bạn. Hãy xem phần Chiến lược tải Cấu hình từ xa để biết thêm thông tin và ví dụ.

Điều tiết

Nếu một ứng dụng tìm nạp quá nhiều lần trong một khoảng thời gian ngắn, thì các lệnh gọi tìm nạp sẽ bị điều tiết và SDK sẽ trả về FirebaseRemoteConfigFetchThrottledException. Trước phiên bản SDK 17.0.0, giới hạn là 5 yêu cầu tìm nạp trong khoảng thời gian 60 phút (các phiên bản mới hơn có giới hạn cho phép nhiều hơn).

Trong quá trình phát triển ứng dụng, bạn có thể muốn tìm nạp và kích hoạt cấu hình rất thường xuyên (nhiều lần mỗi giờ) để cho phép bạn lặp lại nhanh chóng khi phát triển và kiểm thử ứng dụng. Để đáp ứng việc lặp lại nhanh chóng trên một dự án có tối đa 10 nhà phát triển, bạn có thể tạm thời đặt một đối tượng FirebaseRemoteConfigSettings có khoảng thời gian tìm nạp tối thiểu thấp (setMinimumFetchIntervalInSeconds) trong ứng dụng của mình.

Khoảng thời gian tìm nạp tối thiểu mặc định cho Cấu hình từ xa là 12 giờ. Điều này có nghĩa là các cấu hình sẽ không được tìm nạp từ phần phụ trợ nhiều hơn một lần trong khoảng thời gian 12 giờ, bất kể số lượng lệnh gọi tìm nạp thực tế được thực hiện. Cụ thể, khoảng thời gian tìm nạp tối thiểu được xác định theo thứ tự sau:

  1. Tham số trong fetch(long)
  2. Tham số trong FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. Giá trị mặc định là 12 giờ

Để đặt khoảng thời gian tìm nạp tối thiểu thành một giá trị tuỳ chỉnh, hãy sử dụng FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long).

5. Thay đổi hành vi của ứng dụng bằng Cấu hình từ xa

Thay đổi các tham số mặc định trong ứng dụng

Mở res/xml/remote_config_defaults.xml và thay đổi các giá trị mặc định thành giá trị khác.

res/xml/remote_config_defaults.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- START xml_defaults -->
<defaultsMap>
    <entry>
        <key>loading_phrase</key>
        <value>Fetching config...</value>
    </entry>
    <entry>
        <key>welcome_message_caps</key>
        <value>false</value>
    </entry>
    <entry>
        <key>welcome_message</key>
        <value>Welcome to my awesome app!</value>
    </entry>
</defaultsMap>
    <!-- END xml_defaults -->

Xác minh thay đổi giá trị mặc định trong ứng dụng

  1. Chạy dự án trong trình mô phỏng hoặc bằng thiết bị thử nghiệm để xác nhận hành vi.
  2. Nhấp vào Open (Mở) ở phiên bản Java hoặc Kotlin.

c1582b989c25ced.png

  1. Xem thông điệp chào mừng trên chế độ xem chính.

4c838bf5a629d5b8.png

Đặt giá trị tham số trong phần phụ trợ của Cấu hình từ xa

Bây giờ, hãy kiểm thử việc gửi giá trị thông qua Cấu hình từ xa. Bằng cách sử dụng bảng điều khiển của Firebase hoặc API phần phụ trợ của Cấu hình từ xa, bạn có thể tạo các giá trị mặc định mới phía máy chủ để ghi đè các giá trị trong ứng dụng theo logic có điều kiện hoặc tiêu chí nhắm đến người dùng mà bạn muốn. Phần này mô tả các bước trên bảng điều khiển của Firebase để tạo các giá trị này.

  1. Mở bảng điều khiển của Firebase, mở dự án của bạn.
  2. Chọn Remote Config (Cấu hình từ xa) trong trình đơn bên trái của mục Tương tác để xem trang tổng quan Remote Config.
  3. Trong phần Thêm một tham số, hãy nhập Parameter key. Trong phần Default value, hãy thêm văn bản bạn muốn. Sau đó, hãy nhấp vào Thêm tham số. Trong lớp học lập trình này, chúng ta sẽ dùng các khoá tham số trong tệp res/xml/remote_config_defaults.xml. Hãy xem bảng bên dưới để biết thông tin chi tiết:

Khoá tham số

Giá trị mặc định (remote_config_defaults.xml)

Nội dung mô tả

loading_phrase

Đang tìm nạp cấu hình...

Chuỗi; Hiển thị khi tìm nạp các giá trị Cấu hình từ xa.

welcome_message_caps

false

Boolean; Nếu là true, hãy thay đổi welcome_message thành chữ hoa

welcome_message

Chào mừng bạn đến với ứng dụng tuyệt vời của tôi!

String; Welcome message

Ảnh chụp màn hình ví dụ:

28fa48f18da43002.png

  1. Khi bạn đã thêm xong các thông số, hãy nhấp vào "Xuất bản thay đổi".
  2. Chạy lại ứng dụng trên trình mô phỏng hoặc thiết bị rồi nhấp vào nút "Tìm nạp lời chào từ xa" lần này.

cfe900477549adb7.png

  1. Thông báo chào mừng sẽ được cập nhật dựa trên thông số và giá trị Cấu hình từ xa của bạn!

6. Xin chúc mừng

Xin chúc mừng! Bạn đã sử dụng thành công Cấu hình từ xa để thay đổi thông điệp chào mừng! Có nhiều cách khác để sử dụng Cấu hình từ xa nhằm thay đổi và tuỳ chỉnh ứng dụng. Vui lòng xem các tài nguyên bổ sung bên dưới: