アプリ管理
マイアプリ(ダッシュボード)
マイアプリ(/ または /apps)は、ログイン後に表示されるページです。チームが管理するすべてのアプリの管理拠点となります。

アプリ一覧テーブル。 各行には、連番、アプリアイコン(未アップロードの場合は文字アバター)、アプリ名、パッケージ ID/バンドル ID、割り当てられたブランド、ストア(iOS/Android/Amazon のプラットフォームアイコン)、現在の SDK バージョン(並べ替え可能)、デフォルト設定のステータスドット(アプリのデフォルト設定が生成済みの場合は緑の「Added」、未生成の場合はグレーの「Not Added」)、作成日(並べ替え可能)、操作列が表示されます。
検索とフィルタリング。 検索ボックスに入力すると、名前/パッケージ名で絞り込まれます。フィルターバーにはブランド、ストア、SDK バージョンの個別のドロップダウンフィルターがあり、検索と組み合わせて使用できます。ページネーションにはテーブル組み込みのページャーではなく、独自の「全 Z 件中 X~Y 件を表示」フッターが使われます。1 ページあたりの表示件数セレクターと、⟨ ‹ › ⟩ ナビゲーションボタンも用意されています。
操作メニュー。 各行の三点メニューには、権限に応じて「Edit」(編集)、「Duplicate」(複製)、「Delete」(削除)が表示されます(後述のプラン上限と共有表示時の権限を参照)。
プラン上限とロックされたアプリ。 サブスクリプションプランによって、保有できるアプリ数の上限(maxApps)が決まります。プランのダウングレード後など、現在のアプリ数が上限を超えている場合は、ページ上部に「アプリ数の上限を超えています — X/Y アプリを使用中」というオレンジ色の警告バナーが表示されます。バナーには小さなプログレスバーと、サブスクリプションページに移動する Upgrade Plan(プランをアップグレード)ボタンも表示されます。

上限を超えた場合、ポータルがロックするアプリを任意に選ぶわけではありません。作成日が古いアプリからプランの上限数まで利用可能な状態を維持し、それ以降に作成されたアプリをすべてロックします。ロックされたアプリの操作メニューは制限付きの表示になります。三点ボタンをクリックすると、「LOCKED」という見出しと「このアプリはプランの上限を超えています。削除して空きを確保してください」という説明のみが表示されます。削除権限がある場合は、赤い「Delete App」(アプリを削除)も表示されます。ロックされた行では編集と複製はできません。ロックされたアプリへのアクセスを回復するには、ほかのアプリを削除して空きを確保するか、プランをアップグレードする必要があります。
作成ボタン。 + Create App(アプリを作成)ボタンは、プランの上限まで空きがある場合(canCreateApp())にのみクリックできます。上限に達している場合は、代わりに小さな使用状況表示(「X/Y アプリを使用中」)と、サブスクリプションページへの「🔒 Upgrade Plan」リンクが表示されます。
共有/共同作業者としての表示。 アカウントを切り替えて共有先のアカウントとしてこのページを表示している場合(前述のアカウントメニューを参照)、テーブルはそのアカウントでのユーザー固有の権限も取得し(/rights/user-permissions 経由)、各行の編集/削除/複製の可否を制御します。たとえば、リソース所有者から付与された権限によっては、アプリの閲覧と編集はできても削除はできない場合があります。
新しいアプリの追加
+ Create App をクリックすると、画面中央に縦型のモーダルが表示され、アプリフォームが「作成」モードで開きます。

入力項目:
- Icon(アイコン) — 任意。上部の大きな正方形のアップロード領域には、ファイルを選択するまで「Upload Image」と表示されます。対応形式は JPEG、PNG、GIF です。
- Store(ストア) — 必須。Apple App Store、Google Play、Amazon App Store からラジオボタンで選択します。選択肢はバックエンドから動的に読み込まれ、取得に失敗した場合はこの 3 つがフォールバックとして使用されます。
- Name(名前) — 必須。4~70 文字。
- Package / Bundle ID(パッケージ ID/バンドル ID) — 必須。
com.で始まる必要があります(パターンcom.*で検証)。 - URL — 作成時は必須。ストアに Google Play を選択すると
https://play.google.com/store/apps/details?id={package}が自動入力されます。Apple App Store を選択すると、ベース URL のhttps://apps.apple.com/が自動入力されます。自動入力後も URL は手動で編集できます。また、Google Play を選択した状態でパッケージ名を変更すると、自動入力された URL も連動して更新されます。 - Brand(ブランド) — 既存のブランドを選択するドロップダウンです。
送信するとアプリ作成エンドポイントが呼び出され、メディエーションネットワークと広告ユニットが未設定の状態でアプリが作成されます。これらは次にアプリ詳細画面で設定します。Cancel(キャンセル)をクリックすると、保存せずにモーダルが閉じます。
アプリの編集と複製(クイックモーダル)
行の操作メニューから Edit を選択すると、同じフォームコンポーネントが「編集」モードで開きます。ただし、作成時の縦型レイアウトではなく、コンパクトな横一列のレイアウトになります。アイコン(差し替え用の小さな鉛筆ボタンが重ねて表示)、名前、読み取り専用のパッケージ欄、読み取り専用の URL 欄、ブランドのドロップダウン、保存ボタンが並びます。アプリを作成すると、パッケージと URL は以後ずっと読み取り専用になります。作成後にアプリのパッケージ ID やストア URL を変更することはできず、変更できるのは名前、アイコン、ブランドのみです。この行は canUpdate 権限チェックによって制御されます。共有/共同作業者として利用している場合、この権限は付与されたアプリ情報の権限に基づきます。

Duplicate を選択すると、複製元のアプリ情報が入力された作成モードのフォームが別に開きます。元のアプリと重複しないように、パッケージ名の末尾には .copy が付加されます。名前、アイコン、ブランドなどを必要に応じて調整し、新しいアプリとして保存できます。メディエーション、広告ユニット、その他すべてのアプリ詳細設定はコピーされません。複製したアプリも、新規作成したアプリと同じく未設定の状態から始まります。
アプリ詳細
マイアプリ → Edit、またはアプリの行自体をクリックしてアプリを開くと、アプリ詳細画面に移動します。これはポータル内で最も多くの設定項目を持つページで、そのアプリの SDK の実際の動作を設定する場所です。

Live モードと Dev モード。 ページ上部のトグルで、ページ全体を Live(本番)設定と Dev(開発)設定の間で切り替えます。以下のすべてのセクション(メディエーション、広告ユニット、プレースホルダー、表示オプション、MMP、機能プロモーション、設定)は、モードごとに個別に設定されます。そのため、リリース済みアプリで現在使用中の設定に影響を与えずに、Dev で変更を準備してテストできます。Apply live to dev と Apply dev to live の 2 つのボタンを使うと、一方のモードの設定全体を、もう一方に一度の操作でコピーできます。テスト済みの Dev 設定を Live に反映したり、新しいテストの前に Dev を Live と同じ設定に戻したりする際に便利です。

ページヘッダーには、アプリの現在の Config Version(設定バージョン)番号、Change History(変更履歴)リンク(後述)、Get Configuration(設定を取得)ボタン(後述)も表示されます。一部の設定 UI と、後述の地域グループセレクターは、アプリから報告された SDK バージョンが所定の条件を満たした場合にのみ表示されます。ポータルでは、一部の新機能に SDK の最低バージョン要件を設け、古いアプリビルドでは実際に利用できないオプションが表示されないようにしています。
ページの残りの部分は、次の順序で展開可能なセクションに分かれています。
アプリ情報
アプリの基本情報として、名前、パッケージ ID/バンドル ID、ストア、アイコン、ブランドの割り当てを表示します。基本的にはアプリの作成/編集フォームと同じ項目ですが、ここからも手軽に確認できます。

メディエーションの選択
このアプリ/モードで使用するメディエーションネットワーク(ウォーターフォール型のネットワークや AppLovin MAX など)を選択します。この選択は、後続の設定を有効にするための前提条件です。ここでメディエーションネットワークを選択するまで、以下の「広告ユニット」「広告プレースホルダー」「広告プレースホルダーへの広告ユニットの割り当て」セクションはロックされたままになります。これらの設定には、対象となるネットワークの SDK と広告ユニット形式を確定する必要があるためです。

広告ユニットの追加
メディエーションネットワークから発行された広告ユニット ID を入力します。入力欄は、アプリ起動時広告、インタースティシャル広告、バナー広告、ネイティブ広告、リワード広告の形式別タブに分かれています。上で選択したメディエーションネットワークが実際にサポートしている形式のみがタブとして表示されます。

広告プレースホルダー
名前付きのプレースホルダーを定義します。プレースホルダーは、アプリやゲーム内で広告を表示できる論理的な広告枠です(例:「レベルクリア」「メインメニューのバナー」)。番号付きのグリッドとして表示され、追加や名前の変更ができます。通常、プレースホルダー名はアプリのソースコード内の定数と一致させる必要があります。そのため、ポータルではプレースホルダー一覧全体を Kotlin(.kt)の enum ファイルとしてインポート/エクスポートできます。これにより、手動で再入力せずに、コードベースとポータルの設定を同期できます。

広告プレースホルダーへの広告ユニットの割り当て
縦軸にプレースホルダー、横軸に広告形式(インタースティシャル/バナー/ネイティブ/リワード)を並べたマッピング用グリッドです。それぞれの組み合わせに対して、上で追加した広告ユニットの中から、そのプレースホルダーで配信するユニットを選択します。
このグリッドには、実際の広告ネットワークのユニットに加えて、Cross Promotion(クロスプロモーション)も選択肢として表示されます。あるプレースホルダーにこれを選択すると、その枠には有料のネットワーク広告が表示されなくなり、代わりに「キャンペーン」で設定した、自分のほかのアプリを宣伝するクロスプロモーション用クリエイティブが表示されます。この仕組みによって、キャンペーン機能とアプリ内の実際の広告配置が結び付けられます。

広告表示オプション
広告形式ごとに、読み込み時の UX を制御します。広告の取得中に読み込みダイアログやシマーエフェクトを表示するかどうかと、取得を中止するまでのタイムアウト時間を設定できます。インタースティシャル広告には、単純な表示タイミングに加えて、表示トリガーのロジックを設定するオプションがあります。クリック時、一定時間の経過後、両方の組み合わせ、またはアプリ内のシーン遷移に基づいて表示するように選択できます。各トリガーモードには、時間間隔やクリック回数など、それぞれ調整可能なパラメーターが用意されています。

MMP の選択
モバイル計測パートナー(MMP)を連携します。選択肢には Adjust、AppsFlyer、Firebase、Cost Center、Solar Engine があります。広告形式ごとに広告収益レポートの有効/無効を切り替えることで、広告収益イベントを、インストールやエンゲージメントのデータとともに、アトリビューション/分析基盤に送信できます。

機能プロモーション
広告ネットワークとは関係のない、アプリ内のプロモーション用バナーやカードを設定します。自分のアプリの UI 内で「新機能を告知する」「プレミアムプランを訴求する」といった用途を想定しています。この編集可能なテーブルの各項目には、タイトル、タイプ、キー、画像、そしてユーザーがタップしたときに実行されるアクション(ディープリンクやアプリ内の遷移先など)を設定します。

設定
ほかのセクションに分類されない、アプリ単位の各種設定です。デバッグ用コンソールログの有効化、広告イベントログの有効化、ローカル通知の時間差の許容範囲、アプリのプライバシーポリシーと利用規約の URL を設定します。これらの URL は、一部の広告ネットワークやアプリストアで表示が義務付けられています。

設定の取得
Get Configuration をクリックすると、現在有効なモード(Live または Dev)について、上記のすべての設定を表す暗号化された設定文字列が生成されます。アプリ詳細ヘッダーの地域セレクターで地域グループを選択している場合、生成されるリンク/文字列には、そのグループの ID がクエリパラメーターとして付加されます。これにより、実行時に取得される設定を地域グループごとに変えることができます。ポータルでは、その文字列を Firebase Remote Config のパラメーターキー AKS_AND_LIVE で公開する手順も案内します。ポータル自体がエンドユーザーのデバイスに設定を直接プッシュするわけではなく、本番アプリはこの仕組みを通じて実行時に設定を取得します。

変更履歴
アプリの設定を保存するたびに、新しい Config Version(設定バージョン)が記録されます。変更履歴は、アプリ詳細のリンクから開く専用ページです。そのアプリのすべてのバージョンが、連番、設定バージョン、変更内容の説明、更新日、更新者のテーブルとして表示されます。長い説明は内部的にパイプ区切りで保存され、画面では個別の行として表示されます。最初の 20 文字を超える部分は省略され、「Show More / Show Less」(さらに表示/表示を減らす)で切り替えられます。上部の日付範囲フィルターで、特定の期間に絞り込めます。これにより、誰がいつアプリの設定を変更したかという基本的な監査履歴を確認できます。

自分と共有
ほかのチームからアプリの共同作業に招待され、その招待を承諾すると、共有リソースが Shared with Me(自分と共有)(/SharedWithMe)に表示されます。これは、自分のチームが所有するアプリとは別に、受信した招待を表示するテーブルです。各行には、招待者と招待の現在のステータスが表示されます。

ここでは、保留中の招待を Accept(承諾)または Decline(辞退)できます。どちらの操作も、対応する判断を指定して同じ招待処理エンドポイントを呼び出します。承諾すると、その招待者がアカウント切り替えドロップダウン(前述)に表示されます。そこから相手のアカウントに切り替え、付与された権限の範囲内で作業できます。
?invitationId= クエリパラメーターを含む通知リンクからこのページにアクセスした場合は、読み込み時に招待ダイアログが自動的に開くため、自分で該当する行を探す必要はありません。
招待ダイアログ。 このモーダルの上部には、招待元アカウントのメールアドレスがピル型の表示で示され、ステータスに応じた見出しとアイコンが表示されます。保留中の招待にはギフトアイコン、承諾済みにはチェックマーク、辞退済みには X、期限切れには時計が使われます。その下には、スクロール可能な「N 件のリソースへのアクセス」一覧が表示されます。各行には、アプリアイコンのプレースホルダー、リソース名(基となる権限キーから整形された「Apps」「App Info」など)、そのリソースに対して付与される権限(Read/Create/Update/Delete:読み取り/作成/更新/削除)を示す右揃えのバッジが表示されます。招待に有効期限がある場合は、その期限を示す警告も表示されます。

フッターのボタンはステータスによって異なります。保留中の招待には 「Not Now」(後で) と 「✓ Accept Invitation」(招待を承諾) が表示されます。対応済みまたは期限切れの招待には 「Close」(閉じる) のみが表示され、説明文が添えられます。期限切れの場合は、「{招待者のメールアドレス} に新しい招待の送信を依頼してください」といった案内が表示されます。