アクション

Interactions パネルでは、タップ、要素の表示、フォーム送信などのイベントに対して、フロー要素がどのように応答するかを定義できます。各イベントに対して、画面間の移動、要素の表示・非表示、URL を開く、変数の設定など、1 つ以上のアクションを割り当てます。条件を使えば、ユーザーデータに基づいてフローをカスタマイズできます。

各インタラクションは 3 つのチェーンで構成されています。

  1. 要素(Element): インタラクションを開始する画面コンポーネント — ボタン、クイズの回答、入力フィールドなど。
  2. トリガー(Trigger): ロジックを起動するイベント — タップ、要素の表示、フォームの送信など。
  3. アクション(Action): トリガーに応じてフローが実行するタスク。1つのトリガーで複数のアクションを順番に実行できます。

インタラクションの設定

インタラクションを設定するには、次の手順に従います。

  1. 画面上または Layers パネルで要素を選択します。
  2. 右側の Interactions パネルに切り替え、Add trigger をクリックします。
Add trigger button
  1. Button triggers セクションで、トリガーのタイプを選択します。
Trigger type selection
  1. Add action をクリックし、アクション名をクリックして、Edit action ウィンドウのドロップダウンからアクションのタイプを選択します。
Add action button
  1. 選択したアクションタイプに基づいて、アクションのプロパティを設定します。
  2. 必要に応じて、Add action をクリックして同じトリガーにアクションを追加します。

トリガーの種類

トリガーは、ユーザーの操作、要素の状態変化、または画面の読み込みに反応して発火します。On screen appear はすべての要素に対して使用できる汎用トリガーです。それ以外はすべて特定の要素に紐づいたトリガーです。

トリガー発火タイミング対応要素
On screen appear画面が読み込まれたときすべての要素
On tapユーザーが要素をタップしたときボタンクイズオプショントグルカウントダウン動画
On changedユーザーが入力値を変更したとき(テキスト入力、日付・時刻の選択)すべての入力要素
On submitユーザーがキーボードのEnterまたは完了を押してテキスト入力を送信したときテキスト系入力要素
On timer endカウントダウン要素がゼロに達したときカウントダウン
On playback finished動画が最後まで再生されたとき動画
インタラクションが組み込まれていない要素(ローダーなど)では、On screen appear が唯一利用可能なトリガーです。

アクションタイプ

Important

ユーザーを別の画面に移動させるナビゲーションアクションは、必ずリストの最後に配置してください。その後に配置したアクション(Set variable など)は、アプリがすでに画面を切り替えているため実行されない場合があります。

これはユーザーを画面間で移動させるための主要なアクションです。指定した遷移先の画面にユーザーを誘導します。

このアクションでは、遷移先の画面を設定するだけで十分です。動的なナビゲーションを有効にしたい場合は、ナビゲーションと分岐または条件付きアクションセクションをご覧ください。

Navigate to screen

フロー内の画面順序に従って、ユーザーを次の画面に進めます。エディターでの画面の並び順がそのまま表示順になる、リニアなフローに適しています。

シーケンス上の前の画面ではなく、ナビゲーション履歴上の前の画面にユーザーを戻します。

URLを開く

Tip

テキストにリンクを埋め込む場合は、インラインリンクを使用してください。

指定したウェブアドレスを開きます。アプリのネイティブ画面外のウェブページ、記事、SNSプロフィールなどにユーザーを誘導する際に使用します。 このアクションでは、以下の2つの設定を行えます:

  • URL address:URLアドレスを設定します。また、動的にすることも可能です。たとえば、クイズの回答に基づいて異なるページへ誘導したり、ユーザーが入力したデータを活用したりできます。設定するには、Variable icon をクリックして使用する変数を選択してください。
  • Open in external browser:外部リンクを開く場所を指定します。デフォルトではアプリ内ブラウザで開き、ユーザーがアプリ内に留まるようになっています。外部ブラウザで開きたい場合は、Open in external browser チェックボックスを選択してください。
Open URL

フローを閉じる

現在のフローを閉じます。

要素の表示/非表示

画面上の特定の要素を表示または非表示にします。

このアクションは、Design パネルの Visibility で設定した初期状態を上書きします。VisibilityHide に設定されている場合、Show アクションを使用すると要素が表示されます。

Important

ターゲット要素が指定されていない Show または Hide アクションは、プレビューおよび公開をブロックします。ターゲットを選択するか、アクションを削除してください。

アラートを表示する

ネイティブのシステムポップアップウィンドウを表示します。ユーザーは Ok をタップして次に進む必要があります。

アラートには、TitleMessage を設定する必要があります。どちらも変数を使用してコンテンツを動的にできます。そのためには、Variable icon をクリックして使用したい変数を選択してください。

Important

設定が空または不完全な Show alert アクションは、プレビューや公開をブロックします。両方のフィールドを入力するか、アクションを削除してください。

Show alert

変数を設定する

フロー内の変数の値を更新します。このアクションを追加する前に、左側の Variables パネルで変数を作成してください(変数を参照)。

Add variable をクリックして、必要な数の変数とその値を設定します。

Important

割り当てのない Set variable アクションはプレビューと公開をブロックします。少なくとも1つの割り当てを設定するか、このアクションを削除してください。

Set variable

購入

オンボーディング内のボタンやインタラクションから直接購入フローを起動します。フローを離れることなく、ユーザーがサブスクリプションに登録したりプロダクトを購入したりできるようにします。 このアクションには、2つの動作を設定できます:

  • In-app store:ネイティブ購入を開始します。Product に特定のプロダクトを設定するか、画面上でユーザーが現在選択しているプロダクトを使用する場合は products.selectedProduct を設定します。
  • Web payment:ネイティブ購入をトリガーする代わりに、ユーザーをウェブペイウォールに送ります。ウェブベースのサブスクリプションオファーなど、アプリ外でトランザクションを処理したい場合に使用します。
Important

Purchase アクションに対象の Product または Web Paywall URL が設定されていない場合、プレビューと公開がブロックされます。対象を割り当てるか、アクションを削除してください。

「アクションを編集」ウィンドウでの Purchase アクションの設定

購入を復元する

デバイス上で購入の復元フローを起動します。ユーザーが別のデバイスで以前に購入したサブスクリプションや、アプリを再インストールした後にアクセス権を回復したい場合に使用します。

このアクションに設定項目はありません。復元はAdaptyがネイティブのストアフローを通じて処理します。

Restore purchases アクションは、Links ボタンプリセットの Restore リンクにもあらかじめ設定されています(購入の設定を参照)。

プロダクトを選択する

画面上のプロダクトグループで選択されているプロダクトを設定します。プロダクトカード以外の要素で選択を変更したい場合(例:年間プランと週間プランを切り替えるトグル)に使用します。

アクションが実行されると、選択が対象プロダクトに移動します。カードのハイライト、products.selectedProduct にバインドされたテキスト、および 購入 アクションのターゲットはすべて新しい選択に従います。

このアクションでは、Product にターゲットとなるプロダクト要素を設定します。ピッカーには、同じ画面上のプロダクト選択可能グループに属するプロダクト要素のみが表示されます。画面に複数のプロダクトグループがある場合、ピッカーはそれらすべてから有効なプロダクトを一覧表示します。他の画面のプロダクト、グループ外のプロダクト要素、およびその他の要素タイプは表示されません。各プロダクトは要素名ではなく、Adapty のプロダクトタイトルで表示されます。

Edit action ウィンドウの Select product アクションと、プロダクトカードを一覧表示する Product picker

Select product条件付きアクションの内部に追加することもできます。たとえば、トグルがオンのときに一つのプロダクトを選択し、オフのときに別のプロダクトを選択するといった使い方が可能です。

Select product は次の2か所では利用できません。

  • 再利用可能なコンポーネント内: プロダクトの選択は画面ごとに機能するため、コンポーネント内のアクションではプロダクトを解決できません。保存済みのアクションがコンポーネント内に配置されている場合、Product フィールドにはピッカーの代わりに警告が表示されます。
  • プロダクトカード自身の「タップ時」トリガー: カードをタップすると自動的に選択されるため、同じインタラクション上で明示的に選択を行うと競合が生じます。そのアクションはそのカードの他のトリガーや、他のすべての要素では引き続き利用できます。
Important

Select product アクションは、対象のプロダクトが存在しない場合、別のスクリーン上にある場合、またはプロダクトグループに属していない場合、プレビューと公開がブロックされます。有効なプロダクトを割り当てるか、アクションを削除してください。

カスタムアクション

カスタムアクションは、自分のアプリコードが処理する Action ID という名前のアクションを発火させます。組み込みのアクションタイプでは対応できない場合に使用します。

Adapty がトリガーを提供し、アプリが実際の動作を実装します:

  1. ビルダーで、要素のインタラクションに Action ID を割り当てます。
  2. ユーザーがそのインタラクションを起こすと、フローがそのIDをアプリに渡します。
  3. アプリはIDを照合し、対応するコードを実行します。

カスタムアクションの設定

  1. Edit action ウィンドウで、Action ID(アプリが認識する文字列、例: show_discount)を設定します。
  2. アプリのコードで、この Action ID に対応するハンドラーを実装します。実装の詳細とコード例については、ペイウォールアクションの処理を参照してください。
Important

Action ID が設定されていない Custom アクションがあると、プレビューや公開がブロックされます。Action ID を設定するか、アクションを削除してください。

Edit action ウィンドウのアクション ID フィールドを含むカスタムアクションの設定

カスタムアクションでできること

カスタムアクション自体は何もしません。ビルダーで静的なアクション ID を設定し、そのIDを受け取ったときの処理はアプリのコードが担います。以下のユースケースはすべて同じパターンです。フローでIDを割り当て、コードで処理する。

  • アプリ内イベントのトリガー: viewed_special_offer などのIDを発火させ、アプリがそれを受け取ったときにアナリティクスへイベントを記録します。
  • システム権限のリクエスト: request_location などのIDを発火させ、アプリからOSの権限プロンプトを呼び出します。プロンプトで付与できない権限の場合は、スマートフォンのシステム設定を開いてください。プロンプトを表示するのはAdaptyではなく、あなたのアプリです。
  • ネイティブ認証の開始: login_google などのIDを発火させ、独自のログイン画面を表示します。フローはユーザーをサインインさせることができません。
  • ビジネスロジックの適用: apply_discount などのIDを発火させ、コンテンツをアンロックしたり、アプリの状態を変更したりします。
  • クイズの回答をアプリに渡す: 各選択肢に異なるアクションIDを割り当て(例: goal_weight_lossgoal_muscle)、コード内でそのIDを読み取ります。このIDを使ってカスタムユーザー属性を設定し、後からセグメント化できます。アクションが持つのは固定のIDのみなので、選択内容を伝える唯一の方法がこれです。フローは選択された値を送信することができません。
Important

カスタムアクションは、ユーザーがオプションを選択した瞬間に発火します。ユーザーが回答を変更した場合、フローは新しいアクション ID も発火します。アプリはその両方を順番に受け取ります(例:goal_weight_loss、次に goal_muscle)。最後のシグナルが優先されるよう、ハンドラーをべき等にしてください。

カスタムアクションでできないこと

カスタムアクションは静的です。アクション ID はフローをビルドする際に固定されるため、変数ユーザー入力を読み取ることはできません。アクションが発火したとき、アプリが受け取るのはその ID のみであり、ユーザーが入力したメールアドレスや電話番号などの情報は一切渡されません。入力フィールドは、分岐やパーソナライゼーションのための変数としてフロー内に留まります。これらの値をアプリで利用するには、独自の UI や API を通じて収集してください。 カスタムアクションも一方向です。アプリがフローに結果を返すことはできず、フローはあなたのコードの完了を待ちません。カスタムアクションの後に Navigate next アクションが続く場合、コードが失敗しても(たとえばユーザーがログイン画面をサインインせずに閉じた場合でも)、ユーザーは次の画面に進みます。静的な Action ID と組み合わせると、アプリ側でのユーザー入力の検証(たとえばユーザーが入力した SMS コードを確認して結果に応じて分岐する)は行えません。フローの続きがコードの実行結果に依存する場合は、フローを2つのプレースメントに分割してください

結果に基づいてフローを継続する

カスタムアクションが成功した場合にのみ表示されるべき画面がある場合(例:ログイン後に続く画面)、フローを2つのプレースメントに分割し、2番目の部分をいつ表示するかはアプリ側で判断します:

  1. 最初のプレースメントで、カスタムアクション(例:login)で終わるフローを作成します。
  2. アプリ側でアクションIDを処理します:ログイン画面を表示し、ユーザーがサインインしたかどうかを確認します。
  3. ユーザーがサインインした場合、2番目のプレースメントのフローを続きの画面とともに表示します。 このようにすることで、フローが結果に関係なく画面を進めてしまうのではなく、実際の処理結果に基づいてアプリ側で画面遷移を制御できます。

条件付きアクション

条件付きアクションを使うと、ユーザーデータに基づいてフローを異なるパスに分岐させることができます。

よくある使用例を以下に挙げます。

  • スクリーン上にクイズがあり、回答に応じて異なるスクリーンへ誘導したい場合。この場合は、ボタンに条件付きアクションを追加します。
  • ユーザーグループごとに異なるプロダクトやオファーを提示したい場合。それぞれ別のスクリーンに配置し、ナビゲーションボタンに条件を設定します。
  • 前回のアプリセッションでチュートリアルを完了済みのユーザーに対して、特定のステップをスキップしたい場合。 条件アクションは if / else-if / else チェーンのように機能します。アプリはルールを上から下へ順番に読み取り、最初に一致した条件で処理を停止します。
  1. IF: フローがメインの条件をチェックします。
    • True の場合?フローは THEN アクションをすぐに実行し、停止します。
    • False の場合?フローは次のセクションにスキップします。
  2. ELSE IF: ここに追加のチェックを設定できます(例:「プレミアムでない場合、ユーザーはトライアル中か?」)。
  3. ELSE(フォールバック): 上記のいずれのルールにも一致しなかった場合、フローはこの最後のセクションのアクションを実行します。
Important
  • ルールが追加されているがアクションが割り当てられていない場合、条件に一致しても何も実行されません。
  • 不完全なルール(演算子や値がない)はプレビューと公開をブロックします

各ルールで、評価する変数とアクションを選択してください。1つのルールに複数のアクションを設定できます。

Important

フローは最初に一致した1つのルールのみを実行します。IFELSE IF の両方を同時に実行したい場合は、両方のアクションを IF に追加してください。

要素を選択可能にしたり、条件で使用するためにグループ化する方法については、選択可能な要素とグループを参照してください。

条件付きアクション

トラブルシューティング

必須フィールドが未入力の場合、プレビューと公開がブロックされます。詳細は よくある問題 をご覧ください。