튜토리얼: AdMob, Google 애널리틱스, Firebase를 사용하여 하이브리드 수익 창출 최적화

3단계: 특정 광고 경험을 표시하도록 Firebase Remote Config 설정


소개: 하이브리드 최적화 AdMob, Google Analytics, Firebase를 사용한 수익 창출
1단계: AdMob을(를) 사용하여 새 디스플레이용 광고 단위 만들기
2단계: 설정 Google 애널리틱스

3단계: 설정 특정 광고 경험을 표시하려면 Firebase Remote Config


마지막 단계가 끝나면 Google 애널리틱스 잠재고객에 대해 알아보았습니다. 포함 이 단계에서는 Remote Config 부울 제어 매개변수를 만듭니다. '구매자' 데이터를 활용하는 (ad_control_switch라고 함) 잠재고객입니다. 사용자는 그런 다음 앱이 표시할 콘텐츠에 관한 로직을 앱 코드에 해당 매개변수의 값입니다.

Firebase 콘솔에서 Remote Config 매개변수 및 조건 설정

  1. Firebase 콘솔에서 Firebase 프로젝트를 엽니다

  2. 왼쪽 창에서 참여 섹션을 펼친 다음 원격 구성.

  3. 구성 만들기 (또는 다음을 사용한 경우 매개변수 추가)를 클릭합니다. Remote Config 전).

  4. 매개변수 만들기 패널에서 다음 단계를 완료합니다.

    1. 매개변수 이름 필드에 ad_control_switch를 입력합니다.

    2. Data type 드롭다운 메뉴에서 불리언을 선택합니다.

    3. 새로 만들기를 클릭한 다음 새 조건 만들기를 선택합니다.

  5. 새 조건 정의 대화상자에서 다음 단계를 완료합니다.

    1. Name 필드에 Purchasers Group (또는 기타 조건의 식별 가능한 이름).

    2. 적용 조건... 드롭다운 메뉴에서 사용자 잠재고객을 선택합니다.

    3. 잠재고객 선택 드롭다운 메뉴에서 구매자를 선택합니다.

    4. 조건 저장을 클릭합니다.

  6. 매개변수 만들기 패널로 돌아가서 다음 단계를 완료합니다.

    1. 구매자 그룹에서 false를 선택합니다.

    2. 기본값true를 선택합니다.

  7. 저장변경사항 게시를 차례로 클릭합니다.

이 구성에서 사용자가 '구매자'에 있는지 확인합니다. 잠재고객 (즉, 유료 사용자인 경우)

  • 사용자가 '구매자' 없는 경우 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 및 이 튜토리얼의 이전 단계에서 생성한 Firebase용 Google 애널리틱스 SDK입니다.

Swift

Podfile에 Remote Config 포드를 추가하고 설치합니다.

pod 'Firebase/RemoteConfig'

Android

build.gradle 파일에 Remote Config 라이브러리 종속 항목을 추가합니다.

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는 새 매개변수를 확인하도록 구성되어 있습니다. 1시간마다 한 번씩 값을 반환합니다.

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 매개변수를 처리하도록 구성되었습니다. 만들 수 있습니다

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.
  }
}

앱 출시

광고 표시 여부를 결정하는 로직은 코드베이스 내에 있으므로 이 로직이 포함된 앱의 새 버전 출시

이 튜토리얼의 단계를 따랐다면 앱이 즉시 시작되어야 합니다. 개인 맞춤 인앱 광고 경험을 제공할 수 있습니다. GCP 콘솔에서 AdMob 계정과 Google 애널리틱스의 광고 수익 (Firebase 콘솔 또는 Google 애널리틱스 UI)


이제 모든 작업이 완료되었습니다. 하이브리드 수익 창출 최적화를 위한 튜토리얼을 완료했습니다. AdMob, Google 애널리틱스, Firebase 사용




<ph type="x-smartling-placeholder"></ph> 2단계: Google 애널리틱스 설정