postMessageToApp
postMessageToApp
アプリレベルのメッセージを送信します。KAppManagerを通じてルーティングされます。
パラメータ
name(string): アプリレベルで配信されるメッセージ名data(any): ペイロード(null可)milliSeconds(number): 送信までの遅延時間(0 = 即座に送信)
戻り値: なし(void)
説明
現在のフォームではなく**アプリレベル(KAppManager)**へメッセージを配信します。milliSecondsが0なら即座に、0より大きい場合は指定したミリ秒後に送信します。
内部の動作は次のとおりです。
$form.postMessageToApp(name, data, 0)
→ KAppManager().fireOnMessage(form, name, data)
→ messageStream (StreamController)
→ native 앱 코드에서 구독
警告
LucyStudioのスクリプト環境には受信側がありません。
messageStreamはKAppManagerで公開(public)されていますが、純粋なLucyStudioスクリプトのレベルでは誰もこのストリームを購読していません。namuh2のようにDartのネイティブコードで別途購読しないと、メッセージは処理されません。
// native 앱 코드에서만 처리 가능
KAppManager().messageStream.listen((msg) {
if (msg.key == "logout") { /* 처리 */ }
});
LucyStudioのスクリプトでフォーム間のメッセージをやり取りするには、postMessageまたはpostMessageAllを使用してください。
postMessageとpostMessageToAppの比較
| メソッド | 配信先 |
|---|---|
postMessage | フォームレベル(自分自身または子フォーム) |
postMessageToApp | アプリレベル(KAppManagerによるルーティング) |
Example
// 즉시 앱으로 메시지 전송 (로그아웃 등)
$form.postMessageToApp("logout", null, 0);
// 2초 후 전송
$form.postMessageToApp("sessionExpired", { reason: "timeout" }, 2000);
関連
$form.postMessage(name, data, target)— フォームレベルのメッセージ$form.postMessageAll(name, data)— 子フォームへブロードキャスト$form.postDelayedMessage(name, data, target, milliSeconds)— 遅延後のフォームメッセージ