Message to Earn (M2E、広告導線強化)

アプリ内メッセージングは、ユーザーをオファーウォールに誘導するための戦略的な手段です。メッセージングは、特定のユーザーグループやカレンシーセールのターゲティングに活用できます。Tapjoyの「Message to Earn」は、メッセージの内容、ターゲティング、頻度を細かくカスタマイズできるよう設計されています。また、独自のメッセージングを使用したい場合は、アプリ内メッセージをオファーウォールへディープリンクさせることも可能です。以下で両方の活用方法について詳しく説明します。

image_title

ベストプラクティス

  • Message to Earn はカレンシーセールや各種ターゲティングテストと組み合わせて設定することで、オファーウォールの効果を最大化できます。
  • Message to Earn は、ユーザーにオファーウォールを紹介するために、ホーム画面やメインメニューに表示されるべきです。
  • テストを重ねましょう!A/Bテストでトラフィックの10〜20%に対してM2Eを実施し、その有効性を測定してください。
  • メッセージの外観や雰囲気をゲームに合わせてカスタマイズしましょう。

Message to Earn (M2E) の使用方法

Message to Earn(M2E)のコンテンツカードは、ユーザーにオファーウォールを案内する前に文脈を提示するカスタマイズ可能なアプリ内の"ポップアップ"メッセージです。これらのメッセージは、より多くのユーザーをオファーウォールに誘導するのに役立ちます。また、カレンシーセールやターゲティングテストと併用することで、さらにその効果を高めることが可能です。例えば、「無料でゴールドを獲得。初回オファー完了で2倍のゴールドを獲得!」というメッセージで、初回ユーザーに2倍のレートを提示できます。

Message to Earn コンテンツカードを追加するプレイスメントによって、メッセージやオファーウォールがユーザーにどこで表示されるかが決まります。M2Eはユーザー操作によるプレイスメントではなく、コンテキストに基づいたプレイスメントに設定する必要があります。コンテキストプレイスメントとは、ユーザーがゲーム内で特定の条件を満たしたときに自動で表示されるものです。

以下のようなプレイスメントでのM2Eの設定を推奨します:

  • アプリ起動時のメインロード完了後
  • 通貨不足ポップアップ/離脱ポップアップ
  • アプリ内受信箱メッセージ(利用可能な場合)
  • ゲームレベルクリアやイベント完了後
  • アプリ内メッセージ

新しいプレイスメントの追加方法についてはこちらをご覧ください。

Message to Earnコンテンツカードの設定

Message to Earnを実装するには、プレイスメントが必要です。まだプレイスメントが作成されていない場合は、この手順に従って作成してください。

すでにMessage to Earn追加したいプレイスメントがある場合は、以下の手順に進んでください:

  1. 左のナビゲーションから「新規コンテンツ」を選び、「Message to Earn(広告導線強化)」を選択。
  2. コンテンツカードの設定を進めます。
  3. 「ポップアップ」セクションでは、独自のカスタム画像を追加するか、Tapjoyチームに作成を依頼できます。
    • カスタム画像の追加方法:
      • 「イメージアップロード」を選択
      • 遷移方法を選択
      • メッセージ文字を作成
  4. 「プレイスメント」セクションで、Message to Earnを表示したいプレイスメントを選択します。
  5. 保存

公開後は、[Overview]でM2Eコンテンツカードのパフォーマンスを確認できます。成果が振るわない場合は、異なるメッセージやターゲティングのA/Bテストを実施してください。

高度な設定

以下の機能は、M2Eコンテンツカードと併用可能です。

カレンシーセール

  • Message to Earnと併用してセール情報の認知度を高めましょう。作成方法はこちら。 ターゲティング
    • 特定のユーザー層に向けたパーソナライズされたメッセージを配信可能です。一般的な例:
      • オファーウォール未利用の初回ユーザーへの紹介
      • X日間オファーを完了していないユーザーへの呼びかけ
      • X日間オファーウォールにログインしていないユーザーへのリマインド
      • オファーウォールイベント進行中(例:3/7)のユーザーへの再エンゲージメント
    • Tapjoyのターゲティングツールについてはこちら: ユーザータグ広告行動履歴ターゲティングユーザーコホート

A/Bテスト

  • メッセージの最適化には、A/Bテストによる効果検証が効果的です。
    • コンテンツカード作成時に「A/Bテスト」を有効にする
    • 「バリアントを追加」を選択。それぞれのバリエーションに異なる画像やメッセージを設定
    • コンテンツカード作成完了後、「Save」を選択
    • TapjoyのA/Bテストツールについて詳しくはこちら

オファーウォールへのアプリ内メッセージディープリンク

Message to Earnの代わりに、独自のアプリ内メッセージ機能を使ってオファーウォールにユーザーを誘導することも可能です。以下に設定手順を示します。

  1. ダッシュボードで内部メッセージを表すコンテキストプレイスメントを作成(例:「Custom_Popup」)。作成方法はこちら
  2. メッセージからユーザーが遷移するオファーウォールカードを作成。この際、Message to Earnを有効にしないよう注意(M2Eと内部メッセージが重複してユーザーに提示されないように)。手順はこちら
  3. プレイスメントを呼び出すコードを実装。
    • プレイスメントのリクエストには TJPlacement クラスを使用。ダッシュボードで設定したプレイスメント名とコード内の文字列は完全に一致させてください。

Android

TJPlacementListener placementListener = this;
TJPlacement p = Tapjoy.getPlacement("[PLACEMENT_NAME]", placementListener);

// Listeners

public void onRequestSuccess(TJPlacement placement);
public void onRequestFailure(TJPlacement placement, TJError error);
public void onContentReady(TJPlacement placement);
public void onContentShow(TJPlacement placement);
public void onContentDismiss(TJPlacement placement);

iOS (Objective-c)

TJPlacement *p = [TJPlacement placementWithName:@"Main Menu" delegate:self];

// Callbacks

- (void)requestDidSucceed:(TJPlacement*)placement{}
- (void)requestDidFail:(TJPlacement*)placement error:(NSError*)error{}
- (void)contentIsReady:(TJPlacement*)placement{}
- (void)contentDidAppear:(TJPlacement*)placement{} 
- (void)contentDidDisappear:(TJPlacement*)placement{}

iOS (Swift)

let p = TJPlacement(name: "Main Menu", delegate: self)

// Callbacks

func requestDidSucceed(_ placement: TJPlacement!) {}
func requestDidFail(_ placement: TJPlacement!, error: Error!) {}
func contentIsReady(_ placement: TJPlacement!) {}
func contentDidAppear(_ placement: TJPlacement!) {}
func contentDidDisappear(_ placement: TJPlacement!) {}

Unity

TJPlacement p = TJPlacement.CreatePlacement("APP_LAUNCH");

TJPlacement.OnRequestSuccess += HandlePlacementRequestSuccess;
TJPlacement.OnRequestFailure += HandlePlacementRequestFailure;
TJPlacement.OnContentReady += HandlePlacementContentReady;
TJPlacement.OnContentShow += HandlePlacementContentShow;
TJPlacement.OnContentDismiss += HandlePlacementContentDismiss;

React Native

let placement = new TJPlacement("Placement Name");

placement.on(TJPlacement.REQUEST_DID_SUCCEED, (placement: TJPlacement) => { });
placement.on(TJPlacement.REQUEST_DID_FAIL, (placement: TJPlacement) => { });
placement.on(TJPlacement.CONTENT_IS_READY, (placement: TJPlacement) => { });
placement.on(TJPlacement.CONTENT_DID_APPEAR, (placement: TJPlacement) => { });
placement.on(TJPlacement.CONTENT_DID_DISAPPEAR, (placement: TJPlacement) => { });
  1. リスナーメソッドを設定し、プレイスメント インスタンスを取得できれば、プレイスメントのコンテンツをリクエストできます。

Android

if(Tapjoy.isConnected()) {
p.requestContent();
} else {
Log.d("MyApp", "Tapjoy SDK must finish connecting before requesting content.")
}

iOS (Objective-c)

[p requestContent];

iOS (Swift)

p?.requestContent()

Unity


if (Tapjoy.IsConnected()) {
    p.requestContent();
} else {
    Debug.LogWarning("Tapjoy SDK must be connected before you can request content.");
}

React Native

placement.requestContent();
  1. コンテンツリクエストの前に、Tapjoy connect が成功していることを確認して下さい。onConnectSuccess コールバックが返る前にリクエストしないようにしてください。
  2. コンテンツの準備ができたら、表示を行います。

Android

public void onContentReady(TJPlacement tjPlacement) {
	if(tjPlacement.isContentReady()) {
	    p.showContent();
	}
}

iOS (Objective-c)

if (p.isContentReady) {
   [p showContentWithViewController: nil];
}
else {
  //handle situation where there is no content to show, or it has not yet downloaded.
}

iOS (Swift)

if (p.isContentReady) {
    p.showContent(with: nil)
} else {
  //handle situation where there is no content to show, or it has not yet downloaded.
}

Unity

if (p.IsContentReady()) {
    p.ShowContent();
} else {
    // Code to handle situation where content is not ready goes here
}

React Native

if (placement.isContentReady()) {
   placement.showContent();
}