メインコンテンツまでスキップ

postMessageToApp

postMessageToApp

アプリレベルのメッセージを送信します。KAppManagerを通じてルーティングされます。

パラメータ

  • namestring): アプリレベルで配信されるメッセージ名
  • dataany): ペイロード(null可)
  • milliSecondsnumber): 送信までの遅延時間(0 = 即座に送信)

戻り値: なし(void

説明

現在のフォームではなく**アプリレベル(KAppManager)**へメッセージを配信します。milliSecondsが0なら即座に、0より大きい場合は指定したミリ秒後に送信します。

内部の動作は次のとおりです。

$form.postMessageToApp(name, data, 0)
KAppManager().fireOnMessage(form, name, data)
messageStream (StreamController)
→ native 앱 코드에서 구독
警告

LucyStudioのスクリプト環境には受信側がありません。

messageStreamKAppManagerで公開(public)されていますが、純粋なLucyStudioスクリプトのレベルでは誰もこのストリームを購読していません。namuh2のようにDartのネイティブコードで別途購読しないと、メッセージは処理されません。

// native 앱 코드에서만 처리 가능
KAppManager().messageStream.listen((msg) {
if (msg.key == "logout") { /* 처리 */ }
});

LucyStudioのスクリプトでフォーム間のメッセージをやり取りするには、postMessageまたはpostMessageAllを使用してください。

postMessagepostMessageToAppの比較

メソッド配信先
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) — 遅延後のフォームメッセージ