第 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。
点击创建配置(或添加参数,如果您之前使用过 Remote Config之前)。
在创建参数面板中,完成以下步骤:
在参数名称字段中,输入
ad_control_switch
。从
Data type
下拉菜单中选择布尔值。点击新建,然后选择创建新条件。
在定义新的条件对话框中,完成以下步骤:
在名称字段中,输入
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.0'
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+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");
}
提取并激活 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+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();
});
您的应用现已配置为处理Remote Config 创建 Deployment 清单
使用 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+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.
}
}
发布应用
由于展示广告的逻辑与不展示广告的逻辑位于代码库中,因此您需要 发布包含此逻辑的新版应用。
如果您按照本教程的步骤进行操作,您的应用应该会立即启动 为用户提供量身定制的应用内广告体验。您可以监控 AdMob账号和 Google Analytics 中的广告收入 信息中心(在 Firebase 控制台或 Google Analytics 界面中)。
大功告成!您已完成有关优化混合变现模式的教程 使用 AdMob、Google Analytics 和 Firebase。
相关资源
查看其他解决方案指南:
观看视频系列:利用 Firebase 和 AdMob
<ph type="x-smartling-placeholder"></ph> 第 2 步:设置 Google Analytics