3단계: 특정 광고 환경을 표시하도록 Firebase Remote Config 설정하기
| 소개: AdMob, Google 애널리틱스, Firebase를 사용하여 하이브리드 수익 창출 최적화하기 AdMob, Google Analytics, 및 Firebase |
| 1단계: AdMob을 사용하여 디스플레이용 새 광고 단위 만들기 |
| 2단계: 설정하기 Google 애널리틱스 |
|
3단계: 설정하기 Firebase Remote Config 특정 광고 환경을 표시하도록 |
마지막 단계에서는 Google 애널리틱스 잠재고객에 대해 알아보았습니다. 이
단계에서는 Remote Config 부울 제어 매개변수
(ad_control_switch이라고 함)를 만들어 '구매자' 잠재고객을 활용합니다. 그런 다음 이 매개변수의 값을 기준으로 앱에 표시할 항목에 대한 논리를 앱 코드에 추가합니다.
Remote Config 매개변수 및 조건을 Firebase Console에서 설정
Firebase Console에서 Firebase 프로젝트를 엽니다.
왼쪽 창에서 참여 섹션을 펼친 다음 원격 구성 을 선택합니다.
구성 만들기 (또는 이전에 사용한 적이 있는 경우 매개변수 추가 Remote Config)를 클릭합니다.
매개변수 만들기 패널에서 다음 단계를 완료합니다.
매개변수 이름 필드에
ad_control_switch를 입력합니다.Data type드롭다운 메뉴에서 부울을 선택합니다.**새로 만들기** 를 클릭한 다음 **새 조건 만들기** 를 선택합니다.
새 조건 정의 대화상자에서 다음 단계를 완료합니다.
이름 필드에
Purchasers Group(또는 조건을 쉽게 식별할 수 있는 다른 이름)을 입력합니다.다음 조건이 충족되는 경우 적용... 드롭다운 메뉴에서 사용자 잠재고객 을 선택합니다.
잠재고객 선택 드롭다운 메뉴에서 구매자 를 선택합니다.
조건 저장 을 클릭합니다.
매개변수 만들기 패널로 돌아가서 다음 단계를 완료합니다.
구매자 그룹의 값으로 false를 선택합니다.
_기본값_ 으로 true 를 선택합니다.
저장을 클릭한 다음 변경사항 게시를 클릭합니다.
이 구성은 사용자가 '구매자' 잠재고객에 속하는지(즉, 유료 사용자인지) 확인합니다.
사용자가 "구매자" 잠재고객에 속하는 경우 Remote Config은
false매개변수의 값으로ad_control_switch을 반환합니다.사용자가 "구매자" 잠재고객에 속하지 않는 경우 Remote Config 는
ad_control_switch매개변수의 값으로true를 반환합니다.
다음 단계에서는 이러한 매개변수 값을 처리하도록 앱에서 Remote Config을 구현합니다.
앱에 Remote Config SDK 추가하기
애플리케이션 코드에서 Remote Config을 사용하기 전에 앱의 코드베이스에 Remote Config SDK를 추가합니다. 이 튜토리얼의 이전 단계에서 앱에 Google Mobile Ads (AdMob) SDK와 Firebase용 Google 애널리틱스 SDK가 이미 있어야 합니다.
Swift
podfile에 Remote Config 포드를 추가하고 설치합니다.
pod 'Firebase/RemoteConfig'
Android
Remote Config 라이브러리 종속 항목을 build.gradle 파일에 추가합니다.
implementation 'com.google.firebase:firebase-config:23.1.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이(가) 1시간에 한 번씩 새 매개변수 값을 확인하도록 구성됩니다.
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 파라미터 값 사용하기
Remote Config 값을 loadAdUnit() 함수에서 미리 가져온 값을 사용하여 앱 인스턴스에서 다음 중 하나를 실행해야 하는지 확인합니다.
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 애널리틱스 대시보드 (Firebase Console 또는 Google 애널리틱스 UI)에서 광고 수익을 모니터링할 수 있습니다.AdMobFirebase
이제 모든 작업이 완료되었습니다. AdMob, Google 애널리틱스, Firebase를 사용하여 하이브리드 수익 모델을 최적화하기 위한 튜토리얼이 완료되었습니다.
관련 리소스
다른 솔루션 가이드를 확인하세요.
동영상 시리즈 보기: Firebase 및 AdMob을 사용하여 앱 수익 최적화