Hướng dẫn: Tối ưu hoá mô hình kiếm tiền kết hợp bằng AdMob, Google Analytics và Firebase

Bước 3: Thiết lập Firebase Remote Config để hiển thị các trải nghiệm quảng cáo cụ thể


Giới thiệu: Tối ưu hoá kết hợp kiếm tiền bằng AdMob, Google Analytics và Firebase
Bước 1: Sử dụng AdMob để tạo các đơn vị quảng cáo mới cho hiển thị
Bước 2: Thiết lập Google Analytics

Bước 3: Thiết lập Firebase Remote Config để hiển thị các trải nghiệm quảng cáo cụ thể


Ở cuối bước cuối cùng, bạn đã tìm hiểu về đối tượng Google Analytics. Trong ở bước này, bạn sẽ tạo một tham số do boolean Remote Config kiểm soát (được gọi là ad_control_switch) tận dụng "Người mua" đối tượng. Bạn sẽ thì hãy thêm logic vào mã của ứng dụng để biết ứng dụng sẽ hiển thị nội dung gì dựa trên đó giá trị của thông số đó.

Thiết lập các thông số và điều kiện Remote Config trong bảng điều khiển Firebase

  1. Trong bảng điều khiển Firebase, mở dự án Firebase của bạn.

  2. Trong ngăn bên trái, hãy mở rộng phần Thu hút, rồi chọn Cấu hình từ xa.

  3. Nhấp vào Tạo cấu hình (hoặc Thêm thông số nếu bạn đã sử dụng Remote Config trước).

  4. Trong bảng điều khiển Tạo thông số, hãy hoàn thành các bước sau:

    1. Trong trường Tên thông số, hãy nhập ad_control_switch.

    2. Trong trình đơn thả xuống Data type, hãy chọn Boolean.

    3. Nhấp vào Tạo mới, rồi chọn Tạo điều kiện mới.

  5. Trong hộp thoại Xác định điều kiện mới, hãy hoàn tất các bước sau:

    1. Trong trường Tên, hãy nhập Purchasers Group (hoặc bất kỳ tên nào khác dễ dàng hơn) tên nhận dạng cho điều kiện).

    2. Trong trình đơn thả xuống Áp dụng nếu..., hãy chọn (Các) Đối tượng người dùng.

    3. Trong trình đơn thả xuống Chọn(các) đối tượng, hãy chọn Người mua.

    4. Nhấp vào Lưu điều kiện.

  6. Quay lại bảng điều khiển Tạo thông số, hoàn tất các bước sau:

    1. Đối với Giá trị của Nhóm người mua, hãy chọn false.

    2. Đối với Giá trị mặc định, hãy chọn true.

  7. Nhấp vào Lưu, rồi nhấp vào Xuất bản các thay đổi.

Cấu hình này sẽ kiểm tra xem người dùng có nằm trong danh sách "Người mua" hay không đối tượng (tức là họ là người dùng trả tiền):

  • Nếu người dùng nằm trong nhóm "Người mua" thì Remote Config sẽ trả về giá trị của false cho tham số ad_control_switch.

  • Nếu người dùng không nằm trong danh sách "Người mua" đối tượng, sau đó là Remote Config sẽ trả về giá trị true cho tham số ad_control_switch.

Ở các bước sau, bạn sẽ triển khai Remote Config trong ứng dụng của mình để xử lý các giá trị tham số này.

Thêm SDK Remote Config vào ứng dụng

Trước khi sử dụng Remote Config trong mã xử lý ứng dụng, hãy thêm thuộc tính SDK Remote Config vào cơ sở mã của ứng dụng. Xin lưu ý rằng ứng dụng của bạn phải có SDK Google Mobile Ads (AdMob) và SDK Google Analytics cho Firebase trong các bước trước của hướng dẫn này.

Swift

Thêm và cài đặt nhóm Remote Config trong tệp nhóm:

pod 'Firebase/RemoteConfig'

Android

Thêm phần phụ thuộc thư viện Remote Config vào tệp build.gradle:

implementation 'com.google.firebase:firebase-config:22.0.0'

Flutter

Từ thư mục gốc của dự án Flutter, hãy chạy lệnh sau để cài đặt trình bổ trợ Remote Config:

flutter pub add firebase_remote_config

Unity

Tải xuống và cài đặt phiên bản mới nhất Firebase Unity SDK, rồi thêm gói Remote Config vào dự án của bạn:
FirebaseRemoteConfig.unitypackage

Định cấu hình thực thể Remote Config

Để ứng dụng của bạn có thể dùng các giá trị tham số Remote Config, hãy định cấu hình Thực thể Remote Config để có thể tìm nạp các giá trị mới cho ứng dụng khách thực thể.

Trong ví dụ này, Remote Config được định cấu hình để kiểm tra tham số mới giá trị mỗi giờ một lần.

Swift

remoteConfig = RemoteConfig.remoteConfig()
let settings = RemoteConfigSettings()
settings.minimumFetchInterval = 3600
remoteConfig.configSettings = settings

Kotlin+KTX

remoteConfig = Firebase.remoteConfig
val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
}
remoteConfig.setConfigSettingsAsync(configSettings)

Java

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

Flutter

remoteConfig = FirebaseRemoteConfig.instance;
  final configSettings = FirebaseRemoteConfigSettings(
    minimumFetchInterval: Duration(hours: 1),
  );
  await remoteConfig.setConfigSettings(configSettings);

  // Use the `onConfigUpdated` callback to listen for changes to the config settings.
  remoteConfig.onConfigUpdated.listen((_) {
    print('Config settings confirmed');
  });

Unity

var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
var configSettings = new ConfigSettings {
  MinimumFetchInternalInMilliseconds =
        (ulong)(new TimeSpan(1, 0, 0).TotalMilliseconds)
};
remoteConfig.SetConfigSettingsAsync(configSettings)
        .ContinueWithOnMainThread(task => {
          Debug.Log("Config settings confirmed");
}

Tìm nạp và kích hoạt Remote Config

Tìm nạp và kích hoạt tham số Remote Config để có thể bắt đầu sử dụng các giá trị thông số mới.

Bạn muốn thực hiện lệnh gọi này càng sớm càng tốt trong giai đoạn tải của ứng dụng vì lệnh gọi này không đồng bộ và bạn cần có giá trị Remote Config tìm nạp trước để ứng dụng của bạn biết có hiển thị quảng cáo hay không.

Swift

remoteConfig.fetch() { (status, error) -> Void in
  if status == .success {
    print("Config fetched!")
    self.remoteConfig.activate() { (changed, error) in
      // ...
    }
  } else {
    print("Config not fetched")
    print("Error: \(error?.localizedDescription ?? "No error available.")")
  }
  self.loadAdUnit()
}

Kotlin+KTX

remoteConfig.fetchAndActivate()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                val updated = task.result
                Log.d(TAG, "Config params updated: $updated")
            } else {
                Log.d(TAG, "Config params failed to update")
            }
            loadAdUnit()
        }

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);
                } else {
                    Log.d(TAG, "Config params failed to update");
                }
                loadAdUnit();
            }
        });

Flutter

remoteConfig = FirebaseRemoteConfig.instance;

// Fetch and activate the latest Remote Config values.
final updated = await remoteConfig.fetchAndActivate();

// Check if the config params were updated successfully.
if (updated) {
  print('Config params updated');
} else {
  print('Config params failed to update');
}

// Load the ad unit.
_loadAdUnit();

Unity

remoteConfig.FetchAndActivateAsync().ContinueWithOnMainThread(task => {
  if (task.IsFaulted) {
    Debug.LogWarning("Config params failed to update");
  } else {
    Debug.Log("Config params updated: " + task.Result);
  }
  LoadAdUnit();
});

Ứng dụng của bạn hiện được định cấu hình để xử lý tham số Remote Config mà bạn tạo trước đó trong bước này.

Sử dụng giá trị thông số Remote Config

Sử dụng giá trị Remote Config được tìm nạp trước trong hàm loadAdUnit() để xác định xem phiên bản ứng dụng có cần thực hiện một trong những thao tác sau hay không:

  • Giá trị tham số ad_control_switch phân giải thành true: hiển thị quảng cáo xen kẽ (vì người dùng là người dùng không trả tiền).

  • Giá trị tham số ad_control_switch phân giải thành false: không hiển thị quảng cáo (vì người dùng là người dùng trả tiền).

Swift

private func loadAdUnit() {
  let showAds = remoteConfig["ad_control_switch"].boolValue

  if showAds {
    // Load interstitial ad (implemented ad unit)
    // per AdMob instructions (the first step of this tutorial).
  } else {
    // Don't show ads.
  }
}

Kotlin+KTX

private fun loadAdUnit() {
  var showAds = remoteConfig.getBoolean(ad_control_switch)

  if (showAds) {
      // Load interstitial ad (implemented ad unit)
      // per AdMob instructions (the first step of this tutorial).
    } else {
      // Don't show ads.
    }
}

Java

private void loadAdUnit() {
    boolean showAds =
      mFirebaseRemoteConfig.getBoolean(ad_control_switch);

    if (showAds) {
      // Load interstitial ad (implemented ad unit)
      // per AdMob instructions (the first step of this tutorial).
    } else {
      // Don't show ads.
    }
}

Flutter

void _loadAdUnit() {
  bool showAds = remoteConfig.getBool(ad_control_switch);

  if (showAds) {
    // Load interstitial ad (implemented ad unit)
    // per AdMob instructions (the first step of this tutorial).
  } else {
    // Don't show ads.
  }
}

Unity

void LoadAdUnit() {
  bool showAds =
      remoteConfig.GetValue("ad_control_switch").BooleanValue;

  if (showAds) {
    // Load interstitial ad (implemented ad unit)
    // per AdMob instructions (the first step of this tutorial).
  } else {
    // Don't show ads.
  }
}

Phát hành ứng dụng

Do logic để hiển thị quảng cáo hay không nằm trong cơ sở mã của bạn, nên bạn cần phát hành một phiên bản ứng dụng mới có chứa logic này.

Nếu bạn làm theo các bước của hướng dẫn này, ứng dụng của bạn sẽ khởi động ngay phân phát trải nghiệm quảng cáo trong ứng dụng tuỳ chỉnh cho người dùng. Bạn có thể theo dõi doanh thu quảng cáo trong cả tài khoản AdMob và trong Google Analytics trang tổng quan (trong bảng điều khiển Firebase hoặc giao diện người dùng Google Analytics).


Chỉ vậy thôi! Bạn đã xem xong hướng dẫn để tối ưu hoá mô hình kiếm tiền kết hợp bằng cách sử dụng AdMob, Google Analytics và Firebase.




Bước 2: Thiết lập Google Analytics