Android của AdMob cho Firebase 102: Tinh chỉnh hành vi của ứng dụng mà không cần cập nhật ứng dụng

1. Giới thiệu

Giả sử bạn cần điều chỉnh giá trị của một số thông số trong ứng dụng sau khi phát hành ứng dụng trên Cửa hàng Play. Thông thường, bạn nên xuất bản lại một phiên bản mới của ứng dụng và người dùng cũng nên cập nhật ứng dụng trên điện thoại của họ.

Nhìn chung, bản cập nhật ứng dụng sẽ hoạt động nếu bạn muốn thực hiện một thay đổi lâu dài cho ứng dụng của mình. Tuy nhiên, điều gì sẽ xảy ra nếu bạn thường xuyên điều chỉnh giá trị của một số tham số trong ứng dụng? Hoặc điều gì sẽ xảy ra nếu bạn muốn chạy một số thử nghiệm để tìm ra cấu hình ứng dụng tối ưu?

Trong những trường hợp này, các bản cập nhật ứng dụng sẽ không hoạt động hiệu quả. Vì phải mất một khoảng thời gian thì bản cập nhật mới được truyền tải hoàn toàn đến người dùng. Ngoài ra, việc chạy thử nghiệm trên nhiều phiên bản ứng dụng cũng khá khó khăn.

Ngoài ra, làm cách nào để xác định xem hành trình của người dùng trong ứng dụng có hoạt động như dự kiến hay không? Bạn có thể dựa vào bình luận của người dùng trên Play Console. Tuy nhiên, thông tin này có thể không đủ chính xác để đưa ra quyết định rõ ràng.

Nếu bạn gặp vấn đề (lỗi trong đoạn mã, lỗi ngữ pháp, từ ngữ không rõ ràng, v.v.) khi thực hành theo lớp học lập trình này, vui lòng báo cáo vấn đề thông qua đường liên kết Báo cáo lỗi ở góc dưới bên trái lớp học lập trình.

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

  • Cách tạo phễu trong Google Analytics cho Firebase
  • Cách sử dụng Cấu hình từ xa Firebase
  • Cách chạy thử nghiệm A/B trên Firebase

Bạn cần có

  • Android Studio phiên bản 4.1 trở lên
  • Tài khoản Google
  • Một thiết bị thử nghiệm chạy Android 5.0 trở lên có cáp USB để kết nối thiết bị hoặc một Trình mô phỏng Android chạy AVD(Thiết bị Android ảo) có hình ảnh hệ thống hỗ trợ Cửa hàng Play/API Google

Bạn đánh giá thế nào về mức độ kinh nghiệm của mình với AdMob?

Người mới bắt đầu Trung cấp Thành thạo

Bạn đánh giá thế nào về mức độ kinh nghiệm của mình với Firebase?

Người mới bắt đầu Trung cấp Thành thạo

2. Thiết lập môi trường phát triển

Tải mã 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à admob-firebase-codelabs-android-master.

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

$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-android

Kho lưu trữ này chứa 4 thư mục như sau:

  • android_studio_folder.png101-base – Mã khởi đầu mà bạn sẽ tạo trong lớp học lập trình này.
  • android_studio_folder.png101-complete_and_102-base – Mã hoàn chỉnh cho lớp học lập trình này và mã khởi đầu cho lớp học lập trình 102.
  • android_studio_folder.png102-complete – Mã hoàn chỉnh cho lớp học lập trình 102.

Nhập ứng dụng khởi đầu

Khởi chạy Android Studio, chọn "Import project" (Nhập dự án) trên màn hình chào mừng. Sau đó, hãy chọn thư mục 101-complete_and_102-base trong mã bạn đã tải xuống.

Bây giờ, bạn sẽ mở dự án trong Android Studio.

Thêm tệp cấu hình Firebase vào dự án Android

  1. Trên màn hình tổng quan của dự án Awesome Drawing Quiz (Bài kiểm tra vẽ thú vị), hãy nhấp vào biểu tượng Cài đặt. 9bacb5ada7cbaaf6.png
  2. Trong thẻ Chung, hãy chọn ứng dụng Android để tải tệp google-service.json xuống.
  3. Di chuyển tệp cấu hình vào thư mục android_studio_folder.pngapp trong dự án của bạn. 797cde1881a38fdf.png

3. Mở dự án Firebase trong bảng điều khiển

Trước khi chuyển sang bước tiếp theo, hãy mở dự án bạn đã tạo trong bảng điều khiển của Firebase ở bước "Thiết lập dự án Firebase" của Lớp học lập trình AdMob + Firebase 101.

e0a028059c9e00cb.png

4. Tạo một phễu gồm các sự kiện trong ứng dụng

Có thể có một số sự kiện ứng dụng mà bạn đã thêm để theo dõi hoạt động của người dùng trong ứng dụng. Bằng cách đọc báo cáo của từng sự kiện ứng dụng, bạn có thể nhận được thông tin chi tiết liên quan đến sự kiện đó, chẳng hạn như tổng số lượt, số lượt trung bình trên mỗi người dùng, thông tin nhân khẩu học, v.v.

Tuy nhiên, nếu bạn muốn xem tỷ lệ hoàn thành của một loạt sự kiện thay vì tập trung vào một sự kiện cụ thể thì sao? Trong Google Analytics cho Firebase, bạn có thể sử dụng Phễu để trực quan hoá và tối ưu hoá tỷ lệ hoàn thành của một loạt sự kiện trong ứng dụng.

Tạo phễu

Để tạo kênh:

  1. Chuyển đến bảng điều khiển của Firebase rồi chọn dự án Awesome Drawing Quiz mà bạn đã tạo trước đó.
  2. Nhấp vào Phễu.
  3. Nhấp vào KÊNH MỚI.
  4. Nhập tên và mô tả cho kênh.
  5. Chọn hai sự kiện đầu tiên bạn muốn sử dụng làm các bước trong kênh.
  6. Nhấp vào THÊM MỘT SỰ KIỆN KHÁC cho mỗi bước bổ sung và chọn một sự kiện.
  7. Nhấp vào TẠO.

Bằng cách làm theo các bước trên, hãy tạo các phễu sau:

#1 Tên phễu: Tỷ lệ thành công ở cấp độ Sự kiện: level_start, level_successd3bc78ef61a261d7.png

#2 Tên phễu: Tỷ lệ hoàn thành quảng cáo có tặng thưởng Sự kiện: ad_reward_prompt, ad_reward_impression, ad_reward45c9542dfa663014.png

#3 Tên phễu: Tỷ lệ hoàn thành trò chơi Sự kiện: game_start, game_completedab25e8501746d5f.png

Xem số liệu phân tích phễu

Sau khi tạo một số phễu, bạn có thể truy cập vào phễu trong trình đơn Phễu trong bảng điều khiển của Firebase. Bằng cách nhấp vào tên phễu trong danh sách, bạn có thể xem thông tin phân tích chi tiết về từng phễu.

620c0e84587c8ad4.png

Ví dụ: hãy nhấp vào Tỷ lệ hoàn thành cấp độ. Báo cáo này sẽ cho thấy thông tin chi tiết về phễu như sau:

c889f9b6ece15847.png

Trong ảnh chụp màn hình ở trên, bạn có thể thấy tỷ lệ phần trăm người dùng đã hoàn thành một cấp độ (kích hoạt sự kiện level_success) sau khi bắt đầu một cấp độ (kích hoạt sự kiện level_start). Tại đây, bạn có thể thấy rằng 46,2% người dùng đã hoàn thành cấp độ này.

Sau khi bạn nhấp vào Số sự kiện, chỉ số dựa trên số sự kiện sẽ xuất hiện như sau:

d044fb7b07e6e0d9.png

Dựa trên các chỉ số trong ảnh chụp màn hình ở trên, có 116 lượt thử (kích hoạt sự kiện level_start) và 57 lượt hoàn thành (kích hoạt sự kiện level_success) trong khoảng thời gian này.

Vì tỷ lệ hoàn thành dựa trên sự kiện(49,1%) cao hơn một chút so với tỷ lệ dựa trên người dùng(46,2%), nên bạn có thể nói rằng có một số người thực hiện tốt hơn những người khác.

5. Tích hợp Cấu hình từ xa vào ứng dụng

Vì có thể nắm được một số thông tin chi tiết về ứng dụng dựa trên các sự kiện và phễu của ứng dụng, nên bạn có thể muốn tối ưu hoá ứng dụng. Việc này thường bao gồm việc điều chỉnh giá trị tham số trong ứng dụng. Để sửa đổi giá trị của các tham số đó, bạn cần cập nhật ứng dụng để có thể áp dụng các thay đổi cho người dùng.

Bằng cách sử dụng Cấu hình từ xa trong Firebase, bạn có thể điều chỉnh các giá trị đó mà không cần cập nhật ứng dụng. Điều này có nghĩa là bạn có thể thay đổi hành vi của ứng dụng mà không cần làm phiền người dùng bằng cách buộc họ tải bản cập nhật ứng dụng xuống.

Trong Lớp học lập trình này, bạn sẽ tìm hiểu cách điều chỉnh số tiền thưởng (số lượng chữ cái sẽ được tiết lộ sau khi xem Quảng cáo dạng video có tặng thưởng) mà không cần bản cập nhật ứng dụng bằng cách sử dụng Cấu hình từ xa.

Thêm Cấu hình từ xa vào phần phụ thuộc của ứng dụng

Hãy bắt đầu bằng cách thêm Cấu hình từ xa Firebase vào phần phụ thuộc của ứng dụng.

app/build.gradle

apply plugin: 'com.android.application'

android {
    ...
}

dependencies {
    ...

    // TODO: Add Firebase Remote Config dependency (102)
    implementation 'com.google.firebase:firebase-config-ktx'

    ...
}

...

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

Để đảm bảo rằng ứng dụng của bạn có tất cả các phần phụ thuộc, hãy đồng bộ hoá dự án với các tệp gradle. Chọn trình đơn File > Sync Project with Gradle Files (Tệp > Đồng bộ hoá dự án với các tệp Gradle) để đồng bộ hoá dự án với các tệp Gradle.

Đặt giá trị mặc định cho thông số Cấu hình từ xa

Bạn cần có kết nối mạng để tìm nạp các giá trị từ Cấu hình từ xa. Trong trường hợp không có mạng, bạn nên xác định một giá trị mặc định cho từng tham số Cấu hình từ xa.

Tạo tệp remote_config_defaults.xml trong thư mục res/xml. Sau đó, hãy đặt giá trị mặc định cho số tiền thưởng (reward_amount) như sau.

res/xml/remote_config_defaults.xml

<?xml version="1.0" encoding="utf-8"?>
<defaultsMap>
    <entry>
        <key>reward_amount</key>
        <value>1</value>
    </entry>
</defaultsMap>

Xin lưu ý rằng reward_amount là tên của tham số trong Cấu hình từ xa.

Tìm nạp số tiền thưởng từ Cấu hình từ xa

Sửa đổi AwesomeDrawingQuiz.kt để lớp GameSettings lưu giữ một tham chiếu đến thực thể RemoteConfig.

Xin lưu ý rằng phiên bản RemoteConfig được định cấu hình để tìm nạp các giá trị mới nhất từ máy chủ ở chế độ gỡ lỗi nhằm hỗ trợ quy trình phát triển. (Đặt khoảng thời gian tìm nạp tối thiểu thành 0 giây bằng cách gọi fetch(0L))

AwesomeDrawingQuiz.kt

class AwesomeDrawingQuiz : Application() {

    ...

    // COMPLETE: Provide FirebaseRemoteConfig instance (102)
    private fun provideGameSettings() = GameSettings(provideRemoteConfig())

    // COMPLETE: Add a function that provides a FirebaseRemoteConfig instance (102)
    private fun provideRemoteConfig(): FirebaseRemoteConfig {
        val rc = Firebase.remoteConfig.apply {
            setDefaultsAsync(R.xml.remote_config_defaults)
        }
        val fetchTask = if (BuildConfig.DEBUG) rc.fetch(0L) else rc.fetch()
        fetchTask.addOnCompleteListener {
            if (it.isSuccessful) {
                Log.d("AwesomeDrawingQuiz", "Remote config value fetched")
                rc.activate()
            }
        }
        return rc
    }
}

Sau đó, hãy thay đổi lớp GameSettings để tìm nạp số tiền thưởng từ Cấu hình từ xa.

GameSettings.kt

// TODO: Add FirebaseRemoteConfig as a class member
class GameSettings(private val rc: FirebaseRemoteConfig) {

  ...

  // TODO: Apply reward amount from the Remote Config (102)
  val rewardAmount: Int
    get() = rc.getLong(KEY_REWARD_AMOUNT).toInt()

  companion object {
    ...

    // TODO: Add a key for 'reward_amount' Remote Config parameter (102)
    private const val KEY_REWARD_AMOUNT = "reward_amount"
  }
}

Tạo một thông số Cấu hình từ xa trên bảng điều khiển

Tiếp theo, bạn sẽ tạo một thông số Cấu hình từ xa mới cho số tiền thưởng để có thể điều chỉnh giá trị của thông số đó ngay lập tức.

Để tạo một thông số mới, hãy chuyển đến bảng điều khiển của Firebase, sau đó chọn dự án Awesome Drawing Quiz mà bạn đã tạo trước đó. Nhấp vào nút Cấu hình từ xa -> THÊM THAM SỐ ĐẦU TIÊN.

7f52617141c53726.png

Đặt tên tham số là reward_amount và đặt giá trị mặc định của tham số thành 1. Sau đó, hãy nhấp vào nút Thêm tham số.

cbc771fd1685b29c.png

Nhấp vào nút Xuất bản thay đổi để áp dụng thay đổi cho người dùng.

d6a6aa4a60e06ee9.png

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

Giờ đây, bạn có thể định cấu hình số tiền phần thưởng trong Bài kiểm tra vẽ thú vị trên bảng điều khiển của Firebase mà không cần phải cập nhật mã ứng dụng.

Trong phần này, bạn sẽ thay đổi số tiền thưởng từ 1 thành 2 để ứng dụng hiển thị thêm 2 ký tự gợi ý sau khi xem Quảng cáo có tặng thưởng.

Cập nhật giá trị mặc định của tham số reward_amount

Chuyển đến bảng điều khiển của Firebase, sau đó chọn dự án Awesome Drawing Quiz mà bạn đã tạo trước đó. Nhấp vào Cấu hình từ xa rồi nhấp vào reward_amount trong danh sách. Tiếp theo, hãy thay đổi giá trị mặc định thành 2 rồi nhấp vào nút Cập nhật.

9a9bd8a26a39bfe3.png

Nhấp vào nút Xuất bản thay đổi để áp dụng thay đổi cho người dùng.

d6a6aa4a60e06ee9.png

Xác minh thay đổi về hành vi của ứng dụng

Để xác nhận thay đổi về hành vi của ứng dụng, hãy chạy lại dự án. Sau khi xem xong một Quảng cáo có tặng thưởng, bạn sẽ thấy rằng ứng dụng hiện hiển thị 2 chữ cái làm phần thưởng, như chúng ta đã định cấu hình trong bảng điều khiển Cấu hình từ xa.

Trước khi xem Quảng cáo có tặng thưởng

Được tặng thêm 2 chữ cái làm phần thưởng

7. Tạo thử nghiệm để tối ưu hoá số tiền thưởng

Giờ đây, bạn có thể thay đổi số tiền thưởng mà không cần phải xuất bản bản cập nhật ứng dụng. Tuy nhiên, làm cách nào để bạn xác định được mức thay đổi nào là phù hợp cho ứng dụng?

Với Thử nghiệm A/B của Firebase, bạn có thể chạy các thử nghiệm để tối ưu hoá trải nghiệm tổng thể của người dùng trong ứng dụng mà không cần cập nhật ứng dụng hoặc tạo một công cụ riêng để chạy và theo dõi hiệu suất của từng thử nghiệm.

Thiết kế thử nghiệm

Trước khi tạo thử nghiệm mới, bạn nên đặt mục tiêu rõ ràng cho thử nghiệm. Hãy nhớ xem kỹ danh sách kiểm tra sau đây trước khi tạo một thử nghiệm mới.

  • Nội dung: Bạn muốn tối ưu hoá nội dung nào? (ví dụ: độ khó của trò chơi, thời gian/khả năng hiển thị của quảng cáo, v.v.)
  • Lý do: Mục tiêu kinh doanh của bạn khi chạy thử nghiệm là gì? (ví dụ: để tối đa hoá doanh thu từ quảng cáo, tăng tỷ lệ giữ chân, v.v.)
  • Đối tượng: Những ai sẽ tham gia thử nghiệm? (ví dụ: Tất cả người dùng, Đối tượng người dùng cụ thể, v.v.)

Trong Lớp học lập trình này, bạn sẽ tạo một thử nghiệm để tối ưu hoá giá trị phần thưởng nhằm tối đa hoá mức độ tương tác hằng ngày của người dùng trong ứng dụng Awesome Drawing Quiz (Đố vui vẽ tranh siêu đỉnh).

Tạo thử nghiệm

Mở dự án Awesome Drawing Quiz (Bài kiểm tra vẽ thú vị) trên bảng điều khiển của Firebase. Chọn trình đơn Kiểm thử A/B, sau đó nhấp vào nút Tạo thử nghiệm.

Chọn Cấu hình từ xa để tạo một thử nghiệm Cấu hình từ xa.

f38a85328ab54e7e.png

Đặt tên cho thử nghiệm là "Số tiền thưởng" như trong ảnh chụp màn hình sau.

15d552adb61c0b08.png

Định cấu hình các lựa chọn nhắm mục tiêu. Trong Lớp học lập trình này, bạn sẽ nhắm đến 100% người dùng của Awesome Drawing Quiz (Bài kiểm tra vẽ tuyệt vời).

61b316741a63050f.png

Vì mục tiêu chính của thử nghiệm là tìm ra giá trị tối ưu giúp tối đa hoá mức độ tương tác hằng ngày của người dùng, hãy chọn Mức độ tương tác hằng ngày của người dùng làm chỉ số chính để theo dõi.

694641b57d90ff65.png

Cuối cùng, hãy thiết lập nhóm đối chứng và nhóm biến thể để có thể xác định nhóm nào hoạt động hiệu quả hơn. Chọn reward_amount trong nhóm đối chứng và giữ nguyên giá trị của nhóm này. Đối với nhóm biến thể, hãy đặt tên là "Ít phần thưởng", sau đó thay đổi giá trị của reward_amount thành 1.

10ed7f5b06858519.png

Với cấu hình này, những người trong nhóm "Ít phần thưởng" sẽ nhận được một chữ cái làm phần thưởng, trong khi những người trong Nhóm đối chứng sẽ nhận được hai chữ cái làm phần thưởng. Do đó, bạn sẽ thấy số lượng phần thưởng ảnh hưởng đến người dùng như thế nào.

Sau khi nhấp vào nút Xem xét, bạn sẽ thấy thông tin tổng quan về thử nghiệm như sau.

ae6477ce79f6265d.png

Chạy thử nghiệm

Nhấp vào nút Bắt đầu thử nghiệm để chạy thử nghiệm. Xin lưu ý rằng bạn không thể thay đổi cấu hình thử nghiệm sau khi thử nghiệm bắt đầu.

7131bf9b4fa74fa5.png

8. Quản lý thử nghiệm

Xem tiến trình thử nghiệm

Bạn có thể kiểm tra tiến trình thử nghiệm trong trình đơn Thử nghiệm A/B trong bảng điều khiển của Firebase. Trình đơn này sẽ có dạng như ảnh chụp màn hình sau. Xin lưu ý rằng bạn cũng có thể xem số người dùng tham gia thử nghiệm trong 30 phút qua trên thẻ.

8a7009bdd8871d95.png

Sau khi nhấp vào thử nghiệm trong danh sách, bạn có thể xem thông tin chi tiết về thử nghiệm. Cho đến khi thử nghiệm có thể xác định được biến thể dẫn đầu (tức là biến thể hoạt động hiệu quả nhất), bạn sẽ thấy thông báo "Chưa thể xác định biến thể dẫn đầu".

a4e7ca3e3f4711cd.png

Sau một thời gian chạy, thử nghiệm sẽ bắt đầu hiển thị dữ liệu đã thu thập được cho đến thời điểm đó trong mục Thông tin tổng quan về mức độ cải thiện. Bạn có thể so sánh hiệu suất của từng biến thể để xem biến thể nào hoạt động hiệu quả hơn. Ảnh chụp màn hình sau đây cho thấy ví dụ về phần Tổng quan về các điểm cải tiến.

e2d00fc27c053fd3.png

Trong bảng bên dưới mục Thông tin tổng quan về mức độ cải thiện, bạn có thể xem thông tin chi tiết về các chỉ số mục tiêu của thử nghiệm cũng như các chỉ số bổ sung đang được theo dõi trong thử nghiệm. Ảnh chụp màn hình sau đây cho thấy một ví dụ về phần thông tin chi tiết về chỉ số.

c3859d642f85cc52.png

Ra mắt tính năng người dẫn đầu cho tất cả người dùng

Sau khi thử nghiệm chạy đủ lâu để tìm ra biến thể dẫn đầu hoặc biến thể hiệu quả nhất, bạn có thể ra mắt thử nghiệm cho 100% người dùng. Sau khi thử nghiệm A/B tìm ra biến thể dẫn đầu rõ ràng, hệ thống sẽ khuyến khích bạn ra mắt biến thể dẫn đầu cho tất cả người dùng.

86cb6a6c07516634.png

Tuy nhiên, ngay cả khi thử nghiệm chưa xác định được biến thể dẫn đầu rõ ràng, bạn vẫn có thể chọn ra mắt một biến thể cho tất cả người dùng.

Trên màn hình thông tin chi tiết về thử nghiệm, hãy nhấp vào trình đơn theo bối cảnh ( 73afe611adf58774.png), rồi nhấp vào Ra mắt biến thể.

374e1c72be1d0656.png

Chọn một biến thể để ra mắt cho tất cả người dùng, sau đó nhấp vào nút Xem trong Cấu hình từ xa để xem các thay đổi trước khi bạn thực hiện thay đổi trong Cấu hình từ xa.

e176f6e6a72c754.png

Sau khi bạn xác nhận rằng bản nháp không có vấn đề gì, hãy nhấp vào nút Xuất bản thay đổi để áp dụng thay đổi cho tất cả người dùng.

d65d545620ce93f6.png

9. Đã xong!

Bạn đã hoàn thành Lớp học lập trình AdMob+Firebase 102 cho Android. Bạn có thể tìm thấy mã hoàn chỉnh cho Lớp học lập trình này trong thư mục android_studio_folder.png102-complete.