Firebase Predictions を使用して収益化戦略をテストする

Firebase Predictions を使用すると、ユーザーの予測される行動に応じてさまざまな体験をアプリのユーザーに簡単に提供できます。たとえば、今後アプリ内購入を行う可能性のあるユーザーには広告なしの体験を提供し、他の全ユーザーには広告を表示することができます。ただし、この収益化戦略を全面的にデプロイする前に、そのような戦略が既存のユーザーの維持に悪影響を及ぼさないようにすることが重要です。

このガイドでは、Firebase Predictions と Firebase A/B テストを使用して両方の目標を達成する方法を示します。アプリ内購入を行わないと予想されるユーザーに対して広告ベースの収益化戦略を有効にし、この新しい戦略の効果を確認します。

始める前に

Predictions を活用してアプリの広告ポリシーを策定するには、あらかじめアプリで Firebase 向け Google アナリティクスを有効にする必要があります。具体的な要件は以下のとおりです。

  • Firebase コンソールアナリティクスのデータ共有を有効にします。
  • ecommerce_purchase など、自動的に収集されない支出関連のイベントを明示的に記録します(Firebase では、App Store および Play ストアで処理されるアプリ内購入の in_app_purchase イベントは自動的に記録されます)。また、分類に使用できるデータを最大化するために、アプリに関連する他のイベントも広く記録する必要があります。
  • Firebase で意味のある予測をするのに十分なイベントデータ量を保持します。Firebase Predictions に必要なデータ量の目安は、月間アクティブ ユーザー 10,000 人、正例データと負例データそれぞれ 500 件です。

ユーザー支出の予測を開始する

最初に、Firebase プロジェクトを設定して、ユーザーの支出の予測を開始します。

  1. Firebase コンソールで、[Predictions] セクションを開きます。Predictions の利用規約に同意していない場合は、同意してください。

    利用規約に同意すると、プロジェクトで Predictions が有効になります。Firebase コンソールの [Predictions] セクションでは、カスタム予測を定義できます。ただし、支出予測の場合、組み込まれている spend および not_spend 予測を使用できます。これらは、アナリティクス イベントの集計に基づいています。これらの予測は、Predictions を有効にして基準となる支出イベントの記録を開始してから約 24 時間で利用可能になります。

  2. not_spend 予測に対応する Remote Config パラメータを追加します。

    1. Firebase コンソールで、[Remote Config] をクリックします。
    2. たとえば、will_not_spend という名前の新しいパラメータを追加します。not_spend が予測されたときに適用される、このパラメータの新しい条件を作成します。次に、新しい条件の値を true に設定し、デフォルト値を false に設定します。

収益化戦略のテストを作成する

次に、3 つの収益化戦略をテストする A/B テストを作成します。

  • 広告を表示しない(コントロール グループ)
  • 常に広告を表示する
  • 支出しないことが予測されたユーザーにのみ広告を表示する

テストを作成するには:

  1. Firebase コンソールで、[Remote Config] セクションを開きます。
  2. [A/B テスト] ボタンをクリックします。
  3. 新しいテストを作成します。

    1. リストからアプリを選択し、テストに含めるユーザーの数を指定します。高額購入者などの特定のユーザー カテゴリをテストから除外することもできます。

    2. 収益化戦略ごとに 1 つずつ、計 3 つのバリアントを定義します。

      次に、ads_policy パラメータを作成し、値 ads_never をコントロール グループ パターンに、ads_always を 2 番目のパターンに、ads_nonspenders を予測ベースのパターンにそれぞれ割り当てます。アプリではこのパラメータを使用して、特定のユーザーに広告を表示するかどうかを決定します。

    3. 目標指標のリストから [定着(2~3 日)] を選択し、追跡する追加指標(購入の収益、アプリの削除、広告のクリックなど)を選択します。

      最後に、[詳細オプション] セクションで、アプリで明示的に記録する ads_policy_set アナリティクス イベントを選択します。このイベントは、一度ログに記録されるまでリストに表示されません。

収益化戦略をアプリに実装する

Firebase コンソールで予測とテストを設定したので、それぞれのテストパターンから収益化戦略を実装します。

たとえば、広告に AdMob を使用するとします。

  1. アナリティクス、Remote Config、および 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.3'
    implementation 'com.google.firebase:firebase-config:16.0.0'
    implementation 'com.google.firebase:firebase-ads:15.0.1'
    
  2. Remote Config を使用して現在のユーザーの広告ポリシーを取得します。

    iOS - Swift

    self.remoteConfig = RemoteConfig.remoteConfig()
    self.remoteConfig.setDefaults(["ads_policy": "ads_never"])
    
    // ...
    
    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()
    
        // ...
    }
    

    Android

    final FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
    
    Map remoteConfigDefaults = new HashMap<String, Object>();
    remoteConfigDefaults.put("ads_policy", "ads_never");
    config.setDefaults(remoteConfigDefaults);
    
    // ...
    
    config.fetch(cacheExpiration)
            .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()) {
                        config.activateFetched();
                    }
    
                    // Act on the retrieved parameters
    
                    // Show ads based on the ad policy retrieved with Remote Config
                    executeAdsPolicy();
    
                    // ...
                }
            });
    
  3. 最後に、取得した広告ポリシーに基づいて広告を表示または非表示にします。また、この時点で、ユーザーがテストに参加しているとみなせることを示すために ads_policy_set イベントを記録します。

    iOS - Swift

    func executeAdsPolicy() {
        let adsPolicy = self.remoteConfig["ads_policy"].stringValue
        let willNotSpend = self.remoteConfig["will_not_spend"].booleanValue
    
        if adsPolicy == "ads_always"
                || ((adsPolicy == "ads_nonspenders") && willNotSpend) {
            bannerView.load(GADRequest())
            self.bannerView.isHidden = false
        } else {
            self.bannerView.isHidden = true
        }
    
        Analytics.logEvent("ads_policy_set", parameters: nil)
    }
    

    Android

    FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
    String adPolicy = config.getString("ads_policy");
    boolean will_not_spend = config.getBoolean("will_not_spend");
    AdView mAdView = (AdView) findViewById(R.id.adView);
    
    if (adPolicy.equals("ads_always") ||
            (adPolicy.equals("ads_nonspenders") && will_not_spend)) {
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
        mAdView.setVisibility(View.VISIBLE);
    } else {
        mAdView.setVisibility(View.GONE);
    }
    
    FirebaseAnalytics.getInstance(this).logEvent("ads_policy_set", new Bundle());
    

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。