第 3 步:设置 Firebase Remote Config 以展示特定的广告体验
简介:使用 AdMob、Google Analytics 和 Firebase 优化混合变现 |
第 1 步:使用 AdMob 创建新的广告单元以进行展示 |
第 2 步: 设置 Google Analytics |
第 3 步: 设置 Firebase Remote Config 以展示特定的广告体验 |
在上一步结束时,您了解了 Google Analytics 受众群体。在此步骤中,您将创建一个利用“购买者”受众群体的 Remote Config 布尔值控制参数(称为 ad_control_switch
)。然后,您将向应用代码添加逻辑,以便应用根据该参数的值显示相应的内容。
在 Firebase 控制台中设置 Remote Config 参数和条件
在 Firebase 控制台中,打开您的 Firebase 项目。
在左侧窗格中,展开互动部分,然后选择远程配置。
点击创建配置(如果您之前使用过 Remote Config,则点击添加参数)。
在创建参数面板中,完成以下步骤:
在参数名称字段中,输入
ad_control_switch
。从
Data type
下拉菜单中,选择 Boolean。点击新建,然后选择新建条件。
在定义新条件对话框中,完成以下步骤:
在名称字段中,输入
Purchasers Group
(或任何其他易于识别的条件名称)。从如果...则应用下拉菜单中,选择用户受众群体。
从选择受众群体下拉菜单中,选择买家。
点击 Save Condition。
返回创建参数面板,完成以下步骤:
对于“买方群组”的值,请选择 false。
在默认值中,选择 true。
点击保存,然后点击发布更改。
此配置将检查用户是否属于“购买者”受众群体(即付费用户):
如果用户属于“购买者”受众群体,则 Remote Config 将针对
ad_control_switch
参数返回false
的值。如果用户不属于“买家”受众群体,则 Remote Config 将针对
ad_control_switch
参数返回true
的值。
在以下步骤中,您将在应用中实现 Remote Config 来处理这些参数值。
将 Remote Config SDK 添加到您的应用
在应用代码中使用 Remote Config 之前,请将 Remote Config SDK 添加到应用的代码库中。请注意,您的应用应该已经包含本教程前面步骤中介绍的 Google Mobile Ads (AdMob) SDK 和 Google Analytics for Firebase SDK。
Swift
在您的 Podfile 中添加并安装 Remote Config pod:
pod 'Firebase/RemoteConfig'
Android
将 Remote Config 库依赖项添加到 build.gradle
文件中:
implementation 'com.google.firebase:firebase-config:22.0.1'
Flutter
从 Flutter 项目的根目录运行以下命令,安装 Remote Config 插件:
flutter pub add firebase_remote_config
Unity
下载并安装最新的 Firebase Unity SDK,然后将 Remote Config 软件包添加到您的项目中:
FirebaseRemoteConfig.unitypackage
配置 Remote Config 实例
为了让应用能够使用 Remote Config 参数值,请配置 Remote Config 实例,使其能够为客户端应用实例提取新值。
在此示例中,Remote Config 配置为每小时检查一次新参数值。
Swift
remoteConfig = RemoteConfig.remoteConfig()
let settings = RemoteConfigSettings()
settings.minimumFetchInterval = 3600
remoteConfig.configSettings = settings
Kotlin
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");
}
提取并激活 Remote Config
提取并激活 Remote Config 参数,使其可以开始使用新参数值。
您需要在应用的加载阶段尽早发出此调用,因为此调用是异步执行的,并且您需要预取 Remote Config 值,以便应用知道是否要显示广告。
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
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();
});
现在,您的应用已配置为处理您在此步骤前面创建的 Remote Config 参数。
使用 Remote Config 参数值
在 loadAdUnit()
函数中使用预取的 Remote Config 值,以确定应用实例应执行以下操作之一:
ad_control_switch
参数值解析为true
:显示插页式广告(因为用户是非付费用户)。ad_control_switch
参数值解析为false
:不显示广告(因为用户是付费用户)。
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
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.
}
}
发布应用
由于用于确定是否展示广告的逻辑位于代码库中,因此您需要发布包含此逻辑的新版应用。
如果您按照本教程中的步骤操作,您的应用应该会立即开始向用户提供量身定制的应用内广告体验。您可以在 AdMob 账号和 Google Analytics 信息中心(Firebase 控制台或 Google Analytics [分析] 界面)中监控广告收入。
大功告成!您已完成使用 AdMob、Google Analytics 和 Firebase 优化混合变现的教程。
相关资源
查看其他解决方案指南:
观看视频系列:使用 Firebase 和 AdMob 增加应用收入