メッセージアドレス指定スキーム
メッセージターゲットURIは、IMessageオブジェクトの宛先として機能するターゲットエンドポイントを特定するために使用される識別子です。ターゲットリソースは、受信者がフィルターを登録して更新をリッスンできる、ライフサイクルエントリポイントコンポーネントまたは抽象トピックを表します。すべてのメッセージURIは、RFC 3986(英語のみ)のサブセットに従います。
構文
メッセージターゲットURIは、標準のURI構文である<スキーム> "://" <オーソリティ> ["/" <パス>] ["?" <クエリ>] ["#" <フラグメント>]という形式に準拠する必要があります。これは、スキーム、オーソリティ、クエリパラメーター、フラグメントの4つの部分に分けることができます。URIがこの構文に従っていない場合、または以下で説明する各部分に定義されたルールに従っていない場合、makeMessageBuilder APIはInvalidArgumentエラーをスローします。
アドレス指定に使用されるのは、URIのスキーム、オーソリティ、パスの部分だけです。
スキーム
スキームは、URIのスキーム区切り文字(://)の前にある部分です。スキーム文字列は、メッセージを正しい受信者にルーティングするために従う必要のあるプロトコルを指定します。
スキーム文字列は、小文字の英数字から成る単一の単語でなければならず、空白を含めることはできません。すべてのURIは、空でないスキーム文字列で始まる必要があります。
オーソリティ
オーソリティは、ホスト文字列と、:で区切られたポート文字列で構成されます。ただし、メッセージURIではポートの指定は認識されません。
ホスト
ホストは、URIのスキーム区切り文字(://)の後ろから、/または? の前までの部分です。/も?も含まれていない場合、URIは末尾で終わります。
ホスト文字列は、ワイルドカードとしてリテラル文字*を使用するか、小文字の英数字で指定する必要があります。空白を含めることはできませんが、複数の単語をピリオド(.)で区切って命名規則の階層を示すことができます。たとえば、com.amazon.otaのようになります。すべてのURIには、スキーム文字列と区切り文字の後に空でないホスト文字列が必要です。
パス
パスは、URIのホスト文字列に続く、/の後ろから?の前までのオプションの部分です。/も?も含まれていない場合、URIは末尾で終わります。
パスは、メッセージの受信者がメッセージを受け取った後に実行する関数を識別するために使用できます。
パス文字列は、英数字(小文字または大文字)のみから成る必要があり、空白を含めることはできません。ただし、入れ子になった機能を示すために、単語を/でつなげることができます。パス文字列は、ホスト文字列の直後に追加するか、省略する必要があります。
クエリパラメーター
クエリパラメーターは、パス文字列(ない場合はホスト文字列)の後、?に続くオプションの文字列です。クエリパラメーターは、メッセージをターゲットにルーティングするために使用されるものではありません。
クエリパラメーターは、文字列データをURIの一部として渡すために使用されます。
ただし、クエリパラメーターよりもメッセージの添付ファイルを使用する方法が推奨されます。
クエリパラメーターは、?key1=value1&key2=value2...という形式にする必要があります。キーと値は、英数字(小文字または大文字)のみから成る必要があり、空白を含めることはできません。
フラグメント
フラグメントは、#の後に続くオプションの文字列で、クエリパラメーターの後に指定できます。これは通常、実行するタスクに関する追加のメタデータを提供するために使用されます。フラグメントは、英数字(小文字または大文字)のみから成る必要があり、空白を含めることはできません。このドキュメントの後半で説明するように、フラグメントは、限定的な状況でメッセージをターゲットにルーティングするために使用されます。
Vega MessagingのURIスキーム
起動とディープリンクのスキーム
共通の特性:
- フィルターの指定: マニフェストのみ。
- メッセージの優先度の構成: 不可。即座に処理されます。
- インラインメッセージレスポンスのサポート: あり
PKGスキーム(pkg)
pkgスキームを使用すると、ライフサイクルコンポーネントを名前で直接指定できます。
形式:pkg://<コンポーネントID>
例:pkg://com.amazon.lcm.test.main
フィルターマッチング: ホスト
注:
- ホスト文字列は、アプリマニフェストに指定されたコンポーネントIDです。
- これは、サードパーティのアプリ開発者が新しいメッセージを定義するために使用できる唯一のスキームです。
- 起動するライフサイクルコンポーネントを識別します。
OSスキーム(os)
osスキームは、ホーム画面の起動や設定アプリの起動のようなオペレーティングシステムのコア機能に、プラットフォームに依存せずにアクセスする手段を提供します。
形式:os://<ユースケース>[<サブページ>]
例:
os://settings- 設定のメインページ。os://home- バックスタックにデフォルトアプリとして固定されるコンポーネントを識別します。os://browser- デフォルトのブラウザを起動するために使用します。
フィルターマッチング: ホスト+パス
アクセス要件: アプリがosスキームURIにアクセスするには、マニフェストに次のセクションを追加する必要があります。
[[wants.module]]
id = "/com.amazon.kepler.os_messages@IOsMessageModule"
Amznsスキーム(amzns)
amznsスキームはパッケージマネージャーによって使用され、クエリパラメーターで指定された識別子に基づいてアプリを起動します。
形式:amzns://apps[/path]?<識別子のタイプ>=<識別子の値>
例:
amzns://apps?si=ABCD1234amzns://apps?p=com.foo.baramzns://apps?asin=ABCD1234
フィルターマッチング: ホスト
アクセス要件: アプリがamznsスキームURIにアクセスするには、マニフェストに次のセクションを追加する必要があります。
[[wants.module]]
id = "/com.amazon.kepler.os_messages@IOsMessageModule"
注:
- ホスト文字列は「apps」でなければなりません。
- 識別子のタイプは、
si、p、asinのいずれかです。siはストアの識別子(Amazonまたは別のアプリストア)、pはアプリのマニフェストに記述されているパッケージID、asinはAmazonアプリストアの識別子を表します。 - デバイスに該当するアプリがない場合は、デフォルトのアプリストアがあれば起動します。
- ほかのアプリがこのURIのメッセージターゲットをインストールすることはできません。
HTTP、HTTPSスキーム(http、https)
httpスキームやhttpsスキームを使用すると、通常はブラウザで開かれる、ウェブサイトをターゲットとするウェブURIをアプリで開くことができます。
形式:{http/https}://<ホスト>[<パス>][?<クエリパラメーター>]
例:https://www.amazon.com/shop
フィルターマッチング: ホスト+パス
注:
- 標準のウェブURIを使用してアプリ内のコンテンツにディープリンクすると、アプリがインストールされていないデバイスでも、アプリのウェブサイトに適切にフォールバックできます。
- httpsの方が安全性が高く、プライバシーにかかわるユーザー情報が誤って漏洩するのを防ぐことができるため、httpよりも推奨されます。
カスタムスキーム
カスタムスキームはアプリによって定義され、別のアプリやウェブサイトからアプリを直接起動できるようにするものです。
形式:<カスタムスキーム>://[<ホスト>[<パス>]][?<クエリパラメーター>]
例:livetv://watchnow
フィルターマッチング: ホスト+パス
注:
- スキームは、構成ファイルに指定された正しいパッケージIDを使用して定義する必要があります。
- ホストとパスに制限はありません。
- httpと比較して、カスタムスキームはアプリのインストール後にのみインターセプトでき、アプリがインストールされていないシナリオでのフォールバックは行われません。
- カスタムスキームよりもhttpsが推奨されます。
イベントスキーム
共通の特性:
- フィルターマッチング: ホスト+パス
- フィルターの指定: ランタイムのみ
ブロードキャストスキーム(broadcast)
broadcastスキームのURIは、パブリッシャーから、登録されているすべてのサブスクライバーにメッセージを配信できるようにするイベントトピック識別子です。
形式:broadcast://*/<逆引きDNS名前空間>/<トピック>/<サブトピック>
例:broadcast://*/com.amazon.idle/state/idle/screensaver
注:
- メッセージの優先度の構成: 不可。タスクマネージャーの起動以外は即時配信されます。
- インラインメッセージレスポンスのサポート: なし。
ユニキャストスキーム(unicast)
unicastスキームのURIは、パブリッシャーから、サブスクライバーのパッケージIDに基づいて、登録されているサブスクライバーの特定のサブセットにメッセージを配信できるようにするイベントトピック識別子です。
形式:unicast://*/<逆引きDNS名前空間>.<トピック>/<サブトピック>
例:unicast://*/com.amazon.push-service/force-ota
注:
- メッセージの優先度の構成: 可能。ImmediateまたはDeferredを使用できます。
- インラインメッセージレスポンスのサポート: あり。
AndroidインテントスタイルのURIのサポート
Kepler Messagingでは、主にURIベースのシステムが使用されます。ただし、既存のFire OSアプリとの互換性を保つために、インテントスタイルのURIの限定的なサポートが提供されています。この互換性機能の使用は控えめにする必要があります。
クロスプラットフォームの互換性を確保するには、HTTPS URIを使用する方法が推奨されます。インテントスタイルのURIは将来サポートされなくなる可能性があるため、アプリ開発者は、標準のURIスキームを使用することをお勧めします。
カスタムスキーム、amzns、amzn、http、httpsでは、URIの末尾にインテントフラグメントを含めることがサポートされます。さらに、Kepler Messagingでは、以下に挙げるインテントオブジェクトのURI表現を使用できます。
インテントベースのすべてのスキームに共通の特性:
- フィルターの指定: マニフェストのみ。
- メッセージの優先度の構成: 不可。即座に処理されます。
- インラインメッセージレスポンスのサポート: あり
- フィルターマッチング: インテントルール
フラグメントのみ
形式:#Intent;<キー1>=<値1>;<キー2>=<値2>;....;end;
例:#Intent;action=OPEN_NETFLIX_ACTION_2;end;
注:
- 1つのURIに含めることができるインテントフラグメントは1つだけです。
<キー1>、<キー2>などは、インテントの一部としてサポートされている既知のキーのリストです。- キーによっては、サポートできる値のデータ型に制限があります。
- このスキームは、マニフェストで
fos://プレフィックス付きで定義する必要があります。ただし、実行時にはプレフィックスなしのURIでメッセージを送信できます。
Androidアプリスキーム(android-app)
形式:android-app://<パッケージID>[<スキーム>[<ホスト>[<パス>]]][#<インテントフラグメント>]
例:android-app://com.netflix#Intent;action=OPEN_NETFLIX_ACTION;end;
注:
- ホスト文字列は、アプリマニフェストに指定されたパッケージIDである必要があります。
- このスキームは、マニフェストでは直接サポートされません。マニフェストで定義するには、
fos://プレフィックスを付けたフラグメントのみの表現に変換してください。ただし、実行時には、これらのURIのまま変更せずにメッセージを送信できます。
インテントスキーム(intent)
形式:intent:[//][<ホスト>][<パス>][#<インテントフラグメント>]
例:intent:#Intent;action=OPEN_NETFLIX_ACTION;end;
注:
- URIに
scheme=が含まれている場合は、intent:の後に//を指定する必要があります。 - フラグメントにホストやパスを含めることはできません。
- このスキームは、マニフェストでは直接サポートされません。マニフェストで定義するには、
fos://プレフィックスを付けたフラグメントのみの表現に変換してください。ただし、実行時には、これらのURIのまま変更せずにメッセージを送信できます。
サポートされているフラグメントキー
以下の表は、サポートされているインテントキーとその制限の一覧です。
| キー | 値の型 | コンポーネントの解決 | URIで使用可能 | 1つのURIへの複数項目の追加 |
|---|---|---|---|---|
| action | string | ○ | ○ | × |
| category | string | ○ | ○ | × |
| package | string | ○ | ○ | 該当なし |
| component | string | ○ | ○ | 該当なし |
| scheme | string | ○ | ○ | 該当なし |
| S.<> | string | × | ○ | ○ キーfooを別の型で繰り返すことはできません。 同じ型のキーfooの繰り返しは上書きされます。 |
| B.<> | boolean | × | ○ | ○ キーfooを別の型で繰り返すことはできません。 同じ型のキーfooの繰り返しは上書きされます。 |
| b.<> | byte | × | ○ | ○ キーfooを別の型で繰り返すことはできません。 同じ型のキーfooの繰り返しは上書きされます。 |
| c.<> | char | × | ○ | ○ キーfooを別の型で繰り返すことはできません。 同じ型のキーfooの繰り返しは上書きされます。 |
| d.<> | double | × | ○ | ○ キーfooを別の型で繰り返すことはできません。 同じ型のキーfooの繰り返しは上書きされます。 |
| f.<> | float | × | ○ | ○ キーfooを別の型で繰り返すことはできません。 同じ型のキーfooの繰り返しは上書きされます。 |
| i.<> | int | × | ○ | ○ キーfooを別の型で繰り返すことはできません。 同じ型のキーfooの繰り返しは上書きされます。 |
| l.<> | long | × | ○ | ○ キーfooを別の型で繰り返すことはできません。 同じ型のキーfooの繰り返しは上書きされます。 |
| s.<> | short | × | ○ | ○ キーfooを別の型で繰り返すことはできません。 同じ型のキーfooの繰り返しは上書きされます。 |
関連トピック
- メッセージングユーザーガイド
- Linking(英語のみ)
Last updated: 2025年9月30日

