Firebase 예측을 사용한 수익 창출 전략 실험

Firebase 예측을 사용하면 사용자의 예상 행동에 따라 다양한 경험을 앱 사용자에게 쉽게 제공할 수 있습니다. 예를 들어 앞으로 인앱 구매 가능성이 높은 사용자에게는 광고 없는 환경을 제공하고 그 밖의 사용자에게 광고를 게재할 수 있습니다. 그러나 이 수익 창출 전략을 전체적으로 배포하기 전에, 이러한 전략이 앱의 전체 수익을 실제로 높여주는지 확인할 필요가 있습니다.

이 가이드에서는 인앱 구매가 예측되지 않는 사용자를 대상으로 광고 기반 수익 창출 전략을 수립하고 새로운 전략의 효과를 검증한다는 2가지 목표를 Firebase 예측 및 Firebase A/B 테스팅을 활용하여 달성하는 방법을 설명합니다.

시작하기 전에

예측을 사용하여 앱의 광고 정책을 결정하려면 먼저 앱에서 Firebase용 Google 애널리틱스를 사용해야 합니다. 특히 다음 작업을 수행해야 합니다.

  • Firebase 콘솔에서 애널리틱스 데이터 공유를 사용 설정합니다.
  • ecommerce_purchase와 같이 자동으로 수집되지 않는 지출 관련 이벤트를 명시적으로 로깅합니다. Firebase는 App Store 및 Play 스토어에서 처리되는 인앱 구매의 in_app_purchase 이벤트를 자동으로 로깅합니다. 최대한 많은 데이터를 분류할 수 있도록 앱과 관련된 다른 모든 이벤트도 로깅하는 것이 일반적입니다.
  • 유의미한 예측을 위해 충분히 많은 양의 Firebase 이벤트 데이터를 확보합니다. 일반적으로 월간 활성 사용자 10,000명, 긍정적 예 500개, 부정적 예 500개를 확보하면 Firebase 예측에 충분한 데이터를 제공할 수 있습니다.

광고를 원격으로 구성 가능하도록 설정

우선 원격 구성 매개변수의 값에 따라 광고를 게재하거나 숨기도록 앱을 설정합니다. 다음 단계에서는 예측 및 A/B 테스팅을 구성하여 다양한 기준에 따라 원격으로 매개변수를 설정하지만, 지금은 앱에서 항상 광고를 게재합니다.

예를 들어 광고에 AdMob을 사용하는 경우:

  1. 애널리틱스, 원격 구성, AdMob SDK를 가져옵니다.

    iOS(Swift)

    Podfile에 SDK를 추가합니다.

    pod 'Firebase/Core'
    pod 'Firebase/RemoteConfig'
    pod 'Firebase/AdMob'
    

    그런 다음 가져옵니다.

    import Firebase
    

    Android

    implementation 'com.google.firebase:firebase-core:16.0.8'
    implementation 'com.google.firebase:firebase-config:16.4.0'
    implementation 'com.google.firebase:firebase-ads:17.2.0'
    
  2. 원격 구성을 초기화하고 ads_enabled 변수의 기본값을 true로 설정합니다. 이후에는 예측 및 A/B 테스팅을 설정하여 이 변수를 원격으로 설정하지만, 앱에서 기본값을 설정하면 원격 구성 변수가 검색되기 전에도 앱이 항상 올바르게 작동합니다.

    iOS(Swift)

    self.remoteConfig = RemoteConfig.remoteConfig()
    self.remoteConfig.setDefaults(["ads_enabled": true])
    

    자바
    Android

    mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
    
    Map<String, Object> remoteConfigDefaults = new HashMap<>();
    remoteConfigDefaults.put("ads_enabled", "true");
    mFirebaseRemoteConfig.setDefaults(remoteConfigDefaults);

    Kotlin
    Android

    firebaseRemoteConfig = FirebaseRemoteConfig.getInstance()
    
    val remoteConfigDefaults = HashMap<String, Any>()
    remoteConfigDefaults["ads_enabled"] = "true"
    firebaseRemoteConfig.setDefaults(remoteConfigDefaults)
  3. ads_enabled의 값에 따라 광고를 게재하거나 숨깁니다. 예측을 설정할 때까지 이 값은 항상 true이며 광고가 항상 게재됩니다.

    iOS(Swift)

    self.remoteConfig.fetch() { (status, error) -> Void in
        if status == .success {
          self.remoteConfig.activateFetched()
        }
    
        // Act on the retrieved parameters
    
        // Show ads based on the ad policy retrieved with Remote Config
        self.executeAdsPolicy()
    
        // ...
    }
    
    // ...
    
    func executeAdsPolicy() {
        let showAds = self.remoteConfig["ads_enabled"].booleanValue
        if showAds {
            bannerView.load(GADRequest())
            self.bannerView.isHidden = false
        } else {
            self.bannerView.isHidden = true
        }
    }
    

    자바
    Android

    mFirebaseRemoteConfig.fetch(CACHE_EXPIRATION)
            .addOnCompleteListener(this, new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if (task.isSuccessful()) {
                mFirebaseRemoteConfig.activateFetched();
            }
    
            // Act on the retrieved parameters
    
            // Show ads based on the ad policy retrieved with Remote Config
            executeAdsPolicy();
    
            // ...
        }
    });
    // ...
    private void executeAdsPolicy() {
        boolean showAds = mFirebaseRemoteConfig.getBoolean("ads_enabled");
        AdView mAdView = findViewById(R.id.adView);
    
        if (showAds) {
            AdRequest adRequest = new AdRequest.Builder().build();
            mAdView.loadAd(adRequest);
            mAdView.setVisibility(View.VISIBLE);
        } else {
            mAdView.setVisibility(View.GONE);
        }
    }

    Kotlin
    Android

    firebaseRemoteConfig.fetch(CACHE_EXPIRATION)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    firebaseRemoteConfig.activateFetched()
                }
    
                // Act on the retrieved parameters
    
                // Show ads based on the ad policy retrieved with Remote Config
                executeAdsPolicy()
    
                // ...
            }
    // ...
    private fun executeAdsPolicy() {
        val showAds = firebaseRemoteConfig.getBoolean("ads_enabled")
        val adView = findViewById<AdView>(R.id.adView)
    
        if (showAds) {
            val adRequest = AdRequest.Builder().build()
            adView.loadAd(adRequest)
            adView.visibility = View.VISIBLE
        } else {
            adView.visibility = View.GONE
        }
    }

이 시점에서 App Store 또는 Play 스토어에 앱을 배포할 수 있습니다. 사용자에게 기본 광고 환경이 제공되므로 광고가 항상 게재되지만, 광고 게재는 원격 구성 변수에 의해 제어되므로 사용자에게 앱 업데이트를 배포하지 않아도 Firebase 콘솔만 사용하여 광고 동작을 바꿔가며 실험해 볼 수 있습니다.

사용자 지출 예측 시작

다음으로, Firebase 프로젝트를 설정하여 사용자의 지출 행동을 예측하기 시작합니다.

Firebase 콘솔에서 예측 섹션을 엽니다. 예측 서비스 약관에 아직 동의하지 않았다면 동의합니다.

서비스 약관에 동의하면 프로젝트에 예측이 사용 설정됩니다. Firebase 콘솔의 예측 섹션에서 맞춤 예측을 정의할 수 있습니다. 그러나 지출 예측의 경우에는 애널리틱스 이벤트를 집계하여 사용자가 인앱 구매 또는 전자상거래 구매를 할지 여부를 예측하는 기본 제공 spendnot_spend 예측을 사용할 수 있습니다. 구독 구매는 현재 이 예측에 고려되지 않습니다. 예측을 사용 설정하고 몇 주간의 지출 이벤트가 로깅된 후에 이러한 예측이 제공됩니다.

수익 창출 전략 실험 만들기

이제 광고를 항상 게재하는 방식과 비교하여 예측 기반 수익 창출 전략의 수익 효과를 테스트하는 A/B 테스팅 실험을 만듭니다.

실험에서는 통제그룹, 매개변수를 무조건 설정하는 그룹, 예측 기반 그룹이라는 3가지 변수를 만드는 것이 좋습니다. 이렇게 하면 실험을 통해 예측 기반 방식의 효과가 단순한 일괄 적용 방식보다 더 우수한지 여부를 판단할 수 있습니다.

실험을 만드는 방법은 다음과 같습니다.

  1. Firebase 콘솔에서 A/B Testing 섹션을 엽니다.

  2. 새 실험을 만듭니다.

    1. 실험 만들기 > 원격 구성을 클릭합니다.

    2. 목록에서 앱을 선택하고 실험에 포함할 사용자 수를 지정합니다. 고액 지출자 등 특정 사용자 카테고리를 실험에서 제외하도록 선택할 수도 있습니다.

    3. 목표 측정항목 목록에서 총 추정 수익을 선택하고 추가로 추적할 측정항목(예: 사용자 참여, 유지, 앱 삭제, 광고 클릭)을 선택합니다.

    4. 세 가지 변수를 정의합니다.

      • 통제그룹(자동으로 생성됨)
      • 광고를 게재하지 않음
      • 지출 가능성이 높으면 광고를 게재하지 않음

      통제그룹에서 ads_enabled 매개변수를 만들고 (no change)로 설정합니다. 통제그룹에 할당된 사용자에게는 광고를 항상 게재하는 기본 동작이 적용됩니다.

      광고를 게재하지 않음 변수에서 ads_enabled 매개변수를 false로 설정합니다. 이 변수에 할당된 사용자에게는 어떠한 경우에도 광고가 게재되지 않습니다.

      지출 가능성이 높으면 광고를 게재하지 않음 변수에서 ads_enabled 매개변수를 false로 설정하고 대상 조건을 예측: 지출(중간 위험 허용 범위)로 설정합니다. 이 변수에 할당된 사용자에게는 지출이 예측되는 날짜에 광고가 게재되지 않습니다.

실험을 시작하고, A/B 테스팅에서 주요 변수가 판명될 때까지 며칠 정도 실행합니다. 실험에서 주요 변수가 판명되지 않은 경우 더 많은 사용자를 대상으로 실험을 확대해야 할 수 있습니다.

가장 우수한 변수를 모든 사용자에게 적용

A/B 테스팅에서 주요 변수(이 경우 앱 수익이 극대화되는 변수)를 판명하기에 충분한 정보가 수집되었으면 가장 우수한 변수 또는 다른 변수를 모든 사용자에게 적용할지 여부를 결정할 수 있습니다.

Firebase 콘솔A/B Testing 섹션에서 완료된 실험의 세부정보 뷰를 엽니다. 뷰에서 목표 측정항목 및 선택한 보조 측정항목에 따른 각 변수의 성과를 확인할 수 있습니다. 이 정보를 근거로 주요 변수 또는 다른 변수의 전체 적용 여부를 결정할 수 있습니다.

모든 사용자에게 변수를 적용하려면 실험의 세부정보 페이지에서 more_vert > 주요 변수 구현을 클릭합니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.