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 코드에서 별도로 구독해야 메시지가 처리됩니다.
// native 앱 코드에서만 처리 가능
KAppManager().messageStream.listen((msg) {
if (msg.key == "logout") { /* 처리 */ }
});
LucyStudio 스크립트에서 폼 간 메시지를 주고받으려면 postMessage 또는 postMessageAll을 사용하세요.
postMessage vs 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)— 지연 후 폼 메시지